סקירה כללית של הליבה

הליבה של Android מבוססת על זרם upstream ליבה (kernel) שנתמכת על ידי Linux לטווח ארוך (LTS). ב-Google, LTS הליבות משולבים עם תיקונים ספציפיים ל-Android כדי ליצור את מה שנקרא kernels משותפת של Android (ACK).

מפתחות ACK חדשים יותר (גרסה 5.4 ואילך) נקראים גם ליבה (kernels) של GKI. הליבה של GKI תומכת מפרידה בין קוד ליבה (kernel) גנרי (kernel) גנרית של חומרה, מודולים של GKI ספציפי לחומרה המודולים של ספקים.

הליבה של GKI מקיימת אינטראקציה עם מודולים של ספק ספציפיים לחומרה שמכילים מערכת צ'יפ (SoC) וקוד ספציפי ללוח. האינטראקציה בין הליבה של GKI והמודולים של הספק היא מופעלת על ידי Kernel Module Interface (KMI) שמכיל רשימות סמלים שמזהים את הפונקציות והנתונים הגלובליים הנדרשים על ידי המודולים של הספקים. איור 1 מציג את הליבה והספק של GKI ארכיטקטורת מודולים:

ארכיטקטורת GKI
איור 1. ארכיטקטורת GKI

מילון המונחים של הליבה

המקטע הזה מכיל מונחים המופיעים במסמכי התיעוד של הליבה.

סוגי ליבה

ליבה משותפת (ACK) של Android
ליבה (kernel) שנמצאת במורד הזרם של ליבת LTS וכוללת תיקונים מעניינים ל-Android קהילה שלא מוזגו עם ליבה (kernel) נתמכת של Linux או עם תמיכה לטווח ארוך (LTS). מפתחות ACK חדשים יותר (גרסה 5.4 ואילך) נקראים גם ליבה (kernel) של GKI, כי הם תומכים הפרדה בין קוד ליבה גנרי גנרי בחומרה ומודולים של GKI ללא קשר לחומרה.
ליבה (kernel) של פרויקט קוד פתוח של Android (AOSP)
ראו ליבה משותפת של Android.
ליבה של התכונה
ליבה (kernel) שבה מובטחות הטמעה של תכונות ההפצה של הפלטפורמה. עבור לדוגמה: ב-Android 12, שתי הליבה של התכונה היו android12-5.4 ו-android12-5.10. אי אפשר להעביר את התכונות של Android 12 למצב הקודם (backrenel) של 4.19 ליבות (kernel) של 4.19. יהיה דומה למכשיר שהושק בגרסה 4.19 ב-Android 11 ושודרג ל-Android 12.
ליבה (kernel) גנרית
החלק בליבה של GKI שמשותף בכל המכשירים.
ליבה (kernel) של תמונת ליבה (GKI) גנרית
ליבה (kernel) של ACK חדשה יותר (5.4 ואילך) (כרגע aarch64 בלבד). הזה הליבה כוללת שני חלקים: הליבה של GKI עם קוד שמשותף בכל המכשירים ומודולים של GKI שפותחו על ידי Google, וניתן לטעון אותן באופן דינמי במכשירים במקרים הרלוונטיים.
ליבה (kernel) של ממשק ליבה (KMI)
לעיון בליבה (kernel) של GKI.
הפעלת ליבה (Kernel)
ליבה תקפה להפעלת מכשיר בגרסה נתונה של פלטפורמת Android. עבור לדוגמה: ב-Android 12, הליבה (kernel) החוקית של ההפעלה היו 4.19, 5.4 ו-5.10.
ליבה (kernel) נתמכת לטווח ארוך (LTS)
ליבה (kernel) של Linux שנתמכת במשך שנתיים עד 6 שנים. ערוץ LTS ליבות משוחררות פעם בשנה והבסיס לכל אחד קמפיינים לעידוד השימוש באפליקציה ב-Google.

סוגי הסתעפויות

הסתעפות הליבה של ACK KMI
הסתעפות שעבורה בונים הליבות של GKI. לדוגמה, android12-5.10 ו-android13-5.15.
השורה הראשית של Android
הסתעפות הפיתוח העיקרית של תכונות Android. כשערוץ LTS חדש ליבה (kernel) מוצהרת ב-upstream, הליבה החדשה של GKI התואמת הסתעפות מ-android-mainline.
השורה הראשית של Linux
הסתעפות הפיתוח העיקרית של ליבות Linux ב-upstream, כולל ליבות LTS.

תנאים נוספים

קובץ אימג' לאתחול מאושר
הליבה נמסרה בפורמט בינארי (boot.img) והבהבה למכשיר. התמונה הזו אושרה מפני שהיא מכילה אישורים מוטמעים, כדי ש-Google תוכל לוודא שהמכשיר נשלח עם ליבה (kernel) שאושרה על ידי Google.
מודול ליבה (kernel) שניתן לטעון באופן דינמי (DLKM)
מודול שניתן לטעון באופן דינמי במהלך הפעלה של המכשיר, בהתאם לצרכים במכשיר. מודולים של GKI ומודולים של ספקים הם שניהם סוגים של DLKM. משחקי DLKM מתפרסמים ב-.ko והם יכולים להיות מנהלי התקנים או לספק פונקציונליות ליבה אחרת.
פרויקט GKI
פרויקט של Google שמטפל במקטע ליבה (kernel) על ידי הפרדה של ליבה (kernel) משותפת פונקציונליות של תמיכה ב-SoC ובלוח של ספציפיות לספק לתוך מודולים שאפשר לטעון.
תמונת ליבה גנרית (GKI)
תמונת אתחול שאושרה על ידי Google ומכילה ליבה (kernel) של GKI שנוצרה על ידי עץ מקור של ACK והוא מתאים להבהב למחיצת האתחול של מכשיר Android.
KMI
ממשק בין הליבה של GKI למודולים של ספק שמאפשרים לספק כדי שיעודכנו בנפרד מהליבה של GKI. הממשק הזה מורכב מליבה (kernel) בפונקציות ובנתונים גלובליים שזוהו כיחסי תלות של ספק/OEM באמצעות רשימות סמלים לכל שותף.
מודולים של GKI
מודולים של ליבה (kernel) שפותחו על ידי Google שניתן לטעון באופן דינמי במכשירים במקרים הרלוונטיים. המודולים האלה נוצרים כארטיפקטים של הליבה (kernel) של GKI והם מועברים לצד GKI כארכיון system_dlkm_staging_archive.tar.gz. מודולים של GKI נחתמים על ידי Google באמצעות זוג מפתחות זמן של build ליבה (kernel) ותואמים רק ל-GKI הליבה שאיתה הם בונים.
מודול הספק
מודול ספציפי לחומרה שפותח על ידי שותף ומכיל SoC וספציפי למכשיר החדשה. מודול ספק הוא סוג של מודול ליבה (kernel) שניתן לטעון באופן דינמי.

מה השלב הבא?