في نظامَي التشغيل Android 10 و11،
يحتوي قرص ذاكرة الوصول العشوائي (ramdisk) في المرحلة الأولى
على ملف init الثنائي الخاص بالمرحلة الأولى (الذي ينفّذ عملية التحميل المبكر على النحو المحدّد
من خلال إدخالات fstab) وملفات fstab الخاصة بالبائع. (كما هو الحال في الإصدار 9 من نظام التشغيل Android والإصدارات الأقدم،
system.img
يحتوي على محتوى $TARGET_ROOT_OUT
).
بالنسبة إلى الأجهزة التي تحتوي على boot-ramdisk (غير A/B)، فإنّ عملية init في المرحلة الأولى هي ملف تنفيذي ثابت يقع في
/init
. تثبّت هذه الأجهزةsystem.img
كـ/system
، ثم تنفّذ عملية تبديل الجذر لنقل عملية التثبيت في/system
إلى/
. يتم تحرير محتوى ramdisk بعد اكتمال عملية التحميل.بالنسبة إلى الأجهزة التي تستخدم الاسترداد كقرص RAM، يقع برنامج init في المرحلة الأولى في
/init
ضمن قرص RAM الخاص بالاسترداد. تنتقل هذه الأجهزة أولاً إلى الجذر/first_stage_ramdisk
لإزالة مكونات الاسترداد من البيئة، ثم تواصل العمل بالطريقة نفسها التي تعمل بها الأجهزة التي تتضمّن boot-ramdisk (أي تحميلsystem.img
كـ/system
، ثم الانتقال إلى الجذر لنقل عملية التحميل هذه إلى/
، وإخلاء محتوى ramdisk بعد التحميل). إذا كانandroidboot.force_normal_boot=1
موجودًا في سطر أوامر النواة (أو bootconfig من Android 12 والإصدارات الأحدث)، سيتم تشغيل الأجهزة بشكل طبيعي (في Android) بدلاً من تشغيلها في وضع الاسترداد.
بعد انتهاء عملية التهيئة في المرحلة الأولى، يتم تنفيذ /system/bin/init
مع الوسيطة selinux_setup
لتجميع SELinux وتحميله على النظام. أخيرًا، يتم تنفيذ /system/bin/init
مرة أخرى باستخدام الوسيطة second_stage
. في هذه المرحلة، يتم تنفيذ المرحلة الرئيسية من عملية التهيئة ومواصلة عملية التشغيل باستخدام نصوص init.rc
البرمجية.
توضّح الأقسام التالية الاختلافات في تصميمات الأقسام للأجهزة التي لا تستخدم نظام التشغيل A/B قبل وبعد Android 10.
تنسيقات الأقسام (الأجهزة غير المتوافقة مع اختبارات أ/ب)
توضّح الأقسام التالية الاختلافات في تصميمات الأقسام للأجهزة التي لا تستخدم نظام التشغيل A/B قبل وبعد Android 10.
boot.img
Ramdisk (الإصدار 8.x من نظام التشغيل Android والإصدارات الأقدم) |
النظام كجذر (الإصدار 9 من نظام التشغيل Android) |
Ramdisk (الإصداران 10 و11 من نظام التشغيل Android) |
---|---|---|
يحتوي على نواة و ramdisk.img -/ - init.rc - init - etc -> /system/etc - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
يحتوي على نواة تشغيل عادية فقط. | يحتوي على نواة و ramdisk.img -/ - init - vendor fstab files - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
recovery.img
يحتوي على نواة استرداد وramdisk.img
استرداد
system.img
Ramdisk (الإصدار 8.x من نظام التشغيل Android والإصدارات الأقدم) |
النظام كجذر (الإصدار 9 من نظام التشغيل Android) |
Ramdisk (الإصداران 10 و11 من نظام التشغيل Android) |
---|---|---|
يحتوي على system.img -/ - bin/ - etc - vendor -> /vendor - ... |
يحتوي هذا الحقل على المحتوى المدمج من system.img -/ - init.rc - init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... |
يحتوي هذا الحقل على المحتوى المدمج من system.img -/ - init.rc - init -> /system/bin/init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... |
تنسيقات الأقسام (أجهزة أ/ب)
توضّح الأقسام التالية الاختلافات في تصميمات الأقسام لأجهزة A/B قبل وبعد الإصدار 10 من نظام التشغيل Android.
boot.img
النظام كجذر (الإصدار 9 من نظام التشغيل Android) |
Ramdisk (الإصداران 10 و11 من نظام التشغيل Android) |
---|---|
يحتوي على نواة التشغيل العادي وrecovery-ramdisk
(BOARD_USES_RECOVERY_AS_BOOT := true ).يتم استخدام recovery-ramdisk للتشغيل في وضع الاسترداد فقط. |
يحتوي على نواة التشغيل العادي وrecovery-ramdisk
(BOARD_USES_RECOVERY_AS_BOOT := true ). يتم استخدام recovery-ramdisk للتشغيل في وضع الاسترداد وفي نظام التشغيل Android. ramdisk.img -/ - init -> /system/bin/init - first_stage_ramdisk - vendor fstab files - etc -> /system/etc - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
system.img
يحتوي على المحتوى المدمج من $TARGET_SYSTEM_OUT
و$TARGET_ROOT_OUT
.
system.img
-/
- init.rc
- init -> /system/bin/init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...