אנדרואיד 11 מציגה את הרעיון של תמונת הקרנל הגנרית ומחיצת האתחול של הספק. מחיצת האתחול של הספק מאחסנת מודולי ליבה התואמים ל-GKI, ונטענת על ידי init בשלב הראשון. מודולי ליבה לפני שחרורו של אנדרואיד 11 מאוחסנים גם במחיצות הספק ו-ODM, ונטענים על ידי תהליכי הספק.
עבור אנדרואיד 11 ומעלה, ניתן לעדכן את הליבה וכל מודולי הליבה באופן עצמאי משאר המחיצות. כדי לאפשר עדכונים עבור מודולי ליבה המאוחסנים במחיצת הספק (ללא עדכון מחיצת ספק), העבר את כל מודולי מחיצת הספק למחיצה חדשה בשם Vendor DLKM (מודול ליבה הניתן לטעינה דינמית). לאחר מכן תוכל לעדכן מחיצה זו באופן עצמאי. באופן דומה, אתה יכול להעביר את כל מודולי הליבה המאוחסנים במחיצת 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
בנה 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
העתקת מודולי ליבה למחיצה
כדי לבחור את מודולי הליבה שברצונך להעתיק למחיצת 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
לתמונה. ה-build יוצר קובץ 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') יכול לאחר מכן לטעון את מודולי הליבה בהתבסס על הסדר שצוין ב- modules.load
. תהליך הספק יכול גם לטעון את המודולים במועד מאוחר יותר, במידת הצורך.
תיעוד קשור
לתיעוד בנוגע ליצירת מחיצת אתחול של ספק (המכילה את ה-RAMDisk של הספק), עיין ב- Kernel Module Support .