סקירה כללית של מודולי ליבה

ישנם שני סוגים של מודולי ליבה: מודולי GKI אגנוסטיים לחומרה ומודול ספק ספציפי לחומרה. דף זה מספק סקירה כללית של שני סוגי המודולים.

מודולי GKI

מודולים Generic Kernel Image (GKI) משמשים כדי לספק פונקציונליות ליבה שאינה נדרשת לאתחול בנפרד מליבת הליבה הגנרית. עם מודולי GKI, אתה יכול לבחור פונקציונליות ליבה ספציפית לשימוש, ולעתים קרובות מפחית את גודל תמונת הקרנל וצריכת זיכרון זמן ריצה. הקטנת הגודל הופכת את GKI למתאים היטב עבור מכשירי Android Go וגורמי צורה אחרים המוגבלים במשאבים.

מודולי GKI מספקים גם מנגנון המאפשר לספקים לשלב תכונות חדשות במעלה הזרם לאחר אבן הדרך בהקפאת KMI. לא ניתן להחליף קוד מובנה מבלי לבנות תמונה נוספת, בעוד שקוד שנמסר כמודול יכול להיות מוחלף במודול אחר.

מודולי GKI משתמשים בתשתית חתימת זמן הבנייה של הליבה כדי להבדיל בין GKI למודולים אחרים בזמן הריצה. מודולים לא חתומים רשאים להיטען כל עוד הם משתמשים רק בסמלים המופיעים ברשימת ההיתרים או מסופקים על ידי מודולים לא חתומים אחרים.

ישנם שני סוגים לוגיים של מודולי GKI: מודול GKI מוגן ומודול GKI לא מוגן .

מודול GKI מוגן

מודול GKI מוגן מועבר על ידי Google, אינו מוגבל בשום אופן ומתנהג כאילו הוא נבנה עם הליבה לאחר הטעינה. בנוסף, למודולי GKI מוגנים יש את המאפיינים הבאים:

  • למודולי GKI מוגנים יש גישה לסמלי ליבה שאינם של KMI שאינם זמינים למודולי הספק או למודולי GKI לא מוגנים.
  • מודולי GKI מוגנים יכולים לייצא סמלים שהופכים לחלק ממשטח ה-KMI כל עוד סמלים אלה מצוינים ברשימת סמלים.
  • לא ניתן לעקוף מודולי GKI מוגנים על ידי מודולי ספק.

מודול GKI מוגן הוא מחלקת ברירת המחדל של מודולי GKI. כל מודולי GKI נחשבים מוגנים בזמן הקפאת KMI.

מודול GKI לא מוגן

ניתן לעקוף מודול GKI לא מוגן על ידי מודול ספק. לאחר הקפאת KMI, מודול GKI מוגן עשוי להיות מסווג מחדש כלא מוגן אם צוות GKI יחליט שהספקים צריכים לעקוף את מימוש ברירת המחדל עם גרסה הכוללת תכונות חדשות מ-Linux במעלה הזרם. במהדורה הבאה של GKI, מודולים לא מוגנים מסווגים מחדש כמוגנים לאחר שהקוד במעלה הזרם נוחת ב-Android Common Kernel (ACK). מודולי GKI לא מוגנים הם בעלי המאפיינים הבאים:

  • למודולי GKI לא מוגנים יש גישה זהה לסמלים מיוצאים כמו מודולי ספק.
  • מודולי GKI לא מוגנים אינם יכולים לייצא סמלים המיוצאים על ידי מודולי GKI מוגנים.
  • מודולי GKI לא מוגנים חייבים לשמר כל ממשקי KMI כאילו היו חלק מגרעין הליבה.
  • ניתן לעקוף מודולי GKI לא מוגנים על ידי מודולי ספק.

מודולים של ספקים

מודול ספק מסופק על ידי שותפים ליישום SoC ופונקציונליות ספציפית למכשיר. כל מודול ליבה קיים שאינו מסופק כחלק מליבת GKI יכול להיות מסופק כמודול ספק.

מכיוון שאחת המטרות העיקריות של פרויקט GKI היא למזער קוד ספציפי לחומרה בליבת הליבה, הספקים יכולים לצפות שגרעין ה-GKI לא יכלול מודולים שמנהלים בבירור את החומרה שלהם. לדוגמה, הספק ABC Inc יכול לצפות שתצורות כגון CONFIG_ABC_SOC_SUPPORT לא יופעלו כמודולי GKI מובנים או ניתנים לטעינה ללא תמיכתם.

אם מנהל התקן או מסגרת של ליבה קיים ב-ACK, אך אינו נמסר כחלק מהקרנל של GKI, הספקים יכולים לשנות את מנהל ההתקן ולספק אותו כמודול ספק. לא מומלץ לבצע שינויים כאלה עבור מודולים שאינם ספציפיים לספק מכיוון שאותה פונקציונליות עשויה להיות מסופקת עם ליבת GKI במהדורה עתידית. כאשר ליבת GKI מכילה פונקציונליות המסופקת על ידי מודול ספק, מודול הספק לא ייטען. לדוגמה, CONFIG_GREYBUS לא מוגדר עבור GKI ב-Android 11, כך שספקים עשויים לספק מודולים של ספק גרייבוס. עם זאת, CONFIG_GREYBUS עשוי להיות מופעל כמודול GKI מובנה או מודול ב-Android 12, ובמקרה זה מודולי ספק greybus לא ייטענו. שיטה מומלצת היא להשתמש בגרסה הקודמת של מנהלי התקנים שאינם ספציפיים לספק אם הם מסופקים כמודולים של ספקים.

אתה יכול לספק מודולי ספק vendor או בתמונת vendor_boot . מודולים הנדרשים בשלב מוקדם בתהליך האתחול חייבים להיות ב- vendor_boot . יש עלות זמן אתחול הקשורה לטעינת מודולים מ- vendor_boot .