Android 10'dan itibaren, GSI/VTS'de CTS uygunluk testini çalıştırmak için kullanılan Genel Sistem Görüntüsü (GSI), sürüm imzalanabilmesi için userdebug yerine kullanıcı derleme türüne değiştirildi. VTS, adb root
'in çalışmasını gerektirir ancak adb root
, kullanıcı tarafından oluşturulan cihazlarda kullanılamaz. Bu nedenle, VTS testi için sorun teşkil eder.
Hata ayıklama ramdisk'i (veya hata ayıklama önyükleme görüntüsü), bootloader'ı kilitli olmayan kullanıcı derlemesi cihazlarda adb root
'ü etkinleştirmek için kullanıma sunulmuştur. Bu, CTS-on-GSI ve VTS-on-GSI için aynı kullanıcı derlemesi GSI system.img
'sini kullanarak test akışını basitleştirir. STS kurulumu için başka bir kullanıcı hata ayıklama OEM'sinin (system.img
) kullanılması yine de gereklidir.
Aşağıdaki tabloda, Android 10'da uyumluluk testi için yapılan görüntü ve derleme türü değişiklikleri gösterilmektedir.
Test paketi | Şununla test et: | Topluluk | RAM diskinde hata ayıklama | adb root? | Android 9 -> 10 derleme değişkeni değişikliği |
---|---|---|---|---|---|
CTS | OEM'nin sistemi | kullanıcı | H | H | Değiştirmedi |
GSI'de CTS | GSI | kullanıcı | H | H | userdebug -> user GSI imzalı sürüm |
STS | OEM'in sistemi | kullanıcı hata ayıklama | H | Y | Q'daki yenilikler |
VTS | GSI | kullanıcı | Y | Y | userdebug -> user GSI imzalı sürüm |
Genel Bakış
Bu ek görüntü dosyaları, derleme klasörü (${ANDROID_PRODUCT_OUT}
) altında oluşturulur:
boot-debug.img
vendor_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ı (adb_debug.prop
) yüklenir. Bu, system.img
(GSI veya OEM'ler) derlemesi ile adb root
kullanılmasına olanak tanır.
vendor_boot
bölümüne sahip cihazlarda Genel Çekirdek Görüntüsü (GKI) kullanılırken boot
bölümü sertifikalı bir GKI görüntüsüyle yazılacağından boot-debug.img
yazılmamalıdır.
Bunun yerine, ramdisk'te hata ayıklama işlemini kolaylaştırmak için vendor_boot-debug.img
, vendor_boot
bölümüne yazılmalıdır.
Hata ayıklama ramdisk'ini kullanmayla ilgili ön koşullar
Hata ayıklama RAM'i, uygunluk testlerini çalıştıran OEM tarafından sağlanır. Sürüm imzalanmamış olmalıdır ve yalnızca cihazın kilidi açıkken kullanılabilir.
Hata ayıklama ramdisk'i, aşağıdaki özelliklere sahip cihazları yükseltmek için oluşturulmaz veya kullanılmaz:
BOARD_BUILD_SYSTEM_ROOT_IMAGE
true- Çekirdek komut satırında
skip_initramfs
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 ramdisk'lerinin repack_bootimg
aracıyla güncellenmesi gerekmeyecek. SGR1.210929.001 (7777720)
'ten sonraki Android 12 GSI derlemesi, güncel userdebug_plat_sepolicy.cil
dosyasını system.img
içine alır ve hata ayıklama ramdisk'indeki userdebug_plat_sepolicy.cil
dosyasını yoksayar. Ayrıntılar için CL'lere bakın.
Android 11 GSI
boot-debug.img
veya vendor_boot-debug.img
kullanıldığında sistem se politikası, boot-debug.img
veya vendor_boot-debug.img
'un hata ayıklama ram diskindeki userdebug_plat_sepolicy.cil
dosyasından yüklenir. GSI resimlerini başlatmak için boot-debug.img
veya vendor_boot-debug.img
'inizi yeniden oluşturmak üzere lütfen her zaman android11-gsi
dalındaki güncel sepolicy değişikliklerini dahil edin.
Alternatif olarak, repack_bootimg
aracı, güncellenmiş GSI güvenlik politikasıyla bir boot-debug.img
veya vendor_boot-debug.img
yeniden oluşturmak için kullanılabilir.
Hata ayıklama ramdisk'ini yeniden paketleme
yer almaktadır.İş ortakları, boot-debug.img
öğesini yeniden derlemek için sepolicy değişikliklerini uygulamak yerine repack_bootimg
kullanarak GSI sepolicy dosyasını boot-debug.img
(veya cihaz GKI kullanıyorsa vendor_boot-debug.img
) ile güncelleyebilir.
İlgili adımlar aşağıda verilmiştir:
otatools.zip
'ü https://ci.android.com adresinden indirin.aosp-main
'teaosp_arm64-userdebug
derleme yapılarını indirmenizi öneririz.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
Kullandığınız GSI derlemesinden
userdebug_plat_sepolicy.cil
veyaboot-with-debug-ramdisk-${KERNEL_VERSION}.img
dosyasını indirin. Örneğin,RJR1.211020.001 (7840830)
'den arm64 GSI kullanıyorsanız https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/latest adresinden indirin.boot-debug.img
veyavendor_boot-debug.img
cihazınıuserdebug_plat_sepolicy.cil
ile 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 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
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 dosyasının yolu
Yukarıdaki repack_bootimg
, userdebug_plat_sepolicy.cil
dosyasını --src_bootimg
'nin ramdisk'inden --dst_bootimg
'ın ramdisk'ine kopyalar. Ancak hata ayıklama ramdisk'indeki yol farklı Android sürümlerinde farklı olabilir. Android 10 ve 11'de, çekirdek komut satırında androidboot.force_normal_boot=1
bulunan cihazlar için yol first_stage_ramdisk/userdebug_plat_sepolicy.cil
'tür. 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 root
adb shell cat /proc/cmdline | grep force_normal_boot
Android 12'den itibaren, çekirdek komut satırında androidboot.force_normal_boot=1
varlığından bağımsız olarak, hata ayıklama önbelleğinin içindeki yol her zaman userdebug_plat_sepolicy.cil
şeklindedir. Aşağıdaki tabloda, farklı Android sürümlerindeki hata ayıklama ramdisk'indeki yollar gösterilmektedir.
Resimde hata ayıkla | 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 değerine 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 |
src_path:dst_path
çiftlerinden oluşan bir listeyle farklı yollara dosya kopyalamak için --ramdisk_add
belirtebilirsiniz. Örneğin, aşağıdaki komut, first_stage_ramdisk/userdebug_plat_sepolicy.cil
dosyasını Android 11 vendor_boot-debug.img
içinde Android 11 boot-with-debug-ramdisk-5.4.img
sürümünden first_stage_ramdisk/userdebug_plat_sepolicy.cil
uygulamasına 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 komut, hedef yolunu userdebug_plat_sepolicy.cil
olarak değiştirmek için 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.cil
AVB altbilgisi ekleme
--dst_bootimg
hizmetine iletilen görüntü AVB zincirli bölüm olarak yapılandırılmışsa repack_bootimg
komutu çalıştırıldıktan sonra AVB altbilgisi eklenmesi gerekir.
Örneğin, repack_bootimg
'yi çalıştırmadan önce, bir vendor_boot-debug.img
'ın zincirlenmiş AVB altbilgisi olup olmadığını kontrol etmek için aşağıdaki komutu çalıştırın.
avbtool info_image --image vendor_boot-debug.img
Orijinal olarak zincirlenmiş bir AVB altbilgisi varsa repack_bootimg
komutunun ardından bir AVB altbilgisi eklenmelidir. Hata ayıklama belleğinin yalnızca cihazın kilidi açıkken kullanılabilmesi nedeniyle vendor_boot-debug.img
öğesini imzalamak için herhangi bir test anahtarı kullanılabilir. Bu da boot
veya vendor_boot
bölümünde yayınlanmayan anahtar imzalı görüntülere izin verir.
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