הליבה של 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 ארכיטקטורת מודולים:
מילון המונחים של הליבה
המקטע הזה מכיל מונחים המופיעים במסמכי התיעוד של הליבה.
סוגי ליבה
- ליבה משותפת (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) שניתן לטעון באופן דינמי.
מה השלב הבא?
- אם זו הפעם הראשונה שאתם משתמשים בפיתוח ליבה (kernel) של Android, כדאי להתחיל בקריאת המאמר הבאים:
- ליבה יציבה לטווח ארוך – רקע על ליבות LTS ב-upstream שמזינים ACKs.
- Kernels נפוצות של Android - רקע בנושא ACK.
- אם זו הפעם הראשונה שאתם משתמשים בפיתוח ליבה של GKI, כדאי לקרוא קודם את המאמר פיתוח GKI.
- אם אתם משתמשים בגרסת ליבה (kernel) של 4.19 ומעלה ומחפשים תיעוד קשור, אפשר לקרוא את המאמר הקודם סקירה כללית של הליבה (<=4.19).