يقدّم نظام التشغيل Android 11 مفهوم "صورة النواة العامة" وقسم التشغيل الخاص بالمورّد. يخزّن قسم التشغيل الخاص بالمورّد وحدات النواة المتوافقة مع GKI، ويتم تحميله من خلال عملية init في المرحلة الأولى. يتم أيضًا تخزين وحدات النواة التي تم إنشاؤها قبل إصدار Android 11 في أقسام المورّد والمصنّع الأصلي للجهاز، ويتم تحميلها من خلال عمليات المورّد.
في نظام التشغيل Android 11 والإصدارات الأحدث، يمكن تعديل النواة وجميع وحدات النواة بشكل مستقل عن بقية الأقسام. لتفعيل التحديثات لوحدات النواة المخزَّنة في قسم المورّد (بدون تحديث قسم المورّد)، عليك نقل جميع وحدات قسم المورّد إلى قسم جديد يُسمى وحدة نواة قابلة للتحميل ديناميكيًا خاصة بالمورّد. يمكنك بعد ذلك تعديل هذا القسم بشكل مستقل. وبالمثل، يمكنك نقل جميع وحدات النواة المخزَّنة في قسم ODM إلى قسم جديد يُسمى ODM DLKM. ويمكن أيضًا تعديل هذا القسم بشكل مستقل.
موقع القسم
يقع القسمان vendor_dlkm
وodm_dlkm
في القسم الفائق كقسم ديناميكي آخر.
محتويات vendor_dlkm في /vendor/lib/modules
- وحدات نواة المورّد
modprobe
ملفات الإعداد- ملف
modules.load
محتويات odm_dlkm في /odm/lib/modules
- وحدات نواة ODM
modprobe
ملفات الإعداد- ملف
modules.load
راجِع توافق وحدات النواة لمزيد من التفاصيل حول ملفات إعداد وحدات النواة.
إنشاء تطبيق دعم
إنشاء vendor_dlkm
وodm_dlkm
هو عملية مشابهة لإنشاء الأقسام الديناميكية الأخرى.
vendor_dlkm build example
أنشئ 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
to
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
to
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)، يُرجى الرجوع إلى دعم وحدات النواة.