גרעינים נפוצים של אנדרואיד

גרעינים נפוצים של AOSP (הידועים גם כגרעיני אנדרואיד נפוצים או ACKs ) נמצאים במורד הזרם של ליבות kernel.org וכוללים תיקונים המעניינים את קהילת אנדרואיד שלא מוזגו לתוך ליבות מרכזיות או תמיכה לטווח ארוך (LTS). תיקונים אלה יכולים לכלול:

  • יציאות אחוריות ומבחר דובדבן של פונקציונליות במעלה הזרם הדרושים לתכונות אנדרואיד
  • תכונות מוכנות למכשירי אנדרואיד אך עדיין בפיתוח במעלה הזרם (לדוגמה, אופטימיזציות של מיקום משימות Energy Aware Scheduler).
  • תכונות ספק/OEM שימושיות עבור שותפי מערכת אקולוגית אחרים (לדוגמה, sdcardfs).

android-mainline הוא ענף הפיתוח העיקרי לתכונות אנדרואיד. Linux mainline מתמזג android-mainline בכל פעם שלינוס טורוואלדס מפרסם מועמד לשחרור או שחרור. לפני 2019, ליבות אנדרואיד נפוצות נבנו על ידי שיבוט ליבת ה-LTS שהוכרזה לאחרונה והוספת התיקונים הספציפיים לאנדרואיד. תהליך זה השתנה בשנת 2019 כדי להסיע את הליבה המשותפת החדשה של אנדרואיד מ- android-mainline . הדגם החדש הזה נמנע מהמאמץ המשמעותי להעביר ולבדוק תיקוני אנדרואיד על ידי השגת אותה תוצאה בהדרגה. android-mainline עובר בדיקות רציפות משמעותיות, דגם זה מבטיח קרנל איכותי מיום פרסומו.

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

ענפי ליבה נפוצים אחרים מקבלים מיזוגים רגילים מגרעין ה-LTS המשויך להם. מיזוגים אלה מבוצעים בדרך כלל מיד לאחר פרסום המהדורה של ה-LTS. לדוגמה, כאשר לינוקס 4.19.64 פורסם, הוא מוזג לתוך הגרעינים הנפוצים 4.19 (לדוגמה, android-4.19-q ). מומלץ מאוד לשותפים להתמזג באופן קבוע מהגרעינים הנפוצים לגרעיני המוצרים שלהם כדי להישאר מעודכנים בתיקוני באגים ספציפיים ל-LTS ו-Android.

סניף ליבת ACK KMI

לגרעיני GKI יש ממשק מודול ליבה יציב. ה-KMI מזוהה באופן ייחודי על ידי גרסת הליבה וגרסת פלטפורמת אנדרואיד, כך שהענפים נקראים <androidRelease>-<kernel version> . לדוגמה, ליבת 5.4 GKI עבור אנדרואיד 11 נקראת android11-5.4. עבור אנדרואיד 12 יש שני גרעיני GKI נוספים, android12-5.4 ו- android12-5.10 .

סניפי גרעין קינוחים מורשת

גרעיני קינוח מדור קודם נוצרו כדי להבטיח שפיתוח תכונות חדשות לא יפריע למיזוג מהגרעין הנפוץ של אנדרואיד. הסניפים נוצרו לפני שחרור הקינוח הקשור וזוכים למיזוגים קבועים מ-LTS, אך ללא תכונות חדשות. לדוגמה, android-4.9-q מקבל מיזוגים מסניף LTS 4.9.y.

אם גרסת ליבה לא הייתה ליבת השקה, לא נוצרה ליבת קינוח, אבל הגרעין המשויך למהדורת הפלטפורמה האחרונה תקף לשדרוג למהדורות עתידיות של פלטפורמת אנדרואיד. לדוגמה, android-4.9-q היה האחרון מבין סניפי הקינוחים android-4.9* , ולכן הוא נתמך ונבדק עם מהדורת הפלטפורמה המקורית שלו, אנדרואיד 10. הוא נתמך ונבדק גם עם מהדורות הפלטפורמה התומכות בשדרוגים של מכשירים עם 4.9 גרעינים: אנדרואיד 11 ואנדרואיד 12.

