מאז אנדרואיד 10, תמונת המערכת הגנרית (GSI) המשמשת להפעלת בדיקות תאימות CTS-on-GSI/VTS השתנתה מ-userdebug לסוג build של משתמש כדי להיות חתום על שחרור. זוהי בעיה עבור בדיקת VTS מכיוון ש-VTS מחייב את adb root
כדי להפעיל, אך adb root
אינו זמין במכשיר בניית משתמש.
ה-ramdisk של איתור באגים (או תמונת האתחול של איתור באגים) מוצגת כדי לאפשר את adb root
במכשיר בניית משתמש שהמטען האתחול שלו לא נעול . זה מפשט את זרימת הבדיקה על ידי שימוש באותו GSI system.img
של משתמש לבנות עבור CTS-on-GSI ו-VTS-on-GSI. עבור הגדרת STS, עדיין נדרש שימוש אחר של userdebug OEM system.img
.
הטבלה הבאה מציגה שינויים בסוג תמונה ומבנה עבור בדיקות תאימות ב-Android 10.
חבילת בדיקות | בדוק עם | לִבנוֹת | איתור באגים ב-ramdisk | שורש adb? | אנדרואיד 9 -> 10 שינוי גרסת בנייה |
---|---|---|---|---|---|
CTS | מערכת של OEM | מִשׁתַמֵשׁ | נ | נ | ללא שינוי |
CTS-on-GSI | GSI | מִשׁתַמֵשׁ | נ | נ | userdebug -> משתמש GSI שחרור חתום |
STS | מערכת של OEM | userdebug | נ | י | חדש ב-Q |
VTS | GSI | מִשׁתַמֵשׁ | י | י | userdebug -> משתמש GSI שחרור חתום |
סקירה כללית
קובצי תמונה נוספים אלה נוצרים תחת תיקיית ה-build ( ${ANDROID_PRODUCT_OUT}
):
-
boot-debug.img
-
vendor_boot-debug.img
כאשר boot-debug.img
מופעל על מחיצת boot
של ההתקן, נטענים גרסת userdebug של קובץ ה-sepolicy של המערכת וקובץ מאפיין נוסף, adb_debug.prop
. זה מאפשר adb root
עם ה-user build system.img
(או GSI או OEM).
עבור תמונת ליבה כללית (GKI) המשתמשים בהתקנים שיש להם מחיצת vendor_boot
, אסור להבהב boot-debug.img
, מכיוון שמחיצת boot
חייבת להיות מהבהבת עם תמונת GKI מאושרת. במקום זאת, יש להאיר vendor_boot-debug.img
על מחיצת vendor_boot
על מנת להקל על איתור באגים ב-ramdisk.
תנאים מוקדמים לשימוש ב-ramdisk באגים
ה-ramdisk לניפוי באגים מסופק על ידי ה-OEM המריץ את בדיקות התאימות. אסור שהוא יהיה חתום על שחרור, וניתן להשתמש בו רק אם המכשיר אינו נעול.
רמדיסק ניפוי הבאגים לא יווצר ולא יעשה בו שימוש לשדרוג התקנים עם:
-
BOARD_BUILD_SYSTEM_ROOT_IMAGE
נכון -
skip_initramfs
בשורת הפקודה של הקרנל
אנדרואיד 12 GSI
אין צורך בהוראה נוספת כדי להשתמש ב-ramdisk באגים עם Android 12 GSI.
החל מה-29/09/2021, לא צריך עוד לעדכן תקלות באגים של ramdisks עם הכלי repack_bootimg
. בניית Android 12 GSI לאחר SGR1.210929.001 (7777720)
משלבת את הקובץ המעודכן userdebug_plat_sepolicy.cil
ב- system.img
שלו ומתעלם userdebug_plat_sepolicy.cil
מ-ramdisk באגים. עיין ב- CLs לפרטים.
אנדרואיד 11 GSI
כאשר נעשה שימוש ב- boot-debug.img
או vendor_boot-debug.img
, ה-sepolicy של המערכת נטען מהקובץ userdebug_plat_sepolicy.cil
ב-ramdisk באגים של boot-debug.img
או vendor_boot-debug.img
. על מנת לאתחל תמונות GSI, נא לשלב תמיד שינויים עדכניים במדיניות של android11-gsi
כדי לבנות מחדש boot-debug.img
או vendor_boot-debug.img
שלך.
לחלופין, ניתן להשתמש בכלי repack_bootimg
לבנייה מחדש של boot-debug.img
או vendor_boot-debug.img
עם GSI sepolicy מעודכן.
ארוז מחדש רמדיסק באגים
במקום לשלב שינויים ב-sepolicy לבנייה מחדש boot-debug.img
, שותפים יכולים להשתמש repack_bootimg
כדי לעדכן את קובץ ה-GSI sepolicy ל- boot-debug.img
(או vendor_boot-debug.img
אם המכשיר משתמש ב-GKI).
השלבים הם כדלקמן:
הורד את
otatools.zip
מ- https://ci.android.com . אנו ממליצים להוריד מ-build artifacts שלaosp_arm64-userdebug
ב-aosp-main
.הגדר את סביבת הביצוע עבור
repack_bootimg
:unzip otatools.zip -d otatools
export PATH="${PWD}/otatools/bin:${PATH}"
repack_bootimg --help
הורד את ה-
userdebug_plat_sepolicy.cil
אוboot-with-debug-ramdisk-${KERNEL_VERSION}.img
מה-GSI build שבו אתה משתמש. לדוגמה, אם אתה משתמש ב-arm64 GSI מ-RJR1.211020.001 (7840830)
, הורד מ- https://ci.android.com/builds/submitted/ 7840830 /aosp_arm64-user/latest .עדכן את המכשיר
boot-debug.img
אוvendor_boot-debug.img
עם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
: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
בהתאם לתצורות ההתקן. עיין בסעיף הבא להסבר מפורט.
הנתיב של userdebug sepolicy
ה- repack_bootimg
לעיל מעתיק את הקובץ userdebug_plat_sepolicy.cil
מה-ramdisk של --src_bootimg
ל-ramdisk של --dst_bootimg
. עם זאת, הנתיב בתוך רמדדיסק באגים עשוי להיות שונה בגרסאות אנדרואיד שונות. באנדרואיד 10 ו-11, הנתיב הוא first_stage_ramdisk/userdebug_plat_sepolicy.cil
עבור מכשירים עם androidboot.force_normal_boot=1
בשורת הפקודה של הליבה. אחרת, הנתיב הוא userdebug_plat_sepolicy.cil
.
הפעל את הפקודה הבאה כדי לבדוק אם יש androidboot.force_normal_boot
בשורת הפקודה של הליבה:
adb root
adb shell cat /proc/cmdline | grep force_normal_boot
החל מאנדרואיד 12, הנתיב בתוך ramdisk באגים הוא תמיד userdebug_plat_sepolicy.cil
, ללא קשר לקיומו של androidboot.force_normal_boot=1
בשורת הפקודה של הליבה. הטבלה הבאה מציגה את הנתיבים ב-ramdisk באגים בגרסאות אנדרואיד שונות.
איתור באגים בתמונה | אנדרואיד 10 | אנדרואיד 11 | אנדרואיד 12 |
---|---|---|---|
GKI boot-with-debug-ramdisk-${KERNEL_VERSION}.img | לא | first_stage_ramdisk/userdebug_plat_sepolicy.cil | userdebug_plat_sepolicy.cil |
boot-debug.img ספציפי למכשיר | תלוי ב-force_normal_boot | תלוי ב-force_normal_boot | userdebug_plat_sepolicy.cil |
vendor_boot-debug.img הספציפי למכשיר | לא | תלוי ב-force_normal_boot | userdebug_plat_sepolicy.cil |
אתה יכול לציין --ramdisk_add
כדי להעתיק קבצים מ ואל נתיבים שונים עם רשימה של זוגות src_path:dst_path
. לדוגמה, הפקודה הבאה מעתיקה את הקובץ first_stage_ramdisk/userdebug_plat_sepolicy.cil
מ-Android 11 boot-with-debug-ramdisk-5.4.img
ל- first_stage_ramdisk/userdebug_plat_sepolicy.cil
בתוך Android 11 vendor_boot-debug.img
.
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
אם אין androidboot.force_normal_boot=1
בשורת הפקודה של הליבה, יש להתאים את הפקודה כמפורט להלן כדי לשנות את נתיב היעד ל- 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
הוסף כותרת תחתונה של AVB
אם התמונה המועברת אל --dst_bootimg
מוגדרת כמחיצה משורשרת AVB , יש להוסיף כותרת תחתונה של AVB לאחר הפעלת הפקודה repack_bootimg
.
לדוגמה, לפני הפעלת repack_bootimg
, הפעל את הפקודה הבאה כדי לבדוק אם vendor_boot-debug.img
יש כותרת תחתונה AVB משורשרת.
avbtool info_image --image vendor_boot-debug.img
אם במקור יש לו כותרת תחתונה AVB משורשרת, יש להוסיף כותרת תחתונה AVB לאחר הפעלת הפקודה repack_bootimg
. שימוש במפתח בדיקה כלשהו כדי לחתום על vendor_boot-debug.img
פועל מכיוון שניתן להשתמש ב-ramdisk באגים רק כאשר התקן אינו נעול, מה שמאפשר תמונות חתומות ללא שחרור במחיצת boot
או 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