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