ב-Android 11 אנחנו משיקים את המושג 'תמונת ליבה כללית' ואת מחיצת האתחול של הספק. במחיצה של אתחול הספק מאוחסנים מודולים של ליבה שתואמים ל-GKI, והיא נטענת על ידי תהליך האינטליגנציה של השלב הראשון. מודולי ליבה לפני השקת הגרסה של Android 11 מאוחסנים גם במחיצות של ספקים ו-ODM, ונטענים על ידי תהליכי הספק.
ב-Android מגרסה 11 ואילך, אפשר לעדכן את הליבה ואת כל המודולים שלה בנפרד משאר המחיצות. כדי לאפשר עדכונים של מודולי הליבה שמאוחסנים במחיצה של הספק (ללא עדכון של מחיצה של הספק), מעבירים את כל המודולים של מחיצה של הספק למחיצה חדשה שנקראת Vendor DLKM (מודול ליבה שניתן לטעינה באופן דינמי). לאחר מכן תוכלו לעדכן את המחיצה באופן עצמאי. באופן דומה, אפשר להעביר את כל המודולים של הליבה שמאוחסנים במחיצה של ODM למחיצה חדשה שנקראת ODM DLKM. אפשר לעדכן את המחיצה הזו גם בנפרד.
מיקום המחיצה
המחיצות vendor_dlkm
ו-odm_dlkm
נמצאות במחיצה הסופר כמחיצה דינמית נוספת.
ספק_dlkm תוכן ב- /vendor/lib/Modules
- מודולים של ליבה (kernel) של ספק
modprobe
קובצי תצורה- קובץ
modules.load
התוכן של odm_dlkm ב- /odm/lib/modules
- מודולים של ליבה (kernel) של ODM
modprobe
קובצי תצורה- קובץ
modules.load
מידע נוסף על קובצי תצורה של מודול ליבה זמין במאמר תמיכה במודול ליבה.
בניית תמיכה
הבנייה של vendor_dlkm
ו-odm_dlkm
היא תהליך דומה לתהליך היצירה של מחיצות דינמיות אחרות.
דוגמה ל-build של 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 Add vendor_dlkm
to CF.
vendor_dlkm /vendor_dlkm ext4 noatime,ro,errors=panic wait,logical,first_stage_mount,slotselect,avb
דוגמה ל-build של 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 Add odm_dlkm
to 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
.
בזמן ה-build, המודולים שמפורטים ב-BOARD_VENDOR_KERNEL_MODULES
מותקנים ב-$ANDROID_PRODUCT_OUT/vendor_dlkm/lib/modules
. נוצר קישור סימבולי ב-/vendor/lib/modules
שמוביל אל /vendor_dlkm/lib/modules
.
באופן דומה, כדי לבחור את מודולי הליבה שרוצים להעתיק למחיצה odm_dlkm
, צריך לרשום אותם ב-BOARD_ODM_KERNEL_MODULES
. גרסת ה-build של הפלטפורמה מריצה depmod
במודולים ומעתיקה את קובצי הפלט של depmod
לתמונה.
תהליך ה-build יוצר קובץ modules.load
ושומר אותו בתמונה.
הקובץ הזה מכיל את כל המודולים שמפורטים ב-BOARD_ODM_KERNEL_MODULES
.
אם רוצים לשנות את התוכן של modules.load
, אפשר לציין זאת ב-BOARD_ODM_KERNEL_MODULES_LOAD
.
בזמן ה-build, המודולים שמפורטים ב-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
, בהתאמה. במקרה כזה, קישורי ה-symlink ב-/vendor/lib/modules
וב-/odm/lib/modules
יהיו זמינים.
לאחר מכן, תהליך של ספק (כמו סקריפט .rc
) יכול לטעון את מודולי הליבה לפי הסדר שצוין ב-modules.load
. תהליך הספק יכול גם לטעון את המודולים בשלב מאוחר יותר, אם יש צורך.
מסמכים קשורים
לפרטים על יצירת מחיצת אתחול של ספק (שמכילה את RAMDisk של הספק), עיינו בתמיכה במודול ליבה.