يقدّم نظام التشغيل Android 11 مفهوم "صورة kernel العامة" وقسم التمهيد الخاص بالمورّد. يخزِّن قسم التمهيد الخاص بالمورّد وحدات برمجية للنواة متوافقة مع GKI، ويتم تحميلها من خلال مرحلة الإعداد الأولى. يتم أيضًا تخزين وحدات النواة (Kernel) السابقة لإصدار Android 11 في أقسام 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
يمكنك الاطّلاع على دعم وحدة النواة للحصول على مزيد من التفاصيل حول ملفات إعداد وحدات النواة.
تقديم الدعم
إنّ إنشاء القسمَين 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
نسخ وحدات النواة في قسم
لاختيار وحدات النواة التي تريد نسخها إلى قسم "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
.
وبالمثل، لاختيار وحدات النواة التي تريد نسخها إلى القسم 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.