Hata ayıklama ram diskiyle VTS testi

Android 10 sürümünden itibaren Çalıştırmak için kullanılan Genel Sistem Görüntüsü (GSI) CTS-on-GSI/VTS uygunluk testi değiştirildi kullanıcı hata ayıklama işleminden kullanıcı derleme türüne geçirmeye yarar. Bu, VTS, VTS testi için yeterli olduğundan, VTS testiyle ilgili bir sorun Çalışmak için adb root, ancak adb root, kullanıcı tarafından geliştirilen bir cihazda kullanılamıyor.

Biradb root Bootloader'ı yükleyen kullanıcı tarafından oluşturulmuş cihaz kilidi açıldı. Bu, test sürecini basitleştirir CTS-on-GSI için aynı kullanıcı derlemesini (system.img) kullanarak VTS-on-GSI. STS kurulumu için başka bir kullanıcı hata ayıklama OEM'si (system.img) hâlâ kullanılıyor gereklidir.

Aşağıdaki tabloda, Android 10.

Test paketi Şununla test et: Topluluk RAM diskinde hata ayıkla adb kökü nedir? Android 9 -> 10 derleme varyantı değişikliği
CTS OEM'in sistemi kullanıcı H H Değiştirmedi
GSI'de CTS GSI kullanıcı H H

kullanıcıdebug -> kullanıcı GSI

yayın imzalandı

STS OEM'in sistemi kullanıcı hata ayıklama H Y Q'daki yenilikler
GD GSI kullanıcı Y Y

kullanıcıdebug -> kullanıcı GSI

yayın imzalandı

Genel Bakış

Bu ek görüntü dosyaları, derleme klasörü altında oluşturulur (${ANDROID_PRODUCT_OUT}):

  • boot-debug.img
  • vendor_boot-debug.img

boot-debug.img, cihazın boot bölümüne yanıp söndüğünde sistem sepolicy dosyasının kullanıcı hata ayıklama sürümü ve ek bir özellik dosyası, adb_debug.prop yüklendi. Bu, adb root için kullanıcı derlemesine olanak tanır system.img (GSI veya OEM’ler).

Örneğin, Genel Kernel Görüntüsü (GKI) vendor_boot bölümü olan cihazlar kullanıldığında boot-debug.img, yanıp söner. boot bölümünün onaylı bir GKI görüntüsü ile güncellenmesi gerekir. Bunun yerine vendor_boot-debug.img, vendor_boot üzerine gelmelidir. bölümlendirmek (hata ayıklama karmasını kolaylaştırmak)

Hata ayıklama RAM'i kullanmanın ön koşulları

Hata ayıklama RAM'i, uygunluk testlerini çalıştıran OEM tarafından sağlanır. Google İmzalı verilmemelidir ve yalnızca cihazın kilidi açıkken kullanılabilir.

Hata ayıklama RAM diski oluşturulmaz veya aşağıdaki türde cihazları yeni sürüme geçirmek için kullanılmaz:

  • BOARD_BUILD_SYSTEM_ROOT_IMAGE doğru
  • Çekirdek komut satırında skip_initramfs
ziyaret edin.

Android 12 GSI

Hata ayıklama RAM'ini Android 12 GSI ile kullanmak için ek talimat gerekmez.

29.09.2021 tarihinden itibaren, hata ayıklama RAM'lerini repack_bootimg aracı. Android 12 GSI SGR1.210929.001 (7777720), en son sürüme sahip güncellemeden sonra system.img içinde userdebug_plat_sepolicy.cil dosyayı yok sayıyor Hata ayıklama RAM diskinden userdebug_plat_sepolicy.cil. Bkz. Şu alan için CLs: bolca fırsat sunuyor.

Android 11 GSI

boot-debug.img veya vendor_boot-debug.img kullanıldığında sistem sepolicy, hata ayıklamadaki userdebug_plat_sepolicy.cil dosyasından yüklenir boot-debug.img veya vendor_boot-debug.img klasörünün ramdisk'i. GSI'yı başlatmak için lütfen android11-gsi dalını kullanarak boot-debug.img veya vendor_boot-debug.img öğenizi yeniden oluşturabilirsiniz.

Alternatif olarak, repack_bootimg aracı bir Güncellenen GSI politikası ile boot-debug.img veya vendor_boot-debug.img.

Hata ayıklama RAM diskini yeniden paketleme

boot-debug.img ürününü yeniden oluşturmak için sepolitika değişikliklerini uygulamak yerine iş ortakları GSI sepolicy dosyasını boot-debug.img olarak güncellemek için repack_bootimg kullanabilir (veya cihazda GKI kullanılıyorsa vendor_boot-debug.img).

