تحتوي أجهزة Android على عدة أقسام أو أجزاء محدّدة من مساحة التخزين المستخدَمة لاحتواء أجزاء محدّدة من برامج الجهاز. يحتوي كل قسم على صورة قسم (ملف IMG) أو لقطة لجميع البرامج الخاصة بالقسم. يوضّح الشكل 1 تخطيط الأقسام الأساسية على الجهاز:
الشكل 1: تخطيط الأقسام الأساسية
يتم تصنيف الأقسام في ثلاث فئات:
أقسام النظام هي أقسام يتم تحديثها عند تحديث نظام التشغيل والميزات الأخرى.
systemوbootوinit_bootهي أقسام أساسية في النظام.أقسام المورّد تحتوي على رمز خاص بالجهاز والأجهزة قد لا يتم تحديثه مطلقًا بعد الإصدار الأولي. أقسام
vendorوvendor_bootوodmهي أقسام أساسية للمورّد.الأقسام غير القابلة للتعديل هي أقسام لا يتم تعديل محتوياتها أو يتم تعديلها ببيانات المستخدم.
يمكن أن يتفاعل الرمز في أقسام النظام والمورّد باستخدام واجهة مستقرة تُعرف باسم واجهة المورّد (VINTF).
أقسام النظام
في ما يلي قائمة بجميع أقسام النظام واستخداماتها:
القسم
bootيحتوي هذا القسم على ”صورة نواة عامة” (GKI). يحتوي هذا القسم أيضًا على ملف "مساحة التخزين المؤقت للذاكرة العشوائية" (ramdisk) العام في الأجهزة التي تم إطلاقها في الإصدار 12 من نظام التشغيل Android والإصدارات الأقدم. لمزيد من المعلومات حول ملف ramdisk العام، يُرجى الاطّلاع على محتويات صورة ramdisk العامة.قسم
init_boot(الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث): يحتوي هذا القسم على ملف عام لـ"مساحة التخزين المؤقت للذاكرة العشوائية" (ramdisk). في نظامَي التشغيل Android 11 و12، يكون ملف ramdisk العام في القسمboot.قسم
system: يحتوي هذا القسم على صورة النظام المستخدَمة لمنتجات المصنّعين الأصليين للأجهزة.القسم
system_extيحتوي هذا القسم على موارد النظام ووحدات النظام الخاصة التي توسّع صورة النظام المشتركة في قسمsystem.القسم
system_dlkmيحتوي هذا القسم على وحدات صورة النواة العامة" (GKI). لمزيد من المعلومات حول هذا القسم، راجِع تنفيذ قسم وحدة GKI.قسم
product: يمكن أن يحتوي هذا القسم على وحدات خاصة بالمنتج غير مجمّعة مع أي أقسام أخرى.القسم
pvmfwيخزّن هذا القسم البرامج الثابتة للأجهزة الافتراضية المحمية (pvmfw) الذي يمثّل الرمز الأول الذي يتم تنفيذه في الأجهزة الافتراضية المحمية. لمزيد من المعلومات، يُرجى الاطّلاع على برامج ثابتة للأجهزة الافتراضية المحمية.القسم
generic_bootloaderيحتوي هذا القسم على برنامج الإقلاع العام.
أقسام المورّد
في ما يلي قائمة بجميع أقسام المورّد واستخداماتها:
القسم
vendor_bootيحتوي هذا القسم على رمز تشغيل خاص بالمورّد. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة أقسام التشغيل الخاصة بالمورّد.القسم
recoveryيخزّن هذا القسم صورة الاسترداد التي يتم تشغيلها أثناء عملية التحديث عبر شبكة غير سلكية (OTA). يمكن للأجهزة التي تتيح التحديثات السلسة تخزين صور الاسترداد كملف ramdisk مضمّن فيbootأو صورةinit_boot. لمزيد من المعلومات حول التحديثات بدون التوقّف عن استخدام الهاتف، يُرجى الاطّلاع على تحديثات النظام (سلسة) من النوع أ/ب.قسم
misc: يستخدم قسم الاسترداد هذا القسم الذي يبلغ حجمه 4 كيلوبايت أو أكثر.قسم
vbmeta: يحتوي هذا القسم على معلومات "التشغيل المُتحقّق منه" لجميع الأقسام. تتحقّق هذه المعلومات من أنّ الصور المثبَّتة في كل قسم موثوق بها. لمزيد من المعلومات حول "التشغيل المُتحقّق منه"، يُرجى الاطّلاع على مقالة التشغيل المُتحقّق منه.القسم
vendorيحتوي هذا القسم على أي ملف ثنائي خاص بالمورّد ولا يمكن توزيعه على مشروع Android المفتوح المصدر (AOSP) لأنه ليس عامًا بما يكفي.قسم
vendor_dlkm: يحتوي هذا القسم على وحدات نواة المورّد. من خلال تخزين وحدات نواة المورّد في هذا القسم بدلاً من قسمvendor، يمكنك تعديل وحدات النواة بدون تعديل قسمvendor. لمزيد من المعلومات، يُرجى الاطّلاع على أقسام DLKM الخاصة بالمورّد والمصنّع الأصلي للجهاز.قسم
odm: يحتوي هذا القسم على تخصيصات من المصنّع الأصلي للتصميم (ODM) لحزم دعم لوحة المورّد (BSP) الخاصة بالمنظومة على الرقاقة (SoC). تتيح هذه التخصيصات للمصنّعين الأصليين للتصميم استبدال مكوّنات المنظومة على الرقاقة أو تخصيصها، وتنفيذ وحدات النواة للمكوّنات الخاصة باللوحة، والبرامج الخفية، والميزات الخاصة بالمصنّع الأصلي للتصميم على طبقات تجريد الأجهزة (HAL). هذا القسم اختياري. يُستخدم هذا القسم عادةً لاحتواء التخصيصات حتى تتمكّن الأجهزة من استخدام صورة مورّد واحدة لوحدات تخزين متعددة للأجهزة. لمزيد من المعلومات، يُرجى الاطّلاع على أقسام المصنّع الأصلي للتصميم.القسم
odm_dlkmهذا القسم مخصّص لتخزين وحدات نواة المصنّعين الأصليين للأجهزة (ODM). من خلال تخزين وحدات نواة ODM في هذا القسم بدلاً من قسمodm، يمكنك تعديل وحدات نواة ODM بدون تعديل قسمodm. لمزيد من المعلومات، يُرجى الاطّلاع على أقسام DLKM الخاصة بالمورّد والمصنّع الأصلي للجهاز.قسم
radio: يحتوي هذا القسم على صورة الراديو ولا يكون مطلوبًا إلا للأجهزة التي تتضمّن راديو مع برامج خاصة بالراديو في قسم مخصّص.
الأقسام غير القابلة للتعديل
في ما يلي قائمة بجميع الأقسام غير القابلة للتعديل واستخداماتها:
قسم
cache: يحتوي هذا القسم على بيانات مؤقتة وهو اختياري إذا كان جهازك يستخدم التحديثات السلسة. لا يجب أن يكون هذا القسم قابلاً للكتابة من برنامج الإقلاع، ولكن يجب أن يكون قابلاً للمحو. يعتمد حجم القسم على نوع الجهاز ومساحة التخزين المتاحة علىuserdata، وعادةً ما تكون مساحة التخزين من 50 إلى 100 ميغابايت كافية.قسم
userdata: يحتوي هذا القسم على التطبيقات والبيانات المثبَّتة من قِبل المستخدم، بما في ذلك بيانات التخصيص.قسم
metadata: إذا كان جهازك يستخدم تشفير البيانات الوصفية، يحتوي هذا القسم على مفتاح تشفير البيانات الوصفية. يبلغ حجم هذا القسم 16 ميغابايت أو أكثر، وهو غير مشفّر ولا يتم أخذ لقطة لبياناته. يتم محو هذا القسم عند إعادة ضبط الجهاز على الإعدادات الأصلية.
قواعد وتوصيات تعديل الأقسام
ننصحك بتعديل جميع أقسام النظام كوحدة واحدة وجميع أقسام المورّد كوحدة أخرى. من خلال تعديل مجموعة الأقسام كوحدة واحدة، يمكنك إجراء اختبار للتحقّق من أنّ الواجهات بين الصور في كل قسم تظل مستقرة.
بغض النظر عن طريقة تعديل الأقسام، يجب تعديل الأقسام التالية بسبب التبعيات الوثيقة وعدم توفّر واجهات برمجة تطبيقات مستقرة:
- قسمَا
bootوsystem_dlkm - أقسام
init_bootوsystemوsystem_extوproduct
الأقسام الديناميكية
يمكن للأجهزة التي تعمل بنظام التشغيل Android 11 والإصدارات الأحدث أن تتوافق مع الأقسام الديناميكية، وهي نظام تقسيم لمساحة المستخدم في Android يتيح لك إنشاء الأقسام أو تغيير حجمها أو إزالتها أثناء إجراء التحديثات عبر الهواء (OTA). لمزيد من المعلومات، يُرجى الاطّلاع على الأقسام الديناميكية.
خيارات منتجات Soong
يستخدم نظام تصميم Soong خيارات الصور لتقسيم
تبعيات التصميم. يمكن أن تعدّل الوحدات الأصلية (/build/soong/cc) وحدات عملية النظام إلى الخيار الأساسي ووحدات عملية المورّد إلى خيار المورّد، ولا يمكن أن ترتبط وحدة في أحد خيارات الصور بوحدات أخرى في خيار صورة مختلف.
في Android 12 أو الإصدارات الأحدث، تنشئ وحدة نظام تحتوي على vendor_available: true خيار مورّد بالإضافة إلى الخيار الأساسي. لإنشاء خيار منتج، product_available: true يجب أن يكون
محددًا. لا تتوفّر بعض مكتبات VNDK بدون product_available: true لوحدات المنتج.