שאלות נפוצות בנושא הליבה של Android

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

האם אפשר לשנות את רשימות הסמלים של ממשק מודול הליבה (KMI) בליבה יציבה?

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

האם אפשר לשנות מבנים שמשמשים מודולים של ספקים בליבה יציבה?

לא ניתן לשנות מבנים שהם חלק מממשק KMI בליבות עם KMI קפוא. לפני הקפאת ה-KMI, אפשר לשנות את המבנים האלה.

האם אפשר לשנות את הליבה כל עוד לא משבשים את התאימות של הקובץ הבינארי או של קובץ המקור?

אפשר לבצע שינויים שלא משפיעים על ה-KMI, כפי שמתואר בקטע תיקונים ספציפיים ל-Android.

איך GKI מטפל בהגדרת הליבה?

מידע על הגדרת הליבה זמין במאמר שינויים ב-gki_defconfig.

איך מטפלים בתיקוני באגים במקור (upstream) עבור מחיקה והחלפה של מודולים קיימים ב-GKI?

אם אתם יוצרים מודול של ספק שמבוסס על מנהל התקן ב-Android Common Kernel‏ (ACK), אתם אחראים לוודא שתיקוני באגים מ-upstream ומ-ACK מועברים למודול. באופן כללי, מומלץ להשתמש בליבה של GKI ובמודולים של GKI ללא שינוי, כדי ש-Google תוכל לספק את העדכונים האלה באופן עקבי.

האם יש בדיקות ספציפיות ל-GKI?

יש בדיקות של Vendor Test Suite‏ (VTS) שמאמתות שהגרסה המאומתת של GKI מותקנת, וגם לאכיפה של הדרישות של GKI לכל גרסה. לדוגמה, יש בדיקות VTS של Android 12 לכותרת אתחול גרסה 3, וגם כדי לאמת את קיומם של המחיצות הנדרשות במכשיר שבו פועל ליבה מגרסה 5.10.

איך יוצרים את קובץ הפלח של defconfig בפרויקט ל-builds של מכשירים?

במכשירים רבים שתואמים ל-GKI נעשה שימוש בקטעי תצורה כדי לתאר את אפשרויות התצורה הנדרשות, בנוסף ל-gki_defconfig, כדי ליצור את המודולים של הספק. דוגמאות לקוד שמשויך ל-ACK כוללות את Cuttlefish ואת DB845c. אי אפשר להימנע מבדיקה ידנית מסוימת של אפשרויות ההגדרה כדי לבצע אופטימיזציה של הקוד, אבל scripts/diffconfig ממקורות הליבה שימושי להשוואה בין התוצאות של gki_defconfig ושל gki_defconfig+device.fragment.

האם יש פתרון עקיף לבעיה שבה modprobe מתייחס ל-- ול-_ כאל ערכים זהים?

דף העזרה של modprobe מכיל את התיאור הזה: "modprobe מוסיף או מסיר באופן חכם מודול בליבה של Linux: לתשומת ליבכם, למען הנוחות, אין הבדל בין _ לבין - בשמות של מודולים (מתבצעת המרה אוטומטית של קו תחתון)." צוות GKI פועל בהתאם למוסכמה הסטנדרטית של ה-upstream, ולכן כלים של ספקים או מוסכמות למתן שמות של מודולים צריכים להביא בחשבון את ההקפדה הזו.

איך מפעילים את debugfs לשימוש פנימי?

פרטים על הפעלת debugfs מופיעים במאמר תכונות תוצאות ניפוי באגים פולשניות במורד הזרם.

איך אפשר לפתור אי-התאמה בין ABIs בליבה של GKI כשהגדרת מודול ספציפית מופעלת?

חוסר התאמה בין ABIs של הליבה של GKI לבין תצורת המודול מייצג תלות משתמעת בתצורת המודול, שבה הפעלת מודול גורמת ליצירת קובץ תצורה בינארי בתמונת הליבה שמתקבלת. פנו לצוות הליבה של Android‏ (kernel-team@android.com) כדי לקבוע את הדרך הנכונה. אחרי שמגדירים את רשימת הסמלים, יוצרים באג ב-Issue Tracker ומעלים שינוי לרשימת הסמלים.

יש לי מכשירי GKI 1.0 תואמים בשטח שפועל בהם הליבה 5.4 שהושקה עם Android 11 ו-12. אילו אפשרויות לשדרוג הליבה זמינות, ואיך אפשר לבדוק את המכשירים האלה כשמשדרגים ל-Android 12 ו-13?

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

דוגמה 1: משתמש עם מכשיר שהושק עם Android 11 עם הליבה android11-5.4 (GKI 1.0) יכול לבחור באחת מהאפשרויות הבאות כשיעלה ל-Android 12:

  • שדרוג לליבה (kernel) של android12-5.10 GKI 2.0 (מומלץ מאוד).

  • משאירים את הליבה android11-5.4.

  • משדרגים לליבה android12-5.4.

דוגמה 2: משתמש עם מכשיר שהושק עם Android 12 עם הליבה android12-5.4 או android12-5.10 יכול לבחור באחת מהאפשרויות הבאות כשיעלה ל-Android 13:

  • שדרוג לליבה של GKI 2.0 בגרסה android13-5.10 או android13-5.15 (מומלץ מאוד).

  • משאירים את הליבה android12-5.4 GKI 1.0.

  • משאירים את הליבה android12-5.10 GKI 2.0.

ספציפית לבדיקת תאימות ל-Treble, מומלץ לבצע אחת מהפעולות הבאות:

  • מחליפים את הליבה של השותף בליבה המאושרת של GKI 1.0 (android11-5.4 או android12-5.4).

  • שולחים עם הליבה המאושרת של GKI 2.0 (android12-5.10, ‏ android13-5.10 או android13-5.15), בהתאם לבחירה שלכם.

אפשר להוריד את גרסאות ה-build של GKI 1.0 מGeneric Kernel Image (GKI) 1.0 Release Builds

אפשר להוריד גרסאות build של GKI 2.0 מגרסאות build של Generic Kernel Image‏ (GKI).