نظرة عامة

تتضمّن أجهزة Android عدة أقسام تؤدي وظائف مختلفة في عملية التمهيد.

الأقسام العادية

  • قسم boot يحتوي هذا القسم على صورة نواة ويتم إنشاؤه باستخدام mkbootimg. يمكنك استخدام قسم افتراضي لفلاش أي صورة مباشرةً دون وميض قسم تمهيد جديد. يحتوي هذا القسم أيضًا على ملف ramdisk العام في الأجهزة التي تم إطلاقها قبل بدء استخدام Android 13.

    • kernel. يُعيد قسم kernel الافتراضي تحميل الإصدار الحالي من نواة النظام (zImage zImage-dtbImage.gz-dtb) من خلال كتابة ملف تعريف نواة النظام الجديد فوق ملف تعريف نواة النظام القديم. إذا كانت نواة التطوير المقدَّمة غير متوافقة، قد تحتاج إلى تعديل قسم vendor أو system أو dtb (إذا كان متوفّرًا) باستخدام وحدات النواة المرتبطة.

    • ramdisk. يُعيد قسم ramdisk الافتراضي كتابة ملف ramdisk عن طريق كتابة صورة ملف ramdisk الجديدة فوق صورة ملف ramdisk القديمة.

    تحدِّد عملية الكتابة فوق البيانات موقع بدء الصورة الحالية في eMMC وتنسخ الصورة الجديدة إلى هذا الموقع. قد تكون الصورة الجديدة (kernel أو ramdisk) أكبر من الصورة الحالية؛ ولتوفير مساحة، يمكن لبرنامج التمهيد نقل البيانات بعد الصورة أو إلغاء العملية مع حدوث خطأ.

  • قسم "init_boot" يحتوي هذا القسم على ذاكرة الوصول العشوائي (RAM) النموذجية للأجهزة التي تعمل بالإصدار 13 من Android والإصدارات الأحدث.

  • قسم "system" يحتوي هذا القسم على إطار عمل Android.

  • قسم odm يحتوي هذا القسم على تخصيصات المصنّع الأصلي للتصميم (ODM) لحِزم دعم اللوحة (BSP) الخاصة بمورّدي المنظومة على الرقاقة (SoC). تتيح هذه التخصيصات لمطوّري الأجهزة الأصليين استبدال مكونات منظومة على رقاقة (SoC) أو تخصيصها، و تنفيذ وحدات نواة المكونات والبرامج الخفية الخاصة باللوحة، و الميزات الخاصة بمطوّري الأجهزة الأصليين على طبقات تجريد الأجهزة (HAL). هذا القسم اختياري، وعادةً ما يُستخدَم ليحتوي على تخصيصات حتى يمكن للأجهزة استخدام صورة واحدة من المورّد لرموز التخزين التعريفية للأجهزة المتعددة. لمعرفة التفاصيل، يُرجى الاطّلاع على ODM الأقسام.

  • قسم odm_dlkm هذا القسم مخصّص لتخزين ملفّات برمجية لوحدة معالجة مركزية في جهاز مصنّع أصلي للجهاز (ODM). يتيح تخزين وحدات نواة ODM في قسم odm_dlkm (بدلاً من قسم odm) إمكانية تعديل وحدات نواة ODM بدون تعديل قسم odm.

  • قسم recovery يخزن هذا القسم صورة الاسترداد، التي يتم تشغيلها أثناء عملية التحديث عبر الهواء. يمكن للأجهزة التي تتيح التحديثات السلسة تخزين صور الاسترداد كملف دوار رام مضمّن في صورة boot أو init_boot (بدلاً من ملف صورة منفصل).

  • قسم cache يخزِّن هذا القسم البيانات المؤقتة وهو اختياري إذا كان الجهاز يستخدم التحديثات السلسة. لا يجب أن يكون قسم ذاكرة التخزين المؤقت قابلاً للكتابة من أداة تحميل التشغيل، ولكن يجب أن يكون قابلاً للحذف. يعتمد حجم القسم على نوع الجهاز ومدى توفّر المساحة على userdata، ويتراوح عادةً بين 50 و100 ميغابايت.

  • قسم misc يستخدم قسم الاسترداد هذا القسم الذي تبلغ مساحته 4 كيلوبايت أو أكثر.

  • قسم userdata يحتوي هذا القسم على التطبيقات التي ثبَّتها المستخدم و البيانات، بما في ذلك بيانات التخصيص.

  • قسم metadata يُستخدَم هذا القسم لتخزين مفتاح تشفير البيانات الوصفية عندما يستخدم الجهاز تشفير البيانات الوصفية. يكون الحجم 16 ميغابايت أو أكبر. ولا يتم تشفير هذه البيانات ولا يتم التقاط لقطات لها. ويتم محو البيانات عند إعادة ضبط الجهاز على الإعدادات الأصلية. إنّ استخدام هذا القسم محدود بشدة.

  • قسم "vendor" يحتوي هذا القسم على أي ملف ثنائي غير قابل للتثبيت على AOSP. إذا كان الجهاز لا يحتوي على معلومات خاصة بالملكية، يمكنك حذف هذا القسم.

  • قسم vendor_dlkm هذا القسم مخصّص لتخزين وحدات ملف التمهيد التابعة للمورّد. يتيح تخزين وحدات نواة المورّد في القسم vendor_dlkm (بدلاً من القسم vendor) إمكانية تعديل وحدات النواة بدون تعديل القسم vendor.

  • قسم "radio" يحتوي هذا القسم على صورة الراديو وهو مطلوب فقط للأجهزة التي تتضمّن راديوًا مع برنامج خاص بالراديو في قسم مخصّص.

  • قسم tos يخزِّن هذا القسم الصورة الثنائية لنظام التشغيل Trusty ولا يتم استخدامه إلا إذا كان الجهاز يتضمّن Trusty. لمعرفة التفاصيل، يُرجى الاطّلاع على بنود الخدمة الأقسام.

  • قسم "pvmfw" يخزِّن هذا القسم برمجية الثابت لجهاز افتراضي محمي (pvmfw)، وهي الرمز البرمجي الأول الذي يتم تشغيله في الأجهزة الافتراضية المحمية. اطّلِع على البرامج الثابتة المحمية للأجهزة الافتراضية للحصول على مزيد من التفاصيل.