מכיוון שסכימת השמות לקינוח עבור מהדורות פלטפורמת אנדרואיד בוטלה עם אנדרואיד 10, גרסאות הקינוח האחרונות שהיו נקראות android-4.14-r ו- android-4.19-r נקראו במקום זאת android-4.14-stable ו- android-4.19-stable .

גרעיני הקינוח מוחלפים על ידי גרעיני GKI שמתחילים באנדרואיד 11, כך שהרשימה המלאה של גרעיני הקינוח הנתמכים נמצאת בטבלה זו.

שחרור פלטפורמת אנדרואיד גַרעִין נתמך עד
אנדרואיד 10 android-4.9-q
android-4.14-q
android-4.19-q
ינואר 2023
אנדרואיד 11 android-4.14-stable
android-4.19-stable
ינואר 2024
דצמבר 2024

סניפים של גרעין גרעין מדור קודם

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

בכל חודש כאשר עלון האבטחה של אנדרואיד מתפרסם, ליבות אלו מתעדכנות עם יציאות אחוריות של התיקונים המצוטטים בעלון הרלוונטיים לגרעיני הקודקוד ולקרנלים הנפוצים של אנדרואיד. הם לא מקבלים תיקוני LTS, כך שמספר הגרסה המשני לא משתנה לעולם. הם אינם מכילים יציאות אחוריות עבור תיקונים ספציפיים לספק.

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

לכן, הרשימה המלאה של 14 גרעיני גרסאות מוצגת בטבלה זו, ואף אחד לא יתווסף.

שחרור פלטפורמת אנדרואיד גַרעִין נתמך עד
אנדרואיד 10 android-4.9-q-release
android-4.14-q-release
android-4.19-q-release
ינואר 2023

תכונה והשקה גרעינים

כל מהדורת פלטפורמת אנדרואיד תומכת בהשקת מכשירים חדשים המבוססים על כל אחת משלוש גרסאות ליבת לינוקס. כפי שמוצג בטבלה למטה, ליבות ההשקה עבור אנדרואיד 11 הן android-4.14-stable , android-4.19-stable ו- android11-5.4 .

מכיוון שבדרך כלל לא נדרשים שדרוגי ליבה בעת עדכון מהדורת הפלטפורמה, עדיין ניתן להשתמש בגרעין שחסרות בהן את התכונות העדכניות ביותר עבור מהדורת פלטפורמה כדי להפעיל מכשירים. לכן ניתן להשתמש בגרעין שתוכננו עבור אנדרואיד 10, כמו android-4.19-q , במכשירים גם לאחר שדרוג מהדורת הפלטפורמה לאנדרואיד 11. החל מ-Android 12, יהיו פחות גרעיני תכונות מאשר גרעיני השקה כדי להגביל את מספר KMIs יציבים שיש לתמוך בהם.

שחרור פלטפורמת אנדרואיד הפעל גרעינים גרעיני תכונה
Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10 1
android14-6.1
android14-5.15
Android 13 (2022) android13-5.15
android13-5.10
android12-5.10 1
android12-5.4 1
android11-5.4 1
android13-5.15
android13-5.10
Android 12 (2021) android12-5.10
android12-5.4
android11-5.4 1
android-4.19-stable
android12-5.10
android12-5.4
אנדרואיד 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android11-5.4
android-4.19-stable
android-4.14-stable
אנדרואיד 10 (2019) android-4.19-q
android-4.14-q
android-4.9-q

android-4.19-q
android-4.14-q
android-4.9-q

1 עשויות לחול הגבלות נוספות אם ה-BSP המשויך עודכן עבור מהדורת הפלטפורמה. במונחים כלליים יותר, מספר מהדורת Android של הליבה חייב להיות גבוה או שווה לגרסת היעד של FCM . ראה אובייקט ממשק ספק - התאמת ענפי ליבה לפרטים.

