ליבת Android מבוססת על ליבת Linux Long Term Supported (LTS). ב-Google, ליבות LTS משולבות עם תיקונים ספציפיים ל-Android כדי ליצור ליבות משותפות של Android (ACK).
ה-ACK נוצר ממאגר kernel/common. המאגר הזה הוא קבוצת-על של ליבת Linux במעלה הזרם, עם תיקונים נוספים שספציפיים ל-Android.
ליבות ACK מגרסה 5.10 ואילך נקראות גם *ליבות תמונת ליבה גנרית (GKI). ליבות 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 נפוצה.
אי אפשר להעביר תכונות של 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)
- ליבת מערכת הפעלה עם תמיכה לטווח ארוך (LTS)
ליבת 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 ובלוח ספציפיים לספק, למודולים שאפשר לטעון.
Generic Kernel Image (GKI): קובץ אימג' לאתחול שאושר על ידי Google ומכיל GKI kernel שנבנה מתוך עץ מקור של ACK ומתאים להעברה למחיצת האתחול של מכשיר מבוסס-Android.
- ממשק מודול ליבת המערכת (KMI)
- ממשק בין ליבת GKI לבין מודולים של ספקים, שמאפשר לעדכן מודולים של ספקים בנפרד מליבת GKI. הממשק הזה מורכב מפונקציות ליבה ומנתונים גלובליים שזוהו כתלות בספק או ביצרן ציוד מקורי (OEM) באמצעות רשימות סמלים לכל שותף.
- Vendor module
- מודול ספציפי לחומרה שפותח על ידי שותף ומכיל SoC ופונקציונליות ספציפית למכשיר. מודול ספק הוא סוג של מודול ליבה שאפשר לטעון באופן דינמי.
השלבים הבאים
אם אתם חדשים בפיתוח ליבת Android, כדאי להתחיל בקריאת המאמרים הבאים:
- Long Term Stable Kernels - רקע על ליבות LTS במעלה הזרם שמוזנות ל-ACK.
- Android Common Kernels – רקע על ACKs.
אם אתם חדשים בפיתוח ליבת GKI, כדאי להתחיל בקריאת המאמר פיתוח GKI.