הפרויקט Generic Kernel Image (GKI).

ליבות אנדרואיד נפוצות (ACKs) הן הבסיס לכל ליבות מוצרי אנדרואיד. גרעיני הספק והמכשיר נמצאים במורד ה-ACKs. ספקים מוסיפים תמיכה עבור SoCs והתקנים היקפיים על ידי שינוי קוד המקור של הליבה והוספת מנהלי התקנים. שינויים אלה יכולים להיות נרחבים עד כדי כך שעד 50% מהקוד שפועל במכשיר הוא קוד מחוץ לעץ ואינו מ-Linux במעלה הזרם או מגרעיני AOSP נפוצים.

לפיכך, ליבת התקן מורכבת מ:

  • במעלה הזרם: ליבת לינוקס מ- kernel.org
  • AOSP: תיקונים נוספים ספציפיים לאנדרואיד מגרעיני AOSP נפוצים
  • ספק: תיקוני הפעלה ואופטימיזציה של SoC וציוד היקפי של ספקים
  • OEM/מכשיר: מנהלי התקנים נוספים והתאמות אישיות

כמעט לכל מכשיר יש ליבה מותאמת אישית. זהו פיצול ליבה.

היררכיית ליבת אנדרואיד מובילה לפיצול

איור 1. היררכיית ליבת אנדרואיד מובילה לפיצול

עלויות הפיצול

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

עדכוני אבטחה דורשים עבודה

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

קשה למזג עדכונים נתמכים לטווח ארוך

המהדורות הנתמכות לטווח ארוך (LTS) כוללות תיקוני אבטחה ותיקוני באגים קריטיים אחרים. הישארות מעודכנת במהדורות LTS הוכחה כדרך היעילה ביותר לספק תיקוני אבטחה. במכשירי Pixel, התגלה כי 90% מבעיות האבטחה של הליבה שדווחו ב-ASB כבר תוקנו עבור מכשירים שנשארו מעודכנים.

עם זאת, עם כל השינויים המותאמים אישית בליבת המכשיר, קשה פשוט למזג את תיקוני ה-LTS לתוך ליבות המכשיר.

מעכב שדרוגי שחרור של פלטפורמת אנדרואיד

פיצול מקשה על תכונות אנדרואיד חדשות הדורשות הוספת שינויים בגרעין למכשירים בשטח. קוד Android Framework חייב להניח שעד חמש גרסאות ליבה נתמכות ושלא בוצעו שינויים בליבה עבור מהדורת הפלטפורמה החדשה (אנדרואיד 10 תומך 3.18, 4.4, 4.9, 4.14 ו-4.19 ליבות, שבמקרים מסוימים לא בוצעו משופרת עם תכונות חדשות מאז אנדרואיד 8 ב-2017).

קשה לתרום שינויים בקרנל בחזרה ללינוקס במעלה הזרם

עם כל השינויים שבוצעו בקרנל, רוב מכשירי הדגל נשלחים עם גרסת ליבה שכבר בת 18 חודשים לפחות. לדוגמה, ליבת 4.14 שוחררה על ידי kernel.org בנובמבר 2017 ומכשירי האנדרואיד הראשונים המשתמשים בגרעיני 4.14 נשלחו באביב 2019.

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

תיקון הפיצול: תמונת ליבה כללית

הפרויקט Generic Kernel Image (GKI) מטפל בפיצול ליבה על ידי איחוד ליבת הליבה והעברת תמיכת SoC ולוח אל מחוץ לגרעין הליבה לתוך מודולי ספק הניתנים לטעינה. GKI מציגה גם ממשק Kernel Module (KMI) יציב עבור מודולי ספקים, כך שניתן לעדכן מודולים וקרנל באופן עצמאי. כמה מאפיינים של ליבת GKI הם:

  • ליבת GKI בנויה ממקורות ה-ACK.
  • ליבת GKI היא גרעין בינארי של ליבה אחת בתוספת מודולים ניתנים לטעינה משויכים לכל ארכיטקטורה, לכל מהדורת LTS (כרגע רק arm64 עבור android11-5.4 ו- android12-5.4 ).
  • ליבת GKI נבדקת עם כל מהדורות פלטפורמת אנדרואיד הנתמכות עבור ה-ACK המשויך. אין הוצאה משימוש של תכונה לכל החיים של גרסת ליבת GKI.
  • ליבת GKI חושפת KMI יציב לנהגים בתוך LTS נתון.
  • ליבת GKI אינה מכילה קוד ספציפי ל-SoC או ללוח.

לתמונה של ארכיטקטורת GKI, עיין בסקירת הליבה .

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

ישנם כרגע שני שלבי GKI:

  • GKI 1.0 הוצג באנדרואיד 11 עבור מכשירים עם גרעינים 5.4. GKI 1.0 חל על כל המכשירים הנשלחים עם גרעינים 5.4, אפילו אלה שהושקו עם Android 12 או Android T (ניסיוני AOSP).
  • GKI 2.0 הוצג באנדרואיד 12 עבור מכשירים עם גרעינים 5.10 והוא התקן החדש לכל המכשירים הנשלחים עם גרעינים 5.10 ומעלה.

GKI 1.0

ב-GKI 1.0, מכשירים המופעלים עם גרסת ליבה 5.4 חייבים לעבור בדיקות GKI (מהדורות פלטפורמה של אנדרואיד 11 ואילך). יעדי GKI 1.0 כוללים את הדברים הבאים:

  • הימנע רגרסיות ב- Vendor Test Suite (VTS) או Compatibility Test Suite (CTS) בעת החלפת ליבת המוצר בליבת GKI.
  • צמצם את עומס השותפים בשמירה על הליבה שלהם מעודכנת עם הגרעינים הנפוצים של AOSP.
  • כלול שינויים עיקריים של אנדרואיד בקרנלים עבור מכשירים המשדרגים והשקה עם גרסאות אנדרואיד חדשות.
  • אל תשבור את מרחב המשתמש של אנדרואיד.
  • הפרד רכיבים ספציפיים לחומרה מקרנל הליבה כמודולים הניתנים לטעינה.

לתיעוד GKI 1.0, עיין בסעיף GKI 1.0 .

GKI 2.0

ב-GKI 2.0, מכשירים המופעלים עם גרסת ליבה 5.10 ומעלה חייבים להישלח עם ליבת GKI (החל מ-Android 12). תמונות אתחול חתומות זמינות ומתעדכנות באופן קבוע עם LTS ותיקוני באגים קריטיים. מכיוון שנשמרת יציבות בינארית עבור ה-KMI, אתה יכול להתקין תמונות אתחול אלה מבלי לבצע שינויים בתמונות הספק. יעדי GKI 2.0 כוללים את הדברים הבאים:

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

GKI 2.0 מייצג את המצב העדכני ביותר של גרעיני אנדרואיד. תיעוד ליבה מחוץ ל- GKI 1.0 ו- Previous kernels (<=4.19) משקפים את ארכיטקטורת GKI 2.0.