يقدّم نظام التشغيل Android 11 مفهوم "صورة النواة العامة" وقسم التشغيل الخاص بالمورّد. يخزّن قسم التشغيل الخاص بالمورّد وحدات النواة المتوافقة مع GKI، ويتم تحميله من خلال عملية init في المرحلة الأولى. يتم أيضًا تخزين وحدات النواة التي تسبق إصدار Android 11 في أقسام المورّد وODM، ويتم تحميلها من خلال عمليات المورّد.
في نظام التشغيل Android 11 والإصدارات الأحدث، يمكن تعديل النواة وجميع وحدات النواة بشكل مستقل عن بقية الأقسام. لتفعيل التحديثات لوحدات النواة المخزَّنة في قسم المورّد (بدون تحديث قسم المورّد)، عليك نقل جميع وحدات قسم المورّد إلى قسم جديد باسم وحدة نواة قابلة للتحميل بشكل ديناميكي خاصة بالمورّد. يمكنك بعد ذلك تعديل هذا القسم بشكل مستقل. وبالمثل، يمكنك نقل جميع وحدات النواة المخزَّنة في قسم ODM إلى قسم جديد يُسمى ODM DLKM. ويمكن أيضًا تعديل هذا القسم بشكل مستقل.
موقع القسم
يقع القسمان vendor_dlkm وodm_dlkm في القسم الفائق كقسم ديناميكي آخر.
محتويات vendor_dlkm في /vendor/lib/modules
- وحدات نواة المورّد
- ملفات الإعداد (
modprobe) - ملف
modules.load
محتويات odm_dlkm في /odm/lib/modules
- وحدات نواة مصنّع الجهاز الأصلي
- ملفات الإعداد (
modprobe) - ملف
modules.load
راجِع توافق وحدات النواة للحصول على مزيد من التفاصيل حول ملفات إعداد وحدات النواة.
إنشاء دعم
إنشاء القسمَين vendor_dlkm وodm_dlkm هو عملية مشابهة لإنشاء الأقسام الديناميكية الأخرى.
مثال على إنشاء vendor_dlkm
أنشئ vendor_dlkm كما هو موضّح في الأمثلة التالية.
BoardConfig.mk
BOARD_USES_VENDOR_DLKMIMAGE := true
BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_COPY_OUT_VENDOR_DLKM := vendor_dlkm
BOARD_<GROUP_NAME>_PARTITION_LIST += vendor_dlkm
استبدِل <GROUP_NAME> بالاسم المناسب لمجموعة التحديث. يجب أن تكون مجموعة التحديث هي المجموعة التي يقع فيها قسم المورّد.
بالنسبة إلى أجهزة A/B وVirtual A/B، ملف device.mk
AB_OTA_PARTITIONS += vendor_dlkm
fstab
أضِف الإدخال التالي لـ vendor_dlkm إلى fstab. غيِّر العلامات وفقًا للجهاز. استخدِم الأمر CL Add vendor_dlkm إلى
CF
كمثال.
vendor_dlkm /vendor_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
مثال على إنشاء odm_dlkm
أنشئ odm_dlkm كما هو موضّح في الأمثلة التالية.
BoardConfig.mk
BOARD_USES_ODM_DLKIMAGE := true
BOARD_ODM_DLKIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_COPY_OUT_ODM_DLKM := odm_dlkm
BOARD_<group_name>_PARTITION_LIST += odm_dlkm
بالنسبة إلى الأجهزة التي تستخدم اختبارات A/B وVirtual A/B، device.mk
AB_OTA_PARTITIONS += odm_dlkm
fstab
أضِف الإدخال التالي لـ odm_dlkm إلى fstab. غيِّر العلامات حسب الجهاز. استخدِم الأمر CL Add odm_dlkm إلى
CF
كمثال.
odm_dlkm /odm_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
نسخ وحدات kernel إلى قسم
لاختيار وحدات kernel التي تريد نسخها إلى القسم vendor_dlkm،
أدرِجها في BOARD_VENDOR_KERNEL_MODULES.
إذا أردت تجاهل محتوى modules.load، يمكنك تحديده في BOARD_VENDOR_KERNEL_MODULES_LOAD.
في مدّة التصميم، يتم تثبيت الوحدات المدرَجة في BOARD_VENDOR_KERNEL_MODULES في $ANDROID_PRODUCT_OUT/vendor_dlkm/lib/modules. يتم إنشاء رابط رمزي في /vendor/lib/modules يؤدي إلى /vendor_dlkm/lib/modules.
وبالمثل، لاختيار وحدات kernel التي تريد نسخها إلى القسم odm_dlkm، أدرِجها في BOARD_ODM_KERNEL_MODULES. يتم تشغيل إصدار النظام الأساسي
depmod على الوحدات ويتم نسخ ملفات الإخراج depmod إلى الصورة.
ينشئ الإصدار ملف modules.load ويخزّنه في الصورة.
يحتوي هذا الملف على جميع الوحدات المُدرَجة في BOARD_ODM_KERNEL_MODULES.
إذا أردت تجاهل محتوى modules.load، يمكنك تحديده في BOARD_ODM_KERNEL_MODULES_LOAD.
أثناء مدّة التصميم، يتم تثبيت الوحدات المدرَجة في BOARD_ODM_KERNEL_MODULES في $ANDROID_PRODUCT_OUT/odm_dlkm/lib/modules. يتم إنشاء رابط رمزي في
/odm/lib/modules يؤدي إلى /odm_dlkm/lib/modules.
استخدِم دائمًا /vendor/lib/modules و/odm/lib/modules لوحدات نواة المورّد والمصنّع الأصلي للجهاز.
لا تستخدِم /vendor_dlkm/lib/modules مطلقًا. تثبّت الأجهزة التي لا تتضمّن قسم vendor_dlkm
BOARD_VENDOR_KERNEL_MODULES على /vendor/lib/modules
مباشرةً. وهذا يمثّل مشكلة لأنّ /vendor_dlkm/lib/modules غير متوفّر.
لا تستخدِم /odm_dlkm/lib/modules مطلقًا. على الأجهزة التي لا تتضمّن قسم odm_dlkm،
يتم تثبيت BOARD_ODM_KERNEL_MODULES مباشرةً في /odm/lib/modules. وهذا يمثّل مشكلة لأنّ /odm_dlkm/lib/modules غير متوفّر.
تركيب الأقسام وتحميل الوحدات
أثناء first_stage_init، يتم تحميل القسمَين vendor_dlkm وodm_dlkm في الدليلَين /vendor_dlkm و/odm_dlkm على التوالي. عند حدوث ذلك، ستصبح الروابط الرمزية في /vendor/lib/modules و/odm/lib/modules متاحة.
يمكن بعد ذلك لعملية خاصة بمورّد (مثل نص برمجي .rc) تحميل وحدات النواة استنادًا إلى الترتيب المحدّد في modules.load. يمكن أن تحمّل عملية المورّد أيضًا الوحدات في وقت لاحق، إذا لزم الأمر.
المستندات ذات الصلة
للحصول على مستندات بشأن إنشاء قسم vendor-boot (الذي يحتوي على vendor RAMDisk)، يُرجى الرجوع إلى دعم وحدات النواة.