نظرة عامة

تشتمل أجهزة 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 غير متاحة لوحدات المنتج.