Od wersji Androida 10 ogólny obraz systemu (GSI) używany do uruchamiania testów zgodności CTS-on-GSI/VTS został zmieniony z debugowania użytkownika na typ kompilacji użytkownika w celu podpisania wersji. Jest to problem w przypadku testowania VTS, ponieważ VTS wymaga do uruchomienia adb root
, ale adb root
nie jest dostępny na urządzeniu użytkownika.
Wprowadzono ramdysk debugowania (lub obraz rozruchowy debugowania), aby umożliwić adb root
na urządzeniu użytkownika, którego program ładujący jest odblokowany . Upraszcza to przebieg testowania, korzystając z tego samego pliku GSI system.img
który został stworzony przez użytkownika dla plików CTS-on-GSI i VTS-on-GSI. Do konfiguracji STS nadal wymagane jest użycie innego system.img
OEM z debugowaniem użytkownika.
W poniższej tabeli przedstawiono zmiany obrazu i typu kompilacji na potrzeby testowania zgodności w systemie Android 10.
Zestaw testowy | Przetestuj z | Zbudować | Debuguj ramdysk | root adb? | Zmiana wariantu kompilacji Androida 9 -> 10 |
---|---|---|---|---|---|
CTS | System OEM | użytkownik | N | N | Bez zmiany |
CTS na GSI | GSI | użytkownik | N | N | userdebug -> GSI użytkownika wydanie podpisane |
STS | System OEM | debugowanie użytkownika | N | Y | Nowość w Q |
VTS | GSI | użytkownik | Y | Y | userdebug -> GSI użytkownika wydanie podpisane |
Przegląd
Te dodatkowe pliki obrazów są generowane w folderze kompilacji ( ${ANDROID_PRODUCT_OUT}
):
-
boot-debug.img
-
vendor_boot-debug.img
Po wgraniu boot-debug.img
na partycję boot
urządzenia ładowana jest wersja systemowego pliku sepolicy typu userdebug oraz dodatkowy plik właściwości, adb_debug.prop
. Pozwala to na adb root
z kompilacją użytkownika system.img
(albo GSI, albo OEM).
W przypadku ogólnego obrazu jądra (GKI) korzystającego z urządzeń wyposażonych w partycję rozruchową vendor_boot
nie można flashować boot-debug.img
, ponieważ partycja boot
musi być flashowana przy użyciu certyfikowanego obrazu GKI. Zamiast tego plik vendor_boot-debug.img
powinien zostać wgrany na partycję vendor_boot
, aby ułatwić debugowanie RAMdysku.
Warunki wstępne korzystania z dysku ramdysku debugowania
Ramdysk debugowania jest dostarczany przez producenta OEM przeprowadzającego testy zgodności. Nie może być podpisany i można go używać tylko wtedy, gdy urządzenie jest odblokowane.
Ramdysk debugowania nie zostanie wygenerowany ani użyty do aktualizacji urządzeń z:
-
BOARD_BUILD_SYSTEM_ROOT_IMAGE
prawda -
skip_initramfs
w wierszu poleceń jądra
Androida 12GSI
Do korzystania z dysku ramdysku debugującego w systemie Android 12 GSI nie jest wymagana żadna dodatkowa instrukcja.
Począwszy od 29.09.2021 r., dyski ramdisk debugowania nie wymagają już aktualizacji za pomocą narzędzia repack_bootimg
. Wersja Androida 12 GSI po SGR1.210929.001 (7777720)
zawiera aktualny plik userdebug_plat_sepolicy.cil
w pliku system.img
i ignoruje userdebug_plat_sepolicy.cil
z dysku ramdysku debugowania. Szczegółowe informacje można znaleźć w instrukcjach CL .
Androida 11GSI
Gdy używany jest plik boot-debug.img
lub vendor_boot-debug.img
, polityka systemowa jest ładowana z pliku userdebug_plat_sepolicy.cil
na dysku ramdysku debugowania pliku boot-debug.img
lub vendor_boot-debug.img
. Aby uruchomić obrazy GSI, zawsze uwzględniaj aktualne zmiany sepolicy z gałęzi android11-gsi
aby odbudować plik boot-debug.img
lub vendor_boot-debug.img
.
Alternatywnie można użyć narzędzia repack_bootimg
do odbudowania pliku boot-debug.img
lub vendor_boot-debug.img
ze zaktualizowaną polityką GSI.
Przepakuj ramdysk debugowania
Zamiast włączać zmiany sepolicy w celu odbudowania pliku boot-debug.img
, partnerzy mogą użyć repack_bootimg
w celu zaktualizowania pliku sepolicy GSI do pliku boot-debug.img
(lub vendor_boot-debug.img
jeśli urządzenie korzysta z GKI).
Kroki są następujące:
Pobierz plik
otatools.zip
z https://ci.android.com . Zalecamy pobranie z artefaktów kompilacjiaosp_arm64-userdebug
naaosp-main
.Skonfiguruj środowisko wykonawcze dla
repack_bootimg
:unzip otatools.zip -d otatools
export PATH="${PWD}/otatools/bin:${PATH}"
repack_bootimg --help
Pobierz plik
userdebug_plat_sepolicy.cil
lubboot-with-debug-ramdisk-${KERNEL_VERSION}.img
z używanej kompilacji GSI. Na przykład, jeśli używasz arm64 GSI zRJR1.211020.001 (7840830)
, pobierz z https://ci.android.com/builds/submitted/ 7840830 /aosp_arm64-user/latest .Zaktualizuj urządzenie
boot-debug.img
lubvendor_boot-debug.img
za pomocą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
Z
boot-with-debug-ramdisk-${KERNEL_VERSION}.img
: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
Argumenty
--ramdisk_add
można dostosować w zależności od konfiguracji urządzenia. Szczegółowe wyjaśnienia można znaleźć w następnej sekcji .
Ścieżka sepolicy userdebug
Powyższy repack_bootimg
kopiuje plik userdebug_plat_sepolicy.cil
z ramdysku --src_bootimg
na ramdysk --dst_bootimg
. Jednak ścieżka na dysku ramdysku debugowania może być inna w różnych wersjach Androida. W Androidzie 10 i 11 ścieżka to first_stage_ramdisk/userdebug_plat_sepolicy.cil
dla urządzeń z androidboot.force_normal_boot=1
w wierszu poleceń jądra. W przeciwnym razie ścieżka to userdebug_plat_sepolicy.cil
.
Uruchom następującą komendę, aby sprawdzić, czy w wierszu poleceń jądra znajduje się androidboot.force_normal_boot
:
adb root
adb shell cat /proc/cmdline | grep force_normal_boot
Począwszy od Androida 12, ścieżka na dysku ramdysku debugowania to zawsze userdebug_plat_sepolicy.cil
, niezależnie od istnienia androidboot.force_normal_boot=1
w wierszu poleceń jądra. W poniższej tabeli przedstawiono ścieżki na dysku ramdysku debugowania w różnych wersjach systemu Android.
Debuguj obraz | Androida 10 | Androida 11 | Androida 12 |
---|---|---|---|
GKI boot-with-debug-ramdisk-${KERNEL_VERSION}.img | Nie dotyczy | first_stage_ramdisk/userdebug_plat_sepolicy.cil | userdebug_plat_sepolicy.cil |
Boot-debug.img specyficzny dla urządzenia | Zależy od force_normal_boot | Zależy od force_normal_boot | userdebug_plat_sepolicy.cil |
Dostawcy_boot-debug.img specyficzny dla urządzenia | Nie dotyczy | Zależy od force_normal_boot | userdebug_plat_sepolicy.cil |
Możesz określić --ramdisk_add
aby kopiować pliki z i do różnych ścieżek za pomocą listy par src_path:dst_path
. Na przykład następujące polecenie kopiuje plik first_stage_ramdisk/userdebug_plat_sepolicy.cil
z boot-with-debug-ramdisk-5.4.img
Android 11 do pliku first_stage_ramdisk/userdebug_plat_sepolicy.cil
w pliku vendor_boot-debug.img
Android 11.
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
Jeśli w wierszu poleceń jądra nie ma androidboot.force_normal_boot=1
, należy dostosować polecenie jak poniżej, aby zmienić ścieżkę docelową na 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
Dodaj stopkę AVB
Jeśli obraz przekazany do --dst_bootimg
jest skonfigurowany jako partycja połączona z AVB , po uruchomieniu komendy repack_bootimg
należy dodać stopkę AVB.
Na przykład przed uruchomieniem repack_bootimg
uruchom następujące polecenie, aby sprawdzić, czy plik vendor_boot-debug.img
ma powiązaną stopkę AVB.
avbtool info_image --image vendor_boot-debug.img
Jeśli pierwotnie posiadał stopkę AVB połączoną w łańcuch, należy ją dodać po uruchomieniu komendy repack_bootimg
. Użycie dowolnego klucza testowego do podpisania pliku vendor_boot-debug.img
działa, ponieważ ramdysku debugowania można używać tylko wtedy, gdy urządzenie jest odblokowane, co pozwala na obrazy podpisane kluczem niezwolnionym na boot
lub partycji vendor_boot
.
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