ליבת Android מבוססת על ליבת Linux Long Term Supported (LTS). ב-Google, ליבות LTS משולבות עם תיקונים ספציפיים ל-Android כדי ליצור ליבות משותפות של Android (ACK).
ה-ACK נוצר ממאגר kernel/common. המאגר הזה הוא קבוצה רחבה יותר של ליבת Linux, עם תיקונים נוספים שספציפיים ל-Android.
ACKs בגרסה 5.10 ומעלה נקראים גם ליבות *generic kernel images (GKI). ליבות GKI תומכות בהפרדה בין קוד הליבה הגנרית שאינו תלוי בחומרה לבין מודולי GKI, לבין מודולי הספק שספציפיים לחומרה.
האינטראקציה בין ליבת ה-GKI לבין מודולים של ספקים מופעלת על ידי ממשק מודול הליבה (KMI), שמורכב מרשימות של סמלים שמזהים את הפונקציות והנתונים הגלובליים שנדרשים על ידי מודולים של ספקים. איור 1 מציג את ארכיטקטורת מודול הספק והליבה של GKI:
איור 1. ארכיטקטורה של מודול ספק וליבת GKI.
מילון מונחים בנושא ליבה
בהמשך מפורטים מונחים שמופיעים במשאבי העזרה בנושא ליבת המערכת.
סוגי ליבה
- Android Common Kernel (ACK)
- ליבת מערכת הפעלה שהיא downstream של ליבת LTS וכוללת תיקונים שחשובים לקהילת Android. התיקונים האלה לא מוזגו לליבת Linux או לליבות GKI לטווח ארוך.
ליבות עם גרסאות 5.10 ואילך נקראות גם ליבות Generic Kernel Image (GKI).
- ליבת Android Open Source Project (AOSP)
- ראו Android Common Kernel.
אי אפשר להעביר תכונות של Android 12 לגרסאות קודמות של ליבות 4.19. קבוצת התכונות תהיה דומה לזו של מכשיר שהושק עם גרסה 4.19 ב-Android 11 ושודרג ל-Android 12.
- ליבת Generic Kernel Image (GKI)
כל ליבת ACK מגרסה 5.10 ואילך(רק aarch64). ליבת ה-GKI מורכבת משני חלקים:
ליבת מערכת הפעלה גנרית – החלק בליבת ה-GKI שמשותף לכל המכשירים.
מודולי GKI – מודולי ליבה שנוצרו על ידי Google ואפשר לטעון אותם באופן דינמי במכשירים שבהם זה רלוונטי. המודולים האלה נוצרים כארטיפקטים של ליבת GKI ונמסרים לצד GKI כארכיון
system_dlkm_staging_archive.tar.gz
. מודולי GKI נחתמים על ידי Google באמצעות צמד המפתחות של זמן בניית הליבה, והם תואמים רק לליבת GKI שבה הם נבנו.
- ליבת Kernel Module Interface (KMI)
- Long Term Supported (LTS) kernel
ליבת Linux שנתמכת למשך שנתיים עד 6 שנים. ליבות LTS יוצאות פעם בשנה ומהוות את הבסיס לכל הליבות המשותפות של Android של Google.
סוגי הסתעפויות
- ענף ליבת ACK KMI
- הענף שעבורו נוצרים ליבות GKI. שמות הסניפים תואמים לגרסאות הליבה, כמו
android15-6.6
. - Android-mainline
- ההסתעפות הראשית של הפיתוח לתכונות של Android. כשמכריזים על ליבת LTS חדשה במעלה הזרם, יוצרים הסתעפות של ליבת GKI חדשה תואמת מ-android-mainline.
Linux mainline : ענף הפיתוח הראשי של ליבות Linux במעלה הזרם, כולל ליבות LTS.
תנאים אחרים
- תמונת אתחול מאומתת
- הליבה מועברת בפורמט בינארי (
boot.img
) ומוצגת במכשיר. התמונה הזו נחשבת מאושרת כי היא מכילה אישורים מוטמעים, ולכן Google יכולה לאמת שהמכשיר נשלח עם ליבת מערכת שאושרה על ידי Google. - מודול ליבה שניתן לטעינה באופן דינמי (DLKM)
- מודול שאפשר לטעון באופן דינמי במהלך אתחול המכשיר, בהתאם לצרכים של המכשיר. GKI ומודולים של ספקים הם שני סוגים של DLKM. מודולי DLKM מופצים בפורמט
.ko
ויכולים להיות מנהלי התקנים או לספק פונקציונליות אחרת של ליבת מערכת ההפעלה. - פרויקט GKI
- פרויקט Google שמטפל בפיצול של ליבת המערכת על ידי הפרדה של פונקציונליות ליבה משותפת מתמיכה ב-SoC וב-board ספציפיים לספק, למודולים שאפשר לטעון.
Generic Kernel Image (GKI): תמונת אתחול שאושרה על ידי Google ומכילה GKI kernel שנבנה מתוך עץ מקור של ACK ומתאים להעברה למחיצת האתחול של מכשיר מבוסס-Android.
- ממשק מודול ליבת המערכת (KMI)
- ממשק בין ליבת GKI לבין מודולים של ספקים, שמאפשר למודולים של ספקים להתעדכן באופן עצמאי בלי קשר לליבת GKI. הממשק הזה מורכב מפונקציות ליבה ומנתונים גלובליים שזוהו כתלות בספק או ביצרן ציוד מקורי (OEM) באמצעות רשימות סמלים לכל שותף.
- Vendor module
- מודול ספציפי לחומרה שפותח על ידי שותף ומכיל SoC ופונקציונליות ספציפית למכשיר. מודול ספק הוא סוג של מודול ליבה שאפשר לטעון באופן דינמי.
השלבים הבאים
אם אתם חדשים בפיתוח ליבת Android, כדאי להתחיל בקריאת המאמרים הבאים:
- Long Term Stable Kernels - Background on upstream LTS kernels which feed into ACKs.
- Android Common Kernels – רקע על ACKs.
אם אתם חדשים בפיתוח ליבת GKI, כדאי להתחיל בקריאת המאמר פיתוח GKI.