ב-Android 10,
תמונת מערכת גנרית (GSI) שמשמשת להפעלה
בוצע שינוי בבדיקת התאימות של CTS-on-GSI/VTS
מ-userdebug לסוג build של משתמש כדי לקבל חתימה. זהו
עבור בדיקת VTS מפני ש-VTS דורש
adb root
לפעול, אבל
האפליקציה adb root
לא זמינה במכשיר build של משתמש.
הוספת ה-ramdisk לניפוי באגים (או תמונת האתחול של ניפוי באגים) כדי להפעיל את adb root
מכשיר build של משתמש שתוכנת האתחול שלו
לא נעול. זה מפשט את הבדיקה
באמצעות אותו build של GSI system.img
עבור CTS-on-GSI.
VTS-on-GSI. להגדרת STS, שימוש ב-OEM (יצרן ציוד מקורי אחר לניפוי באגים) system.img
עדיין תקף
נדרש.
בטבלה הבאה מוצגים שינויים בסוג התמונה וה-build לצורך בדיקת תאימות Android 10.
חבילת בדיקות | בדיקה עם | Build | ניפוי באגים ב-ramdisk | adb root? | Android 9 -> שינוי של 10 וריאנטים של build |
---|---|---|---|---|---|
CTS | מערכת ה-OEM | משתמש | לא | לא | ללא שינוי |
CTS-on-GSI | GSI | משתמש | לא | לא | userdebug -> GSI של משתמש הגרסה חתומה |
STS | מערכת ה-OEM | ניפוי באגים ברמת המשתמש | לא | Y | חדש ב-Q |
VTS | GSI | משתמש | Y | Y | userdebug -> GSI של משתמש הגרסה חתומה |
סקירה כללית
קובצי התמונות הנוספים האלה נוצרים בתיקיית ה-build.
(${ANDROID_PRODUCT_OUT}
):
boot-debug.img
vendor_boot-debug.img
כשמעבירים את boot-debug.img
למחיצה boot
של המכשיר,
גרסת userdebug של קובץ המדיניות של המערכת וקובץ מאפיין נוסף,
adb_debug.prop
, נטענו. כך אפשר להשתמש ב-adb root
עם גרסת ה-build של המשתמש
system.img
(או GSI או OEM).
עבור
תמונת ליבה גנרית (GKI)
באמצעות מכשירים עם מחיצה מסוג vendor_boot
, boot-debug.img
הבהוב, מאחר שהמחיצה boot
חייבת להבהב עם תמונת GKI מאושרת.
במקום זאת, צריך להבהב את vendor_boot-debug.img
אל vendor_boot
כדי להקל על ניפוי באגים ramdisk.
דרישות מוקדמות לשימוש ב-ramdisk של ניפוי באגים
RAMdisk לניפוי באגים מסופק על ידי ה-OEM (יצרן הציוד המקורי) שמפרסם את בדיקות התאימות. הוא אסור לשחרר חתימה, ולהשתמש בו רק אם המכשיר לא נעול.
RAMdisk של ניפוי הבאגים לא ייווצר ולא ישמש לשדרוג מכשירים עם:
BOARD_BUILD_SYSTEM_ROOT_IMAGE
נכוןskip_initramfs
בשורת הפקודה בליבה (kernel)
Android 12 GSI
אין צורך בהוראה נוספת כדי להשתמש ב-ramdisk של ניפוי באגים עם Android 12 GSI.
החל מ-29/09/2021, אין יותר צורך לעדכן ramdisk עם ניפוי באגים באמצעות
repack_bootimg
. Android 12 GSI
build אחרי SGR1.210929.001 (7777720)
כולל את
קובץ userdebug_plat_sepolicy.cil
ב-system.img
שלו והתעלמות
userdebug_plat_sepolicy.cil
מ-ramdisk של ניפוי באגים. לצפייה
CLs עבור
פרטים.
Android 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 מעודכנת.
אריזה מחדש של ramdisk לניפוי באגים
במקום לשלב שינויים במדיניות כדי לבנות מחדש את boot-debug.img
, השותפים
יכול להשתמש ב-repack_bootimg
כדי לעדכן את קובץ המדיניות של GSI ל-boot-debug.img
(או vendor_boot-debug.img
אם המכשיר משתמש ב-GKI).
אלה השלבים:
הורדה של
otatools.zip
מ- https://ci.android.com. מומלץ להוריד מפריטי ה-build של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
מגרסת ה-build של GSI באמצעות. לדוגמה, אם אתם משתמשים בזרוע 64 GSI מ-RJR1.211020.001 (7840830)
, ולאחר מכן הורדה מ: https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/previous.מעדכנים את המכשיר
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
בהתאם למכשיר הגדרות אישיות. מידע מפורט זמין בקטע הבא הסברנו.
נתיב של מדיניות ניפוי הבאגים של המשתמש
האפשרות שצוינה למעלה מסוג repack_bootimg
מעתיקה את הקובץ userdebug_plat_sepolicy.cil
סולם של --src_bootimg
ל-Radisk של --dst_bootimg
. אבל הנתיב
ב-ramdisk של ניפוי באגים עשויים להיות שונים בגרסאות שונות של Android. לחשבון
Android בגרסאות 10 ו-11, הנתיב הוא
first_stage_ramdisk/userdebug_plat_sepolicy.cil
למכשירים עם
androidboot.force_normal_boot=1
בשורת הפקודה בליבה (kernel). אחרת, הפרמטר
הנתיב הוא userdebug_plat_sepolicy.cil
.
מריצים את הפקודה הבאה כדי לבדוק אם יש androidboot.force_normal_boot
בשורת הפקודה בליבה (kernel):
adb root
adb shell cat /proc/cmdline | grep force_normal_boot
החל מ-Android 12, הנתיב בתוך ניפוי באגים
הרדיסק הוא תמיד userdebug_plat_sepolicy.cil
, בלי קשר לקיום של
androidboot.force_normal_boot=1
בשורת הפקודה בליבה (kernel). הבאים
טבלה שמציגה את הנתיבים ב-Radisk של ניפוי באגים בגרסאות שונות של Android.
תמונה של ניפוי באגים | 10 Android | Android 11 | 12 Android |
---|---|---|---|
GKI start-with-debug-ramdisk-${KERNEL_VERSION}.img | לא רלוונטי | first_stage_ramdisk/userdebug_plat_sepolicy.cil |
userdebug_plat_sepolicy.cil |
start-debug.img למכשיר ספציפי למכשיר | תלוי ב-Force_natural_boot | תלוי ב-Force_natural_boot | userdebug_plat_sepolicy.cil |
ספק_אתחול-debug.img ספציפי למכשיר | לא רלוונטי | תלוי ב-Force_natural_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
ב-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
אם אין androidboot.force_normal_boot=1
בשורת הפקודה בליבה (kernel),
צריך לשנות את הפקודה כמו למטה כדי לשנות את נתיב היעד
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