במסמך הזה מפורטות תשובות לשאלות נפוצות על ליבת Android, שנקראת גם ליבת Generic Kernel Image (GKI). אם אתם לא מכירים את GKI ואת המינוח של ליבת GKI, תוכלו לעיין בסקירה הכללית של ליבת המערכת.
האם אפשר לשנות רשימות של סמלי Kernel Module Interface (KMI) בקרנל יציב?
אפשר להוסיף שינויים שלא משפיעים על KMI קיים לליבות שהוקפאו. השינויים האלה כוללים פונקציות חדשות לייצוא ורשומות חדשות ברשימת הסמלים. פרטים נוספים מופיעים במאמר בנושא ניהול רשימות של סמלים.
האם אפשר לשנות מבנים שמשמשים מודולים של ספקים בליבת מערכת יציבה?
אי אפשר לשנות מבנים שמהווים חלק מממשק KMI בקרנלים עם KMI קפוא. לפני ההקפאה של KMI, אפשר לשנות את המבנים האלה.
האם אפשר לשנות את הליבה כל עוד לא פוגעים בתאימות הבינארית או בתאימות המקור?
שינויים שלא משפיעים על KMI אפשר לבצע כמו שמתואר בתיקונים ספציפיים ל-Android.
איך GKI מטפל בהגדרת ליבת המערכת?
מידע על הגדרת ליבת המערכת זמין במאמר שינויים ב-gki_defconfig.
איך מטפלים בתיקוני באגים במעלה הזרם להחלפות של מודולי GKI קיימים?
אם יוצרים מודול ספק שמבוסס על דרייבר ב-Android Common Kernel (ACK), צריך לוודא שתיקוני באגים מ-upstream ומ-ACK מועברים למודול. בדרך כלל, הכי טוב להשתמש בקרנל GKI ובמודולים של GKI ללא שינוי, כדי ש-Google תספק את העדכונים האלה באופן עקבי.
האם יש בדיקות ספציפיות ל-GKI?
יש בדיקות של Vendor Test Suite (VTS) שמאמתות שגרסת GKI מאושרת מותקנת, וגם אוכפות את הדרישות של GKI לכל מהדורה. לדוגמה, יש בדיקות VTS של Android 12 לכותרת האתחול v3 ולאימות קיומן של מחיצות נדרשות במכשיר שפועל בו ליבת 5.10.
איך יוצרים את קובץ המקטע defconfig של הפרויקט בשביל גרסאות build של מכשירים?
במכשירים רבים שתואמים ל-GKI נעשה שימוש בקטע הגדרה כדי לתאר את אפשרויות ההגדרה הנדרשות, בנוסף ל-gki_defconfig
, כדי ליצור את מודולי הספק.
דוגמאות שכלולות בבסיס הקוד של ACK הן Cuttlefish ו-DB845c.
אין דרך להימנע מבדיקה ידנית של אפשרויות ההגדרה כדי לבצע אופטימיזציה של הפראגמנט, אבל scripts/diffconfig
ממקורות הליבה
שימושי להשוואה בין התוצאות של gki_defconfig
ושל
gki_defconfig+device.fragment
.
האם יש פתרון עקיף לבעיה שבה הפקודה modprobe מתייחסת לסימנים '-' ו-'_' כאל סימנים זהים?
בדף ה-man של modprobe מופיע התיאור הבא: "modprobe
מוסיף או מסיר מודול מליבת לינוקס בצורה חכמה: חשוב לציין שלנוחותכם, אין הבדל בין _ לבין - בשמות של מודולים (מתבצעת המרה אוטומטית של קו תחתון)". צוות GKI פועל בהתאם למוסכמה הסטנדרטית של upstream, ולכן כלי ספקים או מוסכמות למתן שמות למודולים צריכים להתחשב בכך.
איך מפעילים את debugfs לשימוש פנימי?
פרטים על הפעלת debugfs מופיעים במאמר בנושא תכונות פולשניות לניפוי באגים במורד הזרם.
איך אפשר לפתור בעיות של אי התאמה בין ממשקי ABI בקרנל GKI עם הגדרת מודול ספציפית שמופעלת?
אי התאמה בין ממשקי ABI בין ליבת GKI לבין הגדרת המודול מייצגת תלות בהגדרת מודול מרומזת, שבה הפעלת מודול גורמת ליצירת הגדרת קובץ בינארי בתמונת הליבה שמתקבלת. כדי לקבל מידע על המשך הפעולה, אפשר לפנות לצוות של ליבת Android (kernel-team@android.com). אחרי שקובעים את רשימת הסמלים, יוצרים באג בכלי למעקב אחרי בעיות ומעלים שינוי לרשימת הסמלים.