الأقسام الديناميكية

يمكن للأجهزة التي تعمل بنظام التشغيل Android 11 والإصدارات الأحدث استخدام المساحة التخزينية الديناميكية، وهي نظام لتقسيم مساحة المستخدم في Android يتيح إنشاء أو تغيير حجم أو حذف الأقسام أثناء التحديثات عبر شبكة غير سلكية (OTA). لمعرفة التفاصيل، يُرجى الاطّلاع على التقسيمات الديناميكية.

تحديد الأقسام المهمة

إذا كان تشغيل الجهاز يتطلّب أقسامًا أو بيانات معيّنة، يجب تصنيف هذه الأقسام أو البيانات على أنّها محمية بالكامل أو قابلة لإعادة التثبيت، أي أنّها قابلة لإعادة الإنشاء أو مقدَّمة أو استخراج باستخدام أمر fastboot oem. ويشمل ذلك بيانات مثل الإعدادات الخاصة بالمصنع لكل جهاز والأرقام التسلسلية وبيانات المعايرة وغير ذلك.

التغييرات في Android 11

يتضمّن نظام التشغيل Android 11 تغييرات عديدة على الأقسام، بما في ذلك القيود المفروضة على الربط بالمكتبات ونُسخ صور Soong الجديدة.

تنسيق قسم Android

الشكل 1: تنسيق التقسيم في Android 11

  • صورة نظام واحدة (SSI) صورة جديدة تجريبية تحتوي على الصور system وsystem_ext عندما تكون هذه الأقسام شائعة لمجموعة من الأجهزة المستهدَفة، يمكن لهذه الأجهزة مشاركة ملف SSI وتخطّي إنشاء ملفَي system وsystem_ext.

  • قسم system_ext قسم جديد يمكنه استخدام موارد system ويمكن أن يتضمّن وحدات نظام:

    • توسيع وحدات نظام AOSP في قسم system: ننصحك بإرسال هذه الوحدات إلى AOSP حتى يمكن تثبيتها على القسم system لاحقًا.

    • ادمِج وحدات خاصة بالمصنّعين الأصليين أو المنصّات: ننصحك بإزالة ربط هذه الوحدات كي يتمكّن من تثبيتها على قسم product أو vendor.

  • قسم system صورة نظام شائعة تُستخدَم لمنتجات المصنّعين الأصليّين للأجهزة ننصح بنقل الوحدات المملوكة خارج القسم system، إما عن طريق إرسالها إلى AOSP أو نقلها إلى القسم system_ext.

  • قسم "product" يمكن لهذا القسم الآن استخدام واجهات مسموح بها لتثبيت وحدات خاصة بالمنتج غير مجمعة مع أي أقسام أخرى.

تغييرات VNDK

مجموعة تطوير البرامج الأصلية للمورّدين (VNDK) هي مجموعة من المكتبات المثبَّتة في قسم system والمصمّمة حصريًا للمورّدين من أجل تنفيذ واجهات HAL.

  • في الإصدار 10 من Android والإصدارات الأقدم، يمكن أن يرتبط القسم vendor بمكتبات VNDK في القسم system، ولكن لا يمكنه الارتباط بمكتبات أخرى في القسم system. يمكن للوحدات الأصلية في القسم product الربط بأي مكتبة في قسم system.

  • في الإصدار 11 من Android والإصدارات الأحدث، يمكن أن يرتبط قسما product وvendor بمكتبات VNDK في القسم system، ولكن لا يمكنهم الارتباط بمكتبات أخرى في القسم system.

خيارات المنتج في Soong

يستخدم نظام إنشاء Soong صِيغ الصور لتقسيم ملحقات الإنشاء. يمكن للوحدات الأصلية (/build/soong/cc) تحويل وحدات معالجة النظام إلى الصيغة الأساسية ووحدات معالجة المورّد إلى صيغة المورّد، ولا يمكن لوحدة في أحد صيغ الصور الربط بوحدات أخرى في صيغة صورة مختلفة.

  • في الإصدار 10 من Android أو الإصدارات الأقدم، تنشئ وحدة النظام تلقائيًا الأسعار الأساسية. ويمكنه أيضًا إنشاء خيارات خاصة بالمورّدين من خلال تحديد 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 لوحدات المنتجات.