Android 10 ve sonraki sürümlerde, CTS-on-GSI/VTS uygunluk testini çalıştırmak için kullanılan Genel Sistem Görüntüsü (GSI), yayın imzalı olması için userdebug'dan user 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 başlatma görüntüsü), bootloader'ı kilidi açılmış olan bir kullanıcı derlemesi cihazında adb root özelliğini etkinleştirmek için kullanılır. Bu, CTS-on-GSI ve VTS-on-GSI için aynı kullanıcı derlemesi GSI'sini 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 | Hata ayıklama ramdiski | adb root? | Android 9 -> 10 derleme değişkeni değişikliği |
|---|---|---|---|---|---|
| CTS | OEM'nin sistemi | kullanıcı | N | N | Değiştirmedi |
| CTS-on-GSI | GSI | kullanıcı | N | N | userdebug -> user GSI sürüm imzalandı |
| STS | OEM'nin sistemi | userdebug | N | Y | Q'daki yenilikler |
| VTS | GSI | kullanıcı | Y | Y | userdebug -> user GSI sürüm imzalandı |
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 ramdiskini 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.zipuygulamasını https://ci.android.com adresinden indirin.aosp_cf_arm64_only_phone-userdebuguygulamasınıaosp-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.img'ıuserdebug_plat_sepolicy.cilile 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_addbağı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 repack_bootimg, --src_bootimg ramdisk'indeki userdebug_plat_sepolicy.cil dosyasını --dst_bootimg ramdisk'ine kopyalar. 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 ve sonraki sürümlerde, çekirdek komut satırında androidboot.force_normal_boot=1 olup olmamasından bağımsız olarak 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 görüntüsü | 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'deki boot-with-debug-ramdisk-5.4.img dosyasını Android 11'deki vendor_boot-debug.img içine kopyalar.first_stage_ramdisk/userdebug_plat_sepolicy.cilfirst_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 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