منذ أن نظام التشغيل Android 10،
صورة النظام العامة (GSI) المستخدَمة للتشغيل
تم تغيير اختبار امتثال CTS-on-GSI/VTS
من userdebug إلى نوع إصدار المستخدم حتى يتم توقيع الإصدار. هذا هو
حدوث مشكلة في اختبار VTS لأن VTS يتطلب
adb root
لتشغيله، ولكن
"adb root
" غير متاح على جهاز تم تصميمه للمستخدمين.
تم تقديم قرص تصحيح الأخطاء (أو صورة تشغيل تصحيح الأخطاء) لتفعيل adb root
على
جهاز إصدار المستخدم الذي تم تثبيت برنامج الإقلاع الخاص به
إلغاء القفل. يبسّط الاختبار
باستخدام إصدار GSI نفسه للمستخدم "system.img
" لـ CTS-on-GSI
VTS-on-GSI. بالنسبة إلى إعداد STS، لا يزال استخدام المصنّع الأصلي للجهاز system.img
الآخر لتصحيح أخطاء المستخدم
مطلوبة.
يعرض الجدول التالي التغييرات في نوع النسخة والصور لاختبار الامتثال في الإصدار 10 من نظام التشغيل Android
حزمة تجريبية | الاختبار باستخدام | إنشاء | تصحيح أخطاء RAMD | جذر adb؟ | الإصدار 9 من نظام التشغيل Android -> 10 تغيير في صيغة الإصدار |
---|---|---|---|---|---|
مجموعة أدوات اختبار التوافق (CTS) | نظام المصنّع الأصلي للجهاز | المستخدم | N | N | لم يتغيّر موقفي |
CTS-on-GSI | نظام تحديد المواقع العالمي (GSI) | المستخدم | N | N | userdebug -> GSI للمستخدم تم التوقيع على الإصدار |
STS | نظام المصنّع الأصلي للجهاز | تصحيح أخطاء المستخدم | N | Y | الجديد في Q |
الإحالة الناجحة (VTS) | نظام تحديد المواقع العالمي (GSI) | المستخدم | Y | Y | userdebug -> GSI للمستخدم تم التوقيع على الإصدار |
نظرة عامة
يتم إنشاء ملفات الصور الإضافية هذه ضمن مجلد الإصدار
(${ANDROID_PRODUCT_OUT}
):
boot-debug.img
vendor_boot-debug.img
عند وميض boot-debug.img
في قسم boot
من الجهاز،
userdebug من ملف sepolicy للنظام وملف الخصائص الإضافية،
adb_debug.prop
. يتيح هذا الإجراء إمكانية استخدام adb root
مع إصدار المستخدم.
system.img
(إما GSI أو المصنّع الأصلي للجهاز)
بالنسبة
صورة Kernel عامة (GKI)
الذين يستخدمون أجهزة تتضمن قسم vendor_boot
، يجب ألا يكون boot-debug.img
لأنّ القسم boot
يجب أن يومض بنسخة GKI معتمَدة.
بدلاً من ذلك، يجب وميض vendor_boot-debug.img
على vendor_boot
لتسهيل تصحيح أخطاء RAMdisk.
المتطلبات الأساسية لاستخدام ذاكرة RAMD لتصحيح الأخطاء
يوفّر المصنّع الأصلي للجهاز الذي يجري اختبارات الامتثال قرص تصحيح الأخطاء. أُنشأها جون هنتر، الذي كان متخصصًا أن يكون موقَّعًا عليه، ولا يمكن استخدامه إلا إذا تم فتح قفل الجهاز.
لن يتم إنشاء ذاكرة الوصول العشوائي لتصحيح الأخطاء أو استخدامها لترقية الأجهزة التي تحتوي على:
BOARD_BUILD_SYSTEM_ROOT_IMAGE
صحيحskip_initramfs
في سطر أوامر النواة
نظام التشغيل Android 12 GSI
ما مِن تعليمات إضافية مطلوبة لاستخدام قرص RAM الخاص بك لتصحيح الأخطاء مع نظام التشغيل Android 12 GSI.
اعتبارًا من 29/09/2021، لم تعُد برامج تصحيح الأخطاء في ذاكرة الوصول العشوائي تتطلب التحديث
repack_bootimg
. نظام التشغيل Android 12 GSI
التي ستُصدر بعد SGR1.210929.001 (7777720)
يتضمن أحدث إصدار
ملف userdebug_plat_sepolicy.cil
في system.img
ويتم تجاهله
userdebug_plat_sepolicy.cil
من ذاكرة الوصول العشوائي لتصحيح الأخطاء. يمكنك الاطّلاع على
متغيّرات التصميم التراكمية لـ
التفاصيل.
نظام التشغيل Android 11 GSI
وعند استخدام boot-debug.img
أو vendor_boot-debug.img
، يبدأ النظام
يتم تحميل sepolicy من ملف userdebug_plat_sepolicy.cil
في عملية تصحيح الأخطاء.
قرص الهرم لـ 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
مع سياسة sepolicy المُعدَّلة لـ GSI.
إعادة تعبئة ذاكرة الوصول العشوائي (RAM) لتصحيح الأخطاء
بدلاً من تطبيق تغييرات sepolicy لإعادة إنشاء boot-debug.img
،
يمكن استخدام repack_bootimg
لتحديث ملف سياسة GSI في boot-debug.img
(أو vendor_boot-debug.img
إذا كان الجهاز يستخدم GKI)
الخطوات هي كما يلي:
تنزيل
otatools.zip
من https://ci.android.com ننصحك بتنزيل التطبيق من عناصر الإصدار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 الذي التي تستخدمها. على سبيل المثال، إذا كنت تستخدم Arm64 GSI منRJR1.211020.001 (7840830)
، ثم التنزيل من https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/updated.تحديث الجهاز
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
وفقًا للجهاز الإعدادات. يمكنك الاطّلاع على القسم التالي للحصول على مزيد من التفاصيل. شرح.
مسار سياسة sepolicy تصحيح أخطاء المستخدم
ينسخ repack_bootimg
أعلاه الملف userdebug_plat_sepolicy.cil
من
رمضان --src_bootimg
إلى قرع --dst_bootimg
. ومع ذلك، فإن المسار
في ذاكرة الوصول العشوائي لتصحيح الأخطاء المختلفة في إصدارات Android المختلفة. ضِمن
Android 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
بدءًا من نظام التشغيل Android 12، المسار ضمن عملية تصحيح الأخطاء
قيمة ramdisk دائمًا هي userdebug_plat_sepolicy.cil
، بغض النظر عن وجود
androidboot.force_normal_boot=1
في سطر أوامر النواة. ما يلي:
يعرض المسارات داخل ذاكرة RAMD لتصحيح الأخطاء في إصدارات مختلفة من Android.
تصحيح أخطاء الصورة | Android 10 | Android 11 | Android 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 |
Seller_boot-debug.img المتعلّق بالجهاز | لا ينطبق | يعتمد على force_normal_boot | userdebug_plat_sepolicy.cil |
يمكنك تحديد --ramdisk_add
لنسخ الملفات من مسارات مختلفة وإليها باستخدام
قائمة تضم src_path:dst_path
أزواج. على سبيل المثال، ينسخ الأمر التالي
ملف "first_stage_ramdisk/userdebug_plat_sepolicy.cil
" من الإصدار boot-with-debug-ramdisk-5.4.img
من نظام التشغيل Android 11 إلى
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
في سطر أوامر 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
لأنّ قرص تصحيح الأخطاء لا يمكن استخدامه إلا عندما
تم فتح قفل جهازك، ما يسمح بإضافة صور موقَّعة بدون إصدار المفاتيح على 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