שאלות נפוצות בנושא הליבה של 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 לכותרת אתחול v3 ולאימות קיומם של המחיצות הנדרשות במכשיר שפועל בו ליבה מגרסה 5.10.

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

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

האם יש דרך לעקוף את modprobe הטיפול ב- – וב- _ כשווי-ערך?

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

איך מפעילים ניפוי באגים לשימוש פנימי?

למידע נוסף על הפעלה של ניפוי באגים, ראו תכונות מפריעות של ניפוי באגים ב-downstream.

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

חוסר התאמה בין ממשקי ABI של הליבה של 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:

  • לשדרג ל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 2.0 מגרסאות build של Generic Kernel Image‏ (GKI).