היררכיית גרעין נפוצה

סניף מ-android-mainline

הרמה העליונה של היררכיית הגרעין הנפוצה מוצגת באיור 1.

יצירת גרעינים נפוצים מהקרנל הראשי של אנדרואיד

איור 1. יצירת גרעינים נפוצים מהקרנל הראשי של אנדרואיד

שימו לב שהגרעין המשותף החדש של אנדרואיד android12-5.10 היה מסועף מ- android-mainline בשנת 2020. בשנת 2021, כאשר הוכרז ה-LTS הבא, android13-5.15 היה מסועף מ- android-mainline .

כפי שמוצג באיור 1, כל גרסת ליבה היא הבסיס לשני גרעיני GKI. לדוגמה, שני הגרעינים v5.4 הם android11-5.4 ו- android12-5.4 , שניהם גרעיני תכונה עבור מהדורות הפלטפורמה בהתאמה. זה יהיה המקרה גם עבור 5.10; android12-5.10 נוצר כאשר ה-LTS הוכרז ו- android13-5.10 יסתעף מ- android12-5.10 בציון הדרך המלא של תכונת הליבה באביב 2021 כדי לאפשר פיתוח תכונות עבור אנדרואיד 13.

מחזור החיים של סניף ACK KMI

מחזור החיים של סניף ACK KMI מוצג להלן באיור 2.

5.10 מחזור חיי סניף ACK KMI

איור 2. 5.10 מחזור החיים של ענף ACK KMI

כדי להבהיר את תהליך הפיתוח ומחזור חיי הסניף, איור 2 מתמקד בסניפי ACK KMI עבור 5.10.

כל ענף ACK KMI עובר במחזוריות של שלושה שלבים המצוינים באיור 2 בצבעים שונים בכל ענף. כפי שמוצג, LTS מתמזג באופן קבוע ללא קשר לשלב.

שלב הפיתוח

כאשר הוא נוצר, סניף ACK KMI נכנס לשלב הפיתוח ( dev באיור 2), והוא פתוח לתרומות תכונות עבור מהדורת פלטפורמת אנדרואיד הבאה. באיור 2, android12-5.10 נוצר כאשר 5.10 הוכרז כגרעין ה-LTS החדש במעלה הזרם. הענף השני של ACK KMI עבור גרסת ליבה עשוי להיווצר מוקדם יותר כדי לאפשר פיתוח של המהדורה הבאה. באיור 2, android13-5.10 נוצר כאשר android12-5.10 יוצא משלב הפיתוח.

שלב הייצוב

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

שלב קפוא של KMI

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

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

לדוגמה, שינוי המוסיף שדה למבנה המשמש ליבה רגילה של ממשק KMI אינו מותר מכיוון שהוא משנה את הגדרת הממשק:

struct foo {
  int original_field1;
  int original_field2;
  int new_field;  // Not allowed
};

int do_foo(struct foo &myarg)
{
  do_stuff(myarg);
}
EXPORT_SYMBOL_GPL(do_foo);

עם זאת, הוספת פונקציה חדשה היא בסדר:

struct foo2 {
  struct foo orig_foo;
  int new_field;
};

int do_foo2(struct foo2 &myarg)
{
  do_stuff2(myarg);
}
EXPORT_SYMBOL_GPL(do_foo2);

במשך כל החיים של ליבת GKI, נשמרת תאימות לאחור עם מרחב המשתמש, כך שניתן יהיה להשתמש בליבה בבטחה עבור מהדורת פלטפורמת האנדרואיד שאיתה הושק המכשיר. בדיקה מתמשכת עם מהדורות קודמות מבטיחה שתאימות נשמרת. אז באיור 2, הקרנל android12-5.10 יכול לשמש עבור מכשירי אנדרואיד 12 ומכשירי אנדרואיד 13. מכיוון שהמהדורה של פלטפורמת אנדרואיד תואמת גם לגרסאות קודמות, ניתן להשתמש בקרנל android12-5.4 עבור מכשירי אנדרואיד 13 לצורך השקה או שדרוג.