İlgili adımlar aşağıda verilmiştir:

  1. otatools.zip uygulamasını şuradan indir: https://ci.android.com adresine gidin. aosp_arm64-userdebug derleme yapılarından indirmenizi öneririz aosp-main tarihinde.

  2. repack_bootimg için yürütme ortamını ayarlayın:

    unzip otatools.zip -d otatools
    export PATH="${PWD}/otatools/bin:${PATH}"
    repack_bootimg --help
    
  3. userdebug_plat_sepolicy.cil dosyasını indirin veya Kullandığınız GSI derlemesinden boot-with-debug-ramdisk-${KERNEL_VERSION}.img yardımcı oluyorum. Örneğin, RJR1.211020.001 (7840830), ardından şuradan indirin: https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/engel.

  4. boot-debug.img veya vendor_boot-debug.img adlı cihazı şu uygulamayla güncelleyin: userdebug_plat_sepolicy.cil:

    repack_bootimg --local --dst_bootimg boot-debug.img \
        --ramdisk_add userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \
        --ramdisk_add userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil
    # If using GKI
    repack_bootimg --local --dst_bootimg vendor_boot-debug.img \
        --ramdisk_add userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \
        --ramdisk_add userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil
    

    boot-with-debug-ramdisk-${KERNEL_VERSION}.img ile:

    repack_bootimg --src_bootimg boot-with-debug-ramdisk-5.4.img \
        --dst_bootimg boot-debug.img \
        --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \
        --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil
    # If using GKI
    repack_bootimg --src_bootimg boot-with-debug-ramdisk-5.4.img \
        --dst_bootimg vendor_boot-debug.img \
        --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \
        --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil
    

    --ramdisk_add işlevinin bağımsız değişkenleri cihaza göre ayarlanabilir yapılandırmanın üç yolu vardır. Ayrıntılı bilgi için sonraki bölüme açıklama.

Kullanıcı hata ayıklama iş politikası yolu

Yukarıdaki repack_bootimg, userdebug_plat_sepolicy.cil dosyasını --src_bootimg ramdisk'i --dst_bootimg ramdisk'ine çıkar. Ancak, kullandığınız yol içindeki hatalar farklı Android sürümlerinde farklı olabilir. İçinde Android 10 ve 11'de ise Şuna sahip cihazlar için first_stage_ramdisk/userdebug_plat_sepolicy.cil: androidboot.force_normal_boot=1 değerini ekleyin. Aksi halde, yol userdebug_plat_sepolicy.cil.

androidboot.force_normal_boot olup olmadığını kontrol etmek için aşağıdaki komutu çalıştırın ifadesini girin:

adb root
adb shell cat /proc/cmdline | grep force_normal_boot

Android 12'den itibaren hata ayıklama içindeki yol ramdisk, varlığından bağımsız olarak her zaman userdebug_plat_sepolicy.cil olur androidboot.force_normal_boot=1 değerini ekleyin. Aşağıdakiler tablosu, farklı Android sürümlerindeki hata ayıklama RAM'inde bulunan yolları gösterir.

Resimde hata ayıkla Android 10 Android 11 Android 12
hata ayıklama-ramdisk-${KERNEL_VERSION} ile GKI önyüklemesi Yok first_stage_ramdisk/userdebug_plat_sepolicy.cil userdebug_plat_sepolicy.cil
Cihaza özgü boot-debug.img force_normal_boot'a bağlıdır force_normal_boot'a bağlıdır userdebug_plat_sepolicy.cil
Cihaza özgü tedarikçi_boot-debug.img Yok force_normal_boot'a bağlıdır userdebug_plat_sepolicy.cil

Dosyaları bir--ramdisk_add src_path:dst_path çiftli liste. Örneğin, aşağıdaki komut kopyalanır Android 11 boot-with-debug-ramdisk-5.4.img sürümünden first_stage_ramdisk/userdebug_plat_sepolicy.cil dosyası Android 11 vendor_boot-debug.img içinde first_stage_ramdisk/userdebug_plat_sepolicy.cil.

repack_bootimg \
    --src_bootimg boot-with-debug-ramdisk-5.4.img \
    --dst_bootimg vendor_boot-debug.img \
    --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil

Çekirdek komut satırında androidboot.force_normal_boot=1 yoksa komutun, hedef yolu userdebug_plat_sepolicy.cil.

repack_bootimg \
    --src_bootimg boot-with-debug-ramdisk-5.4.img \
    --dst_bootimg vendor_boot-debug.img \
    --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil

--dst_bootimg hizmetine iletilen resim AVB zincirli bölümünde, repack_bootimg çalıştırıldıktan sonra bir AVB altbilgisinin eklenmesi gerekir. komutuna ekleyin.

Örneğin, repack_bootimg çalıştırmadan önce aşağıdaki komutu çalıştırarak vendor_boot-debug.img cihazında zincirli AVB altbilgisi olup olmadığını kontrol edin.

avbtool info_image --image vendor_boot-debug.img

Orijinal olarak zincirli bir AVB altbilgisi varsa AVB altbilgisi eklenmelidir repack_bootimg komutunu çalıştırdıktan sonra. vendor_boot-debug.img, hata ayıklama belleği yalnızca bir boot veya vendor_boot bölümü.

avbtool add_hash_footer --partition_name vendor_boot \
    --partition_size 100663296 \
    --algorithm SHA256_RSA4096 \
    --key otatools/external/avb/test/data/testkey_rsa4096.pem \
    --image vendor_boot-debug.img