מכשירי אנדרואיד כוללים מספר מחיצות המשרתות פונקציות שונות בתהליך האתחול.
מחיצות סטנדרטיות
מחיצת
boot
. מחיצה זו מכילה תמונת ליבה והיא נוצרת באמצעותmkbootimg
. אתה יכול להשתמש במחיצה וירטואלית כדי להבהב כל אחת מהתמונות ישירות מבלי להבהב מחיצת אתחול חדשה. מחיצה זו מכילה גם את ה-ramdisk הגנרי במכשירים שהושקו לפני אנדרואיד 13.גַרעִין. מחיצת
kernel
הווירטואלית מחליפה את הליבה (zImage
,zImage-dtb
,Image.gz-dtb
) על ידי כתיבת תמונת הליבה החדשה על תמונת הליבה הישנה. אם ליבת הפיתוח שסופקה אינה תואמת, ייתכן שיהיה עליך לעדכן את המחיצהvendor
,system
אוdtb
(אם קיימת) עם מודולי ליבה משויכים.ramdisk. מחיצת
ramdisk
הוירטואלית מחליפה את ה-ramdisk על ידי כתיבת תמונת ה-ramdisk החדשה על תמונת ה-ramdisk הישנה.
פעולת ההחלפה קובעת את מיקום ההתחלה של התמונה הקיימת ב-eMMC ומעתיקה את התמונה החדשה לאותו מיקום. התמונה החדשה (קרנל או ramdisk) עשויה להיות גדולה יותר מהקיימת; כדי לפנות מקום, טוען האתחול יכול להעביר נתונים בעקבות התמונה או לנטוש את הפעולה עם שגיאה.
מחיצת
init_boot
. מחיצה זו מכילה את ה-ramdisk הגנרי עבור מכשירים המופעלים עם אנדרואיד 13 ואילך.מחיצת
system
. מחיצה זו מכילה את המסגרת של אנדרואיד.מחיצת
odm
. מחיצה זו מכילה התאמות אישיות של יצרן עיצוב מקורי (ODM) לחבילות תמיכה של ספקי לוח (BSP) של מערכת על שבב (SoC). התאמות אישיות כאלה מאפשרות ל-ODM להחליף או להתאים אישית רכיבי SoC, ולהטמיע מודולי ליבה עבור רכיבים ספציפיים ללוח, דמונים ותכונות ספציפיות ל-ODM בשכבות אבסטרקציה של חומרה (HAL). מחיצה זו היא אופציונלית; בדרך כלל, הוא משמש להכיל התאמות אישיות כך שמכשירים יכולים להשתמש בתמונת ספק אחת עבור מספר מק"ט של חומרה. לפרטים, ראה מחיצות ODM .מחיצת
odm_dlkm
. מחיצה זו מוקדשת לאחסון מודולי ליבת ODM. אחסון מודולי ליבת ODM במחיצתodm_dlkm
(בניגוד למחיצתodm
) מאפשר לעדכן מודולי ליבת ODM מבלי לעדכן את מחיצתodm
.מחיצת
recovery
. מחיצה זו מאחסנת את תמונת השחזור, אשר מופעלת במהלך תהליך OTA. התקנים התומכים בעדכונים חלקים יכולים לאחסן את תמונות השחזור כ-ramdisk הכלול בתמונתboot
אוinit_boot
(ולא תמונה נפרדת).מחיצת
cache
. מחיצה זו מאחסנת נתונים זמניים והיא אופציונלית אם מכשיר משתמש בעדכונים חלקים. מחיצת המטמון אינה צריכה להיות ניתנת לכתיבה ממטען האתחול, אך היא צריכה להיות ניתנת למחיקה. גודל המחיצה תלוי בסוג המכשיר ובזמינות השטח בנתוניuserdata
; בדרך כלל, 50 MB–100 MB מספיקים.מחיצה
misc
. מחיצה זו משמשת את מחיצת השחזור והיא 4 KB או יותר.מחיצת
userdata
. מחיצה זו מכילה אפליקציות ונתונים שהותקנו על ידי המשתמש, כולל נתוני התאמה אישית.מחיצת
metadata
. מחיצה זו משמשת לאחסון מפתח הצפנת מטא נתונים כאשר המכשיר משתמש בהצפנת מטא נתונים . הגודל הוא 16 MB ומעלה. הוא אינו מוצפן והנתונים שלו אינם מצולמים. הוא נמחק כאשר המכשיר מאופס להגדרות היצרן. השימוש במחיצה זו מוגבל בהחלט.מחיצת
vendor
. מחיצה זו מכילה כל בינארי שאינו ניתן להפצה ל-AOSP. אם ההתקן אינו מכיל מידע קנייני, אתה יכול להשמיט מחיצה זו.מחיצת
vendor_dlkm
. מחיצה זו מוקדשת לאחסון מודולי ליבת הספק. אחסון מודולי ליבת הספק במחיצתvendor_dlkm
(בניגוד למחיצתvendor
) מאפשר לעדכן מודולי ליבה מבלי לעדכן את מחיצתvendor
.מחיצת
radio
. מחיצה זו מכילה את תמונת הרדיו והיא נחוצה רק עבור מכשירים הכוללים רדיו עם תוכנה ספציפית לרדיו במחיצה ייעודית.מחיצת
tos
. מחיצה זו מאחסנת את התמונה הבינארית של מערכת ההפעלה Trusty ומשמשת רק אם המכשיר כולל Trusty. לפרטים, ראה מחיצות TOS .מחיצת
pvmfw
. מחיצה זו מאחסנת את קושחת המחשב הוירטואלי (pvmfw) שהוא הקוד הראשון שרץ ב-VMs מוגנים. ראה קושחה של מחשב וירטואלי מוגן לפרטים נוספים.
מחיצות דינמיות
מכשירים המריצים אנדרואיד 11 ומעלה יכולים לתמוך במחיצות דינמיות, שהן מערכת לחלוקת מחיצות במרחב משתמש עבור אנדרואיד המאפשרת יצירה, שינוי גודל או השמדה של מחיצות במהלך עדכוני אויר (OTA). לפרטים, ראה מחיצות דינמיות .
ייעוד מחיצות קריטיות
אם ההתקן דורש מחיצות או נתונים ספציפיים להפעלה, עליך להגדיר את המחיצות/הנתונים הללו כמוגנות באופן מלא או כניתנות להבהב מחדש, כלומר ניתנות לבנייה מחדש, מסופקת או ניתנת לחילוץ באמצעות פקודת fastboot oem
. זה כולל נתונים כגון הגדרות ספציפיות למפעל לכל מכשיר, מספרים סידוריים, נתוני כיול ועוד.
שינויים באנדרואיד 11
אנדרואיד 11 כולל שינויים רבים במחיצות, כולל הגבלות על קישור לספריות וגרסאות תמונה חדשות של Soong.
איור 1. פריסת מחיצה באנדרואיד 11
תמונת מערכת אחת (SSI). תמונה חדשה ומושגית המכילה את התמונות
system
ומערכת_system_ext
. כאשר המחיצות הללו נפוצות עבור קבוצה של התקני יעד, התקנים אלה יכולים לשתף את ה-SSI ולדלג על בנייתsystem
ותמונותsystem_ext
.מחיצת
system_ext
. מחיצה חדשה שיכולה להשתמש במשאביsystem
ויכולה לכלול מודולי מערכת ש:הרחבת מודולי מערכת AOSP במחיצת
system
. אנו ממליצים להעביר מודולים כאלה ל-AOSP כך שניתן יהיה להתקין אותם במחיצתsystem
מאוחר יותר.צרור מודולים ספציפיים ל-OEM או ל-SoC. אנו ממליצים לבטל מודולים כאלה כדי שניתן יהיה להתקין אותם במחיצת
product
אוvendor
.
מחיצת
system
. תמונת מערכת נפוצה המשמשת עבור מוצרי OEM. אנו ממליצים להעביר מודולים קנייניים אל מחוץ למחיצתsystem
, או על ידי הזרמתם אל AOSP או על ידי העברתם למחיצתsystem_ext
.מחיצת
product
. מחיצה זו יכולה כעת להשתמש בממשקים מורשים כדי להתקין מודולים ספציפיים למוצר שאינם מצורפים לאף מחיצה אחרת.
שינויים ב-VNDK
ערכת הפיתוח המקורית של ספקים (VNDK) היא קבוצה של ספריות המותקנות במחיצת system
ותוכננה באופן בלעדי עבור ספקים ליישם את ה-HALs שלהם.
באנדרואיד 10 ומטה, מחיצת
vendor
יכולה לקשר לספריות VNDK במחיצתsystem
, אך לא יכולה לקשר לספריות אחרות במחיצתsystem
. מודולים מקוריים במחיצתproduct
יכולים לקשר לכל ספרייה במחיצתsystem
.באנדרואיד 11 ומעלה, מחיצות
product
vendor
יכולות לקשר לספריות VNDK במחיצתsystem
, אך לא יכולות לקשר לספריות אחרות במחיצתsystem
.
בקרוב גרסאות מוצר
מערכת הבנייה של Soong משתמשת בגרסאות תמונה כדי לפצל תלות בנייה. מודולים מקוריים ( /build/soong/cc
) יכולים לשנות את מודולי תהליך המערכת לגרסת הליבה ואת מודולי תהליכי הספק לגרסה של הספק; מודול בגרסה אחת של תמונה לא יכול לקשר מודולים אחרים בגרסה אחרת של תמונה.
באנדרואיד 10 ומטה, מודול מערכת יוצר אוטומטית גרסאות ליבה. הוא יכול גם ליצור גרסאות של ספקים על ידי הגדרת
vendor_available: true
בקבציAndroid.bp
שלו; זה מאפשר למודולי ספק לקשר למודולי מערכת. ספריות VNDK, שהן גרסאות ספקים של ספריותsystem
, יכולות גם ליצור גרסאות ספק עבור מודולי ספק על ידי הגדרתvendor_available: true
בקבציAndroid.bp
שלה (ראה דוגמה ).באנדרואיד 11, מודול מערכת יכול גם ליצור וריאנט מוצר (בנוסף לגרסת הליבה והספק) על ידי הגדרת
vendor_available: true
.באנדרואיד 12 ומעלה, מודול מערכת עם
vendor_available: true
יוצר וריאנט ספק בנוסף לגרסה הליבה. כדי ליצור וריאנט מוצר, יש להגדירproduct_available: true
. חלק מספריות VNDK ללאproduct_available: true
אינן זמינות למודולי מוצר.