כאשר נכנסים לשלב הקפוא, הסניף מתויג ב-git עם מחרוזת גרסת KMI המכילה את מספר הדור של KMI. לדוגמה, כאשר android11-5.4 הוקפא, הוא תויג במחרוזת גרסת KMI 5.4-android11-0 כאשר ה 0 העוקב הוא מספר דור ה-KMI. אם יש בעיית אבטחה או אירוע אחר שדורש קבלת תיקון לשינוי KMI, מספר הדור של KMI יוגדל והסניף מתויג מחדש. לדוגמה, אם שינוי כזה יתקבל ל- android11-5.4 , הסניף יתויג בגרסת KMI החדשה, 5.4-android11-1 . ניתן למצוא את דור ה-KMI הנוכחי באמצעות הפקודה uname :

$ uname -r
5.4.61-android11-0-00153-ga972f59040e4

המספר לאחר שחרור הפלטפורמה הוא דור ה-KMI (0 במקרה זה).

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

תאימות בין גרעינים

דרישות התאימות בין ליבות באותה משפחת LTS משתנות החל מהגרעין החדשים של GKI.

גרעיני GKI

גרעיני GKI שומרים על תאימות לאחור עם כל מהדורות פלטפורמת אנדרואיד שתמכו בגרסת הליבה. בנוסף, המהדורות של פלטפורמת אנדרואיד תואמות לאחור עם ליבות GKI ממהדורות קודמות. אז אתה יכול להשתמש בבטחה בקרנל android12-5.4 שפותח עבור אנדרואיד 12 במכשירים המריצים אנדרואיד 13. התאימות מאומתת באמצעות בדיקות VTS ו-CTS מתמשכות של ליבות GKI עם כל המהדורות הנתמכות.

ה-KMI יציב כך שניתן לעדכן את הליבה מבלי לדרוש בנייה מחדש של מודולי הליבה בתמונת הספק.

תאימות KMI אינה נשמרת בין גרעיני GKI שונים. כך, למשל, לא ניתן להחליף android12-5.10 בליבת android13-5.10 מבלי לבנות מחדש את כל המודולים.

ליבות GKI נתמכות עבור ההפצות הראשוניות והאחריות בלבד. הם אינם נתמכים עבור מהדורות ישנות יותר. אז ליבת android13-5.10 אינה נתמכת במכשירי אנדרואיד 12.

גרעינים מדור קודם

גרעיני הקינוח מדור קודם ( *-q ו- *-stable ) אינם תואמים לאחור בכל מהדורות של פלטפורמת אנדרואיד, אך גרעינים משתי הגרסאות הקודמות של פלטפורמת אנדרואיד נתמכים לשדרוג. לכן, מכשיר שהושק עם אנדרואיד 10 באמצעות ליבה המבוססת על android-4.19-q יכול להמשיך להשתמש בקרנל android-4.19-q בעת שדרוג לאנדרואיד 2020, או לעדכן את הקוד הספציפי לספק כדי לתמוך android-4.19-stable .

מטריצת תאימות

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

