يقدّم نظام التشغيل Android 11 مفهوم "صورة kernel العامة" وقسم التمهيد الخاص بالمورّد. يخزِّن قسم التمهيد الخاص بالمورّد وحدات ملف kernel المتوافقة مع GKI، ويتم تحميلها من خلال عملية الإعداد في المرحلة الأولى. يتم أيضًا تخزين وحدات kernel قبل إصدار Android 11 في ملفَي partiton vendor وODM، ويتم تحميلها من خلال عمليات المورّد.
في الإصدار 11 من نظام التشغيل Android أو الإصدارات الأحدث، يمكن تحديث kernel وجميع وحداته بشكل مستقل عن بقية الأقسام. لتفعيل التحديثات لوحدات kernel المخزّنة في قسم المورّد (بدون تحديث لقسم المورّد)، عليك نقل جميع وحدات قسم المورّد إلى قسم جديد يُسمى Vendor DLKM (وحدة kernel قابلة للتحميل ديناميكيًا). ويمكنك بعد ذلك تعديل هذا القسم بشكل مستقل. وبالمثل، يمكنك نقل جميع وحدات النواة المخزّنة في قسم ODM إلى قسم جديد يُسمى ODM DLKM. ويمكن تعديل هذا القسم بشكل مستقل أيضًا.
موقع التقسيم
يقع القسمان vendor_dlkm
وodm_dlkm
في القسم الفائق كأحد الأقسام الديناميكية الأخرى.
محتوى vendor_dlkm في /vendor/lib/modules
- وحدات نواة المورّدين
modprobe
ملفات الإعدادات- ملف
modules.load
محتوى odm_dlkm في /odm/lib/modules
- وحدات نواة المصنّعين الأصليين للأجهزة
modprobe
ملفات الإعدادات- ملف
modules.load
اطّلِع على دعم ملفّات برمجة وحدات kernel للحصول على مزيد من التفاصيل عن ملفات ضبط وحدات kernel.
إنشاء الدعم
إنّ إنشاء القسمَين 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 وأجهزة A/B الافتراضية، ملف device.mk
AB_OTA_PARTITIONS += vendor_dlkm
fstab
أضِف الإدخال التالي لـ vendor_dlkm
إلى fstab. غيِّر العلامات وفقًا
للجهاز. استخدِم CL إضافة 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 وA/B الافتراضية، device.mk
AB_OTA_PARTITIONS += odm_dlkm
fstab
أضِف الإدخال التالي لـ odm_dlkm
إلى fstab. غيِّر العلامات وفقًا
للجهاز. استخدِم CL إضافة 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
لوحدات مورّدي
ونظام التشغيل المفتوح المصدر (ODM) للنواة.
لا تستخدِم مطلقًا /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
برمجي) تحميل وحدات kernel استنادًا
إلى الترتيب المحدّد في modules.load
. يمكن أيضًا لعملية المورّد تحميل الوحدات في وقت لاحق، إذا لزم الأمر.
المستندات ذات الصلة
للحصول على مستندات بشأن إنشاء قسم لبدء التشغيل الخاص بالمورّد (الذي يحتوي على ملف RAMDisk الخاص بالمورّد)، يُرجى الرجوع إلى دعم ملف Kernel Module.