Android 10'dan itibaren, CTS-on-GSI/VTS uygunluk testini çalıştırmak için kullanılan Generic System Image (GSI), yayın için imzalanabilmesi amacıyla userdebug'dan kullanıcı derleme türüne değiştirildi. VTS'nin çalışması için adb root gerekir ancak adb root, kullanıcı derlemesi cihazda kullanılamadığından bu durum VTS testi için sorun teşkil eder.
Hata ayıklama ramdiski (veya hata ayıklama önyükleme görüntüsü), bootloader'ı kilidi açılmış olan bir kullanıcı derlemesi cihazda adb root'yı etkinleştirmek için kullanılır. Bu, CTS-on-GSI ve VTS-on-GSI için aynı kullanıcı derlemesi GSI'yi system.img kullanarak test akışını basitleştirir. STS kurulumu için başka bir userdebug OEM system.img kullanılması hâlâ gereklidir.
Aşağıdaki tabloda, Android 10'daki uygunluk testi için görüntü ve derleme türü değişiklikleri gösterilmektedir.
| Test paketi | Şununla test et: | Derle | ramdisk'te hata ayıklama | adb root? | Android 9 -> 10 derleme değişkeni değişikliği |
|---|---|---|---|---|---|
| CTS | OEM'in sistemi | kullanıcı | N | N | Değiştirmedi |
| CTS-on-GSI | GSI | kullanıcı | N | N | userdebug -> user GSI release signed |
| STS | OEM'in sistemi | userdebug | N | Y | Q'daki yenilikler |
| VTS | GSI | kullanıcı | Y | Y | userdebug -> user GSI release signed |
Genel Bakış
Bu ek resim dosyaları, derleme klasöründe (${ANDROID_PRODUCT_OUT}) oluşturulur:
boot-debug.imgvendor_boot-debug.img
boot-debug.img, cihazın boot bölümüne yüklendiğinde sistem sepolicy dosyasının userdebug sürümü ve ek bir özellik dosyası olan adb_debug.prop yüklenir. Bu, kullanıcı derlemesi adb root ile system.img (GSI'ler veya OEM'ler) kullanılmasına olanak tanır.
vendor_boot bölümü olan cihazlarda Genel Çekirdek Görüntüsü (GKI) için boot-debug.img yazılmamalıdır. boot bölümüne sertifikalı bir GKI görüntüsü yazılmalıdır.
Bunun yerine, hata ayıklama ramdisk'ini kolaylaştırmak için vendor_boot-debug.img, vendor_boot bölümüne yüklenmelidir.
Hata ayıklama ramdiski kullanmanın ön koşulları
Hata ayıklama ramdiski, uygunluk testlerini çalıştıran OEM tarafından sağlanır. Yayın imzalı olmamalıdır ve yalnızca cihazın kilidi açıkken kullanılabilir.
Hata ayıklama ramdiski, aşağıdaki özelliklere sahip cihazları yükseltmek için oluşturulmaz veya kullanılmaz:
BOARD_BUILD_SYSTEM_ROOT_IMAGEdoğruskip_initramfsçekirdek komut satırında
Android 12 GSI
Android 12 GSI ile hata ayıklama ramdisk'ini kullanmak için ek talimat gerekmez.
29.09.2021'den itibaren hata ayıklama ramdisklerinin artık repack_bootimg aracıyla güncellenmesi gerekmiyor. SGR1.210929.001 (7777720) sonrası Android 12 GSI derlemesi, system.img dosyasında güncel userdebug_plat_sepolicy.cil dosyasını içerir ve hata ayıklama ramdisk'indeki userdebug_plat_sepolicy.cil dosyasını yoksayar. Ayrıntılar için
değişiklik listelerine bakın.
Android 11 GSI
boot-debug.img veya vendor_boot-debug.img kullanıldığında sistem
sepolicy, boot-debug.img veya vendor_boot-debug.img'nin hata ayıklama ramdisk'indeki userdebug_plat_sepolicy.cil dosyasından yüklenir. GSI
görüntülerini başlatmak için lütfen boot-debug.img veya vendor_boot-debug.img'nizi yeniden oluşturmak üzere android11-gsi dalındaki güncel sepolicy değişikliklerini her zaman dahil edin.
Alternatif olarak, güncellenmiş GSI sepolicy ile boot-debug.img veya vendor_boot-debug.img yeniden oluşturmak için repack_bootimg aracı kullanılabilir.
Hata ayıklama ramdisk'ini yeniden paketleme
İş ortakları, boot-debug.img'yı yeniden oluşturmak için sepolicy değişikliklerini dahil etmek yerine GSI sepolicy dosyasını boot-debug.img'ya (veya cihaz GKI kullanıyorsa vendor_boot-debug.img) güncellemek için repack_bootimg'yi kullanabilir.
Adımlar aşağıdaki gibidir:
otatools.zipdosyasını https://ci.android.com adresinden indirin.aosp_cf_arm64_only_phone-userdebug'ünaosp-android-latest-releasedalındaki derleme yapıtlarından indirmenizi öneririz.repack_bootimgiçin yürütme ortamını ayarlayın:unzip otatools.zip -d otatoolsexport PATH="${PWD}/otatools/bin:${PATH}"repack_bootimg --helpKullandığınız GSI derlemesinden
userdebug_plat_sepolicy.cilveyaboot-with-debug-ramdisk-${KERNEL_VERSION}.imgdosyasını indirin. Örneğin,RJR1.211020.001 (7840830)adresinden bir arm64 GSI kullanıyorsanız https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/latest adresinden indirin.Cihazı
boot-debug.imgveyavendor_boot-debug.imgileuserdebug_plat_sepolicy.cilolarak güncelleyin: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 GKIrepack_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.cilboot-with-debug-ramdisk-${KERNEL_VERSION}.imgile: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 GKIrepack_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'nın bağımsız değişkenleri, cihaz yapılandırmalarına göre ayarlanabilir. Ayrıntılı açıklama için sonraki bölüme bakın.
userdebug sepolicy'nin yolu
Yukarıdaki komut, repack_bootimg dosyasını --src_bootimg ramdisk'inden --dst_bootimg ramdisk'ine kopyalar.userdebug_plat_sepolicy.cil Ancak hata ayıklama ramdisk'indeki yol, farklı Android sürümlerinde farklı olabilir. Android 10 ve 11'de yol, çekirdek komut satırında first_stage_ramdisk/userdebug_plat_sepolicy.cil olan cihazlar için first_stage_ramdisk/userdebug_plat_sepolicy.cil şeklindedir.androidboot.force_normal_boot=1 Aksi takdirde yol userdebug_plat_sepolicy.cil olur.
Çekirdek komut satırında androidboot.force_normal_boot olup olmadığını kontrol etmek için aşağıdaki komutu çalıştırın:
adb rootadb shell cat /proc/cmdline | grep force_normal_boot
Android 12'den itibaren, çekirdek komut satırında androidboot.force_normal_boot=1 olup olmadığına bakılmaksızın hata ayıklama ramdisk'indeki yol her zaman userdebug_plat_sepolicy.cil olur. Aşağıdaki tabloda, farklı Android sürümlerindeki bir hata ayıklama ramdisk'indeki yollar gösterilmektedir.
| Hata ayıklama resmi | Android 10 | Android 11 | Android 12 |
|---|---|---|---|
| GKI boot-with-debug-ramdisk-${KERNEL_VERSION}.img | Yok | first_stage_ramdisk/userdebug_plat_sepolicy.cil |
userdebug_plat_sepolicy.cil |
| Cihaza özel boot-debug.img | force_normal_boot'a bağlıdır. | force_normal_boot'a bağlıdır. | userdebug_plat_sepolicy.cil |
| Cihaza özel vendor_boot-debug.img | Yok | force_normal_boot'a bağlıdır. | userdebug_plat_sepolicy.cil |
--ramdisk_add çiftlerinin listesiyle dosyaları farklı yollardan kopyalamak için src_path:dst_path belirtebilirsiniz. Örneğin, aşağıdaki komut, Android 11 boot-with-debug-ramdisk-5.4.img cihazındaki first_stage_ramdisk/userdebug_plat_sepolicy.cil dosyasını Android 11 vendor_boot-debug.img cihazındaki first_stage_ramdisk/userdebug_plat_sepolicy.cil konumuna kopyalar.
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 hedef yolu userdebug_plat_sepolicy.cil olarak değiştirmek için komut aşağıdaki gibi ayarlanmalıdır.
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.cilAVB altbilgisi ekleme
--dst_bootimg öğesine iletilen resim AVB zincirli bölüm olarak yapılandırılmışsa repack_bootimg komutu çalıştırıldıktan sonra bir AVB altbilgisi eklenmesi gerekir.
Örneğin, repack_bootimg komutunu çalıştırmadan önce, vendor_boot-debug.img öğesinin zincirleme AVB altbilgisine sahip olup olmadığını kontrol etmek için aşağıdaki komutu çalıştırın.
avbtool info_image --image vendor_boot-debug.imgBaşlangıçta zincirleme bir AVB altbilgisi varsa repack_bootimg komutu çalıştırıldıktan sonra bir AVB altbilgisi eklenmesi gerekir. vendor_boot-debug.img öğesini imzalamak için herhangi bir test anahtarı kullanılabilir. Bunun nedeni, hata ayıklama ramdisk'inin yalnızca cihazın kilidi açıkken kullanılabilmesidir. Bu da boot veya vendor_boot bölümünde yayınlanmayan anahtarla imzalanmış görüntülerin kullanılmasına olanak tanır.
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