שחרור פלטפורמת אנדרואיד גרעינים נתמכים לשדרוג גרעינים נתמכים להפעלה
Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
Android 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
Android 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
אנדרואיד 11 (2020) android11-5.4
android-4.19-stable
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.14-p (EOL)
android-4.9-q (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android11-5.4
android-4.19-stable
android-4.14-stable
אנדרואיד 10 (2019) android-4.14-stable
android-4.14-p (EOL)
android-4.9-p (EOL)
android-4.9-o (EOL)
android-4.4-p (EOL)
android-4.4-o (EOL)
android-3.18 (EOL)
android-4.14-stable
android-4.19-q (EOL)
android-4.14-q (EOL)
android-4.9-q (EOL)

תמיכה בתקופות חיים ובתיקוני אבטחה

גרעינים נפוצים של אנדרואיד נתמכים עד שהגרעין המשויך ל-LTS או מהדורת Android Platform לא נתמכת עוד. בעוד שגרעין נתמך, הוא ממשיך לקבל מיזוגי LTS ממעלה הזרם ותיקוני באגים עבור קוד ספציפי לאנדרואיד. תיקונים אלה כוללים את כל תיקוני האבטחה של הליבה המצוטטים בעלוני האבטחה החודשיים של אנדרואיד , הרלוונטיים לגרעיני אנדרואיד הנפוצים.

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

בדיקות ליבה נפוצות

הגרעינים הנפוצים נבדקים עם מספר מערכות CI בנוסף לבדיקות במורד הזרם על ידי ספקים.

מבחן פונקציונלי ליבת לינוקס

בדיקות פונקציונליות ליבת לינוקס (LKFT) יוזמות חבילות בדיקה שונות כולל kselftest, LTP, VTS ו-CTS על קבוצה של התקני arm32 ו-arm64 פיזיים. תוצאות בדיקה אחרונות ניתן למצוא כאן .

בדיקת KernelCI

בדיקות בנייה-ואתחול של KernelCI מופעלות בכל פעם שתיקון חדש מחויב לענף ליבה משותף. כמה מאות תצורות בנייה נבדקות ומאוחלות בלוחות שונים. תוצאות אחרונות עבור גרעיני אנדרואיד ניתן למצוא כאן .

בדיקות אנדרואיד מראש ואחרי הגשה

בדיקות שליחה מראש משמשות למניעת הכנסת כשלים לגרעין הנפוצים של אנדרואיד. את סיכום תוצאות הבדיקה ניתן למצוא בלשונית 'בדיקות' של שינוי הקוד ב- Android נפוץ ליבה gerrit.

בדיקת אנדרואיד לאחר שליחה מבוצעת על רכיבים חדשים שפורסמו בסניפי ליבה נפוצים של אנדרואיד כאשר תיקונים חדשים מחויבים לענף ליבה משותף של אנדרואיד ב- ci.android.com . על ידי הזנת aosp_kernel כשם סניף חלקי ב- ci.android.com , אתה רואה רשימה של ענפי ליבה עם תוצאות זמינות. לדוגמה, תוצאות עבור android-mainline ניתן למצוא כאן . בעת לחיצה על מבנה מסוים, תמצא סטטוס בדיקה בלשונית Test Results .

הבדיקות שהוגדרו על ידי מיפוי בדיקות עם kernel-presubmit של קבוצת בדיקה בעץ המקור של פלטפורמת אנדרואיד יופעלו כ-presubmit עבור ענפי ליבת אנדרואיד. לדוגמה, מעקב אחר תצורה ב- test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING יאפשר את vts_kernel_proc_file_api_test כבדיקת prebumit בכניסה לקוד הקרנל הנפוץ של Android.

{
  "kernel-presubmit": [
    {
      "name": "vts_kernel_proc_file_api_test"
    }
  ]
}

בדיקה של 0 ימים

בדיקת 0-יום מבצעת בדיקות תיקון אחר תיקון בכל ענפי הליבה הנפוצים של אנדרואיד כאשר טלאים חדשים מתחייבים. נערכות מבחני אתחול, תפקוד וביצועים שונים. הצטרף לקבוצה הציבורית cros-kernel-buildreports

מטריצת בדיקה

קרנל משותף של אנדרואיד פלטפורמת אנדרואיד יוצאת סוויטות מבחן
רָאשִׁי 14 13 12 11 10 LKFT KernelCI שלח מראש שלח פוסט 0-יום
android-mainline
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.19-stable
android-4.14-stable

תרום לגרעין נפוצות של אנדרואיד

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

שלח טלאים ל- Gerrit ופעל בהתאם להנחיות התרומה הללו.