تشتمل أجهزة Android على عدة أقسام تخدم وظائف مختلفة في عملية التمهيد.
الأقسام القياسية
قسم
boot
. يحتوي هذا القسم على صورة النواة ويتم إنشاؤه باستخدامmkbootimg
. يمكنك استخدام قسم افتراضي لفلاش أي من الصورتين مباشرة دون وميض قسم تمهيد جديد. يحتوي هذا القسم أيضًا على قرص ذاكرة الوصول العشوائي العام في الأجهزة التي تم إطلاقها قبل Android 13.نواة. يقوم قسم
kernel
الظاهري بالكتابة فوق kernel (zImage
,zImage-dtb
,Image.gz-dtb
) عن طريق كتابة صورة kernel الجديدة فوق صورة kernel القديمة. إذا كانت نواة التطوير المتوفرة غير متوافقة، فقد تحتاج إلى تحديث قسمvendor
أوsystem
أو قسمdtb
(إن وجد) بوحدات kernel المرتبطة.قرص الذاكرة. يقوم قسم
ramdisk
الظاهري بالكتابة فوق قرص ذاكرة الوصول العشوائي عن طريق كتابة صورة قرص ذاكرة الوصول العشوائي الجديدة فوق صورة قرص ذاكرة الوصول العشوائي القديمة.
تحدد عملية الكتابة الفوقية موقع بدء الصورة الموجودة في eMMC وتنسخ الصورة الجديدة إلى ذلك الموقع. قد تكون الصورة الجديدة (النواة أو قرص الذاكرة) أكبر من الصورة الموجودة؛ لتوفير مساحة، يمكن لمحمل التشغيل نقل البيانات بعد الصورة أو التخلي عن العملية مع حدوث خطأ.
قسم
init_boot
. يحتوي هذا القسم على قرص ذاكرة الوصول العشوائي العام للأجهزة التي تعمل بنظام التشغيل Android 13 والإصدارات الأحدث.قسم
system
. يحتوي هذا القسم على إطار عمل Android.قسم
odm
. يحتوي هذا القسم على تخصيصات الشركة المصنعة للتصميم الأصلي (ODM) لحزم دعم لوحة بائعي النظام (SoC) (BSPs). تتيح هذه التخصيصات لمصممي التصميم (ODM) استبدال مكونات SoC أو تخصيصها، وتنفيذ وحدات kernel للمكونات الخاصة باللوحة، والشياطين، والميزات الخاصة بـ ODM على طبقات تجريد الأجهزة (HALs). هذا القسم اختياري. عادةً، يتم استخدامه لاحتواء التخصيصات حتى تتمكن الأجهزة من استخدام صورة بائع واحدة لوحدات SKU المتعددة للأجهزة. لمزيد من التفاصيل، راجع أقسام ODM .قسم
odm_dlkm
. هذا القسم مخصص لتخزين وحدات نواة ODM. تخزين وحدات نواة ODM في قسمodm_dlkm
(على عكس قسمodm
) يجعل من الممكن تحديث وحدات نواة ODM دون تحديث قسمodm
.قسم
recovery
. يقوم هذا القسم بتخزين صورة الاسترداد، التي يتم تشغيلها أثناء عملية OTA. يمكن للأجهزة التي تدعم التحديثات السلسة تخزين صور الاسترداد كقرص ذاكرة موجود فيboot
أو صورةinit_boot
(بدلاً من صورة منفصلة).القسم
cache
. يقوم هذا القسم بتخزين البيانات المؤقتة وهو اختياري إذا كان الجهاز يستخدم تحديثات سلسة. لا يلزم أن يكون قسم ذاكرة التخزين المؤقت قابلاً للكتابة من أداة تحميل التشغيل، ولكن يجب أن يكون قابلاً للمسح. يعتمد حجم القسم على نوع الجهاز ومدى توفر المساحة علىuserdata
؛ عادةً ما يكون حجم 50 ميجابايت – 100 ميجابايت كافيًا.قسم
misc
. يتم استخدام هذا القسم بواسطة قسم الاسترداد ويبلغ حجمه 4 كيلو بايت أو أكبر.قسم
userdata
. يحتوي هذا القسم على التطبيقات والبيانات المثبتة بواسطة المستخدم، بما في ذلك بيانات التخصيص.قسم
metadata
. يُستخدم هذا القسم لتخزين مفتاح تشفير البيانات التعريفية عندما يستخدم الجهاز تشفير البيانات التعريفية . الحجم 16 ميجا أو أكبر. إنه غير مشفر ولا يتم التقاط بياناته. ويتم مسحه عند إعادة ضبط المصنع للجهاز. استخدام هذا القسم محدود للغاية.تقسيم
vendor
. يحتوي هذا القسم على أي ثنائي غير قابل للتوزيع على AOSP. إذا كان الجهاز لا يحتوي على معلومات خاصة، فيمكنك حذف هذا القسم.قسم
vendor_dlkm
. هذا القسم مخصص لتخزين وحدات نواة البائع. يؤدي تخزين وحدات kernel الخاصة بالمورد في قسمvendor_dlkm
(على عكس قسمvendor
) إلى إمكانية تحديث وحدات kernel دون تحديث قسمvendor
.قسم
radio
. يحتوي هذا القسم على صورة الراديو وهو مطلوب فقط للأجهزة التي تشتمل على راديو مزود ببرامج خاصة بالراديو في قسم مخصص.قسم
tos
. يقوم هذا القسم بتخزين الصورة الثنائية لنظام التشغيل Trusty OS ويتم استخدامه فقط إذا كان الجهاز يتضمن Trusty. لمزيد من التفاصيل، راجع أقسام TOS .قسم
pvmfw
. يقوم هذا القسم بتخزين البرامج الثابتة للجهاز الظاهري المحمي (pvmfw) وهو الرمز الأول الذي يتم تشغيله في الأجهزة الافتراضية المحمية. راجع البرامج الثابتة للجهاز الظاهري المحمية لمزيد من التفاصيل.
الأقسام الديناميكية
يمكن للأجهزة التي تعمل بنظام Android 11 والإصدارات الأحدث أن تدعم الأقسام الديناميكية، وهي عبارة عن نظام تقسيم مساحة المستخدم لنظام Android الذي يتيح إنشاء الأقسام أو تغيير حجمها أو تدميرها أثناء التحديثات عبر الهواء (OTA). لمزيد من التفاصيل، راجع الأقسام الديناميكية .
تعيين الأقسام الهامة
إذا كان الجهاز يتطلب أقسامًا أو بيانات محددة للتشغيل، فيجب عليك تعيين هذه الأقسام/البيانات إما محمية بالكامل أو قابلة لإعادة التشغيل، مما يعني أنها قابلة لإعادة البناء أو توفيرها أو استخراجها باستخدام أمر fastboot oem
. يتضمن ذلك بيانات مثل الإعدادات الخاصة بالمصنع لكل جهاز، والأرقام التسلسلية، وبيانات المعايرة، والمزيد.
التغييرات في أندرويد 11
يتضمن Android 11 العديد من التغييرات على الأقسام، بما في ذلك القيود المفروضة على الارتباط بالمكتبات ومتغيرات صور Soong الجديدة.
الشكل 1. تخطيط القسم في Android 11
صورة نظام واحد (SSI). صورة مفاهيمية جديدة تحتوي على صور
system
وsystem_ext
. عندما تكون هذه الأقسام مشتركة لمجموعة من الأجهزة المستهدفة، يمكن لهذه الأجهزة مشاركة SSI وتخطي إنشاء صورsystem
وsystem_ext
.قسم
system_ext
. قسم جديد يمكنه استخدام مواردsystem
ويمكن أن يتضمن وحدات النظام التي:قم بتوسيع وحدات نظام AOSP في قسم
system
. نوصي بنقل هذه الوحدات إلى AOSP حتى يمكن تثبيتها على قسمsystem
لاحقًا.حزمة وحدات OEM أو SoC الخاصة. نوصي بتفكيك هذه الوحدات بحيث يمكن تثبيتها على قسم
product
أوvendor
.
قسم
system
. صورة النظام الشائعة المستخدمة لمنتجات OEM. نوصي بنقل الوحدات النمطية الخاصة خارج قسمsystem
، إما عن طريق نقلها إلى AOSP أو عن طريق نقلها إلى قسمsystem_ext
.قسم
product
. يمكن لهذا القسم الآن استخدام الواجهات المسموح بها لتثبيت الوحدات النمطية الخاصة بالمنتج والتي لم يتم تجميعها مع أي أقسام أخرى.
تغييرات VNDK
تعد مجموعة أدوات التطوير الأصلية للمورد (VNDK) عبارة عن مجموعة من المكتبات المثبتة في قسم system
ومصممة خصيصًا للبائعين لتنفيذ تراخيص وصول الأجهزة (HALs) الخاصة بهم.
في نظام التشغيل Android 10 والإصدارات الأقدم، يمكن لقسم
vendor
الارتباط بمكتبات VNDK في قسمsystem
، لكن لا يمكنه الارتباط بمكتبات أخرى في قسمsystem
. يمكن للوحدات الأصلية الموجودة في قسمproduct
الارتباط بأي مكتبة في قسمsystem
.في Android 11 والإصدارات الأحدث، يمكن لقسمي
product
vendor
الارتباط بمكتبات VNDK في قسمsystem
، لكن لا يمكن الارتباط بمكتبات أخرى في قسمsystem
.
قريبا متغيرات المنتج
يستخدم نظام بناء Soong متغيرات الصور لتقسيم تبعيات البناء. يمكن للوحدات الأصلية ( /build/soong/cc
) تحويل وحدات عملية النظام إلى المتغير الأساسي ووحدات عملية البائع إلى متغير البائع؛ لا يمكن ربط وحدة نمطية في متغير صورة واحد بوحدات نمطية أخرى في متغير صورة مختلف.
في نظام التشغيل Android 10 أو الإصدارات الأقدم، تقوم وحدة النظام تلقائيًا بإنشاء المتغيرات الأساسية. ويمكنه أيضًا إنشاء متغيرات البائع عن طريق تحديد
vendor_available: true
في ملفاتAndroid.bp
الخاصة به؛ وهذا يمكّن وحدات البائع من الارتباط بوحدات النظام. يمكن لمكتبات VNDK، وهي متغيرات بائع لمكتباتsystem
، أيضًا إنشاء متغيرات بائع لوحدات البائع عن طريق تعريفvendor_available: true
في ملفاتAndroid.bp
الخاصة بها (انظر المثال ).في Android 11، يمكن لوحدة النظام أيضًا إنشاء متغير منتج (بالإضافة إلى المتغيرات الأساسية ومتغيرات البائع) عن طريق تحديد
vendor_available: true
.في نظام التشغيل Android 12 أو الإصدارات الأحدث، تقوم وحدة النظام التي تحتوي على
vendor_available: true
بإنشاء متغير بائع بالإضافة إلى المتغير الأساسي. لإنشاء متغير منتج، يجب تحديدproduct_available: true
. بعض مكتبات VNDK التي لاproduct_available: true
غير متاحة لوحدات المنتج.