מכשירי Android כוללים כמה מחיצות שממלאות פונקציות שונות בתהליך האתחול.
מחיצות רגילות
מחיצה
boot
. המחיצה הזו מכילה קובץ אימג' של ליבה ונוצרת באמצעותmkbootimg
. אפשר להשתמש במחיצה וירטואלית כדי להטמיע את אחת מהתמונות ישירות, בלי להטמיע מחיצה חדשה לאתחול. המחיצה הזו מכילה גם את ה-ramdisk הגנרי במכשירים שהושקו לפני Android 13.kernel המחיצה הווירטואלית
kernel
מחליפה את הליבה (zImage
,zImage-dtb
,Image.gz-dtb
) על ידי כתיבת תמונת הליבה החדשה מעל תמונת הליבה (kernel) הישנה. אם ליבה הפיתוח שסופקה לא תואמת, יכול להיות שתצטרכו לעדכן את המחיצהvendor
,system
אוdtb
(אם היא קיימת) באמצעות מודולי הליבה המשויכים.ramdisk המחיצה הווירטואלית
ramdisk
מחליפה את ה-ramdisk על ידי כתיבת קובץ האימג' החדש של ה-ramdisk מעל קובץ האימג' הישן של ה-ramdisk.
פעולת הכתיבה מחדש קובעת את מיקום ההתחלה של התמונה הקיימת ב-eMMC ומעתיקה את התמונה החדשה למיקום הזה. יכול להיות שהתמונה החדשה (ליבה או דיסק RAM) תהיה גדולה יותר מהתמונה הקיימת. כדי לפנות מקום, מנהל האתחול יכול להעביר נתונים אחרי התמונה או לבטל את הפעולה עם הודעת שגיאה.
מחיצה
init_boot
. המחיצה הזו כוללת את המצב הגנרי של מכשירים שמותקנת בהם מערכת ההפעלה Android מגרסה 13 ואילך.מחיצה
system
. המחיצה הזו מכילה את מסגרת Android.מחיצה
odm
. המחיצה הזו מכילה התאמות אישיות של יצרן העיצוב המקורי (ODM) לחבילות תמיכה בלוחות (BSP) של מערכת על שבב (SoC). התאמות אישיות כאלה מאפשרות ליצרני ציוד מקורי להחליף או להתאים אישית רכיבי SoC, ולהטמיע מודולים של ליבה לרכיבים ספציפיים ללוח, לדיימונים ולתכונות ספציפיות ליצרן ציוד מקורי בשכבות הפשטה של חומרה (HAL). המחיצה הזו היא אופציונלית. בדרך כלל היא משמשת לצורך אחסון התאמות אישיות, כדי שאפשר יהיה להשתמש בתמונת ספק אחת במכשירים עם כמה מק"טים של חומרה. לפרטים נוספים, ראו מחיצות ODM.מחיצה
odm_dlkm
. המחיצה הזו מיועדת לאחסון מודולים של ליבה של ODM. אחסון מודולים של ליבה של ODM במחיצהodm_dlkm
(לעומת המחיצהodm
) מאפשר לעדכן מודולים של ליבה של ODM בלי לעדכן את המחיצהodm
.מחיצה
recovery
. במחיצה הזו מאוחסנת קובץ האימג' לשחזור, שמופעל במהלך תהליך ה-OTA. במכשירים שתומכים בעדכונים חלקים, אפשר לאחסן את קובצי האימג' של השחזור כ-ramdisk שמכיל את קובץ האימג'boot
אוinit_boot
(במקום קובץ אימג' נפרד).מחיצה
cache
. במחיצה הזו מאוחסנים נתונים זמניים, והיא אופציונלית אם במכשיר נעשה שימוש בעדכונים חלקים. לא צריך שאפשר יהיה לכתוב במחיצה של המטמון מ-bootloader, אבל צריך שאפשר יהיה למחוק אותה. גודל המחיצה תלוי בסוג המכשיר ובנפח האחסון הפנוי ב-userdata
. בדרך כלל, מספיקים 50MB עד 100MB.מחיצה
misc
. מחיצת האתחול משתמשת במחיצה הזו, והיא צריכה להיות בגודל 4KB או יותר.מחיצה
userdata
. המחיצה הזו מכילה אפליקציות ונתונים שהמשתמשים התקינו, כולל נתוני התאמה אישית.מחיצה
metadata
. המחיצה הזו משמשת לאחסון מפתח ההצפנה של המטא-נתונים כשהמכשיר משתמש בהצפנת מטא-נתונים. הקובץ גדול מ-16MB. הוא לא מוצפן והנתונים שלו לא נשמרים בתמונות מצב. הנתונים נמחקים כשמאפסים את המכשיר להגדרות המקוריות. השימוש במחיצה הזו מוגבל מאוד.מחיצה
vendor
. המחיצה הזו מכילה כל קובץ בינארי שלא ניתן להפיץ ל-AOSP. אם המכשיר לא מכיל מידע קנייני, אפשר להשמיט את המחיצה הזו.מחיצה
vendor_dlkm
. המחיצה הזו מיועדת לאחסון מודולים של ליבה (kernel) של ספק. אחסון מודולים של ליבה (kernel) של ספק במחיצתvendor_dlkm
(בניגוד למחיצהvendor
) מאפשר לעדכן מודולים של ליבה בלי לעדכן את המחיצהvendor
.מחיצה
radio
. המחיצה הזו מכילה את תמונת הרדיו ונחוצה רק למכשירים שכוללים רדיו עם תוכנה ספציפית לרדיו במחיצה ייעודית.מחיצה
tos
. במחיצה הזו מאוחסן קובץ האימג' הבינארי של Trusty OS, והיא משמשת רק אם המכשיר כולל את Trusty. לפרטים נוספים, ראו מחיצות של תנאים והגבלות.מחיצה
pvmfw
. במחיצה הזו מאוחסן הקושחה של המכונה הווירטואלית המוגנת (pvmfw), שהוא הקוד הראשון שפועל במכונות וירטואליות מוגנות. לפרטים נוספים, ראו קושחת מכונה וירטואלית מוגנת.
מחיצות דינמיות
מכשירים עם Android בגרסה 11 ואילך יכולים לתמוך במחיצות דינמיות – מערכת חלוקה למחיצות (partitioning) במרחב המשתמשים ל-Android שמאפשרת ליצור, לשנות את הגודל או להשמיד מחיצות בזמן עדכונים אלחוטיים (OTA). למידע נוסף, ראו מחיצות דינמיות.
הקצאת מחיצות קריטיות
אם המכשיר דורש מחיצות או נתונים ספציפיים כדי לפעול, צריך להגדיר את המחיצות או הנתונים האלה כמוגנים באופן מלא או ככאלה שאפשר לבצע להם איפוס באמצעות הפקודה fastboot oem
. כלומר, אפשר לבנות אותם מחדש, לספק אותם או לחלץ אותם באמצעות הפקודה fastboot oem
.
הנתונים האלה כוללים הגדרות ספציפיות למכשיר מבית היוצר, מספרים סידוריים, נתוני כיול ועוד.
שינויים ב-Android 11
ב-Android 11 יש שינויים רבים במחיצות, כולל הגבלות על קישור לספריות ולוריאציות חדשות של תמונות תמונה ב-Song.
איור 1. פריסת המחיצות ב-Android 11
Single System Image (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
, והיא מיועדת אך ורק לספקים כדי להטמיע את ממשקי ה-HAL שלהם.
ב-Android מגרסה 10 ומטה, אפשר לקשר את המחיצה
vendor
לספריות VNDK במחיצהsystem
, אבל אי אפשר לקשר אותה לספריות אחרות במחיצהsystem
. מודולים מקוריים במחיצהproduct
יכולים לקשר לכל ספרייה במחיצהsystem
.ב-Android מגרסה 11 ואילך, אפשר לקשר את המחיצות
product
ו-vendor
לספריות VNDK במחיצהsystem
, אבל אי אפשר לקשר אותן לספריות אחרות במחיצהsystem
.
וריאציות של מוצרים ב-Soong
מערכת ה-build של Soong משתמשת בוריאנטים של קובצי אימג' כדי לפצל את יחסי התלות ב-build. מודולים מקומיים (/build/soong/cc
) יכולים לשנות מודולים של תהליך מערכת לווריאנט הליבה ומודולים של תהליך ספק לווריאנט הספק. מודול בווריאנט אחד של תמונה לא יכול לקשר למודולים אחרים בווריאנט אחר של תמונה.
ב-Android מגרסה 10 ומטה, מודול מערכת יוצר באופן אוטומטי וריאנטים של הליבה. אפשר גם ליצור וריאנטים של ספקים על ידי הגדרת
vendor_available: true
בקובציAndroid.bp
. כך אפשר לקשר מודולים של ספקים למודולים של מערכת. ספריות VNDK, שהן וריאציות של ספקים לספריותsystem
, יכולות גם ליצור וריאציות של ספקים למודול של ספקים על ידי הגדרתvendor_available: true
בקובציAndroid.bp
שלו (ראו דוגמה).ב-Android 11, מודול מערכת יכול גם ליצור וריאציית מוצר (בנוסף לווריאציות ליבה וספק) על ידי הגדרה של
vendor_available: true
.ב-Android מגרסה 12 ואילך, מודול מערכת עם
vendor_available: true
יוצר וריאנט של ספק בנוסף לווריאנט הליבה. כדי ליצור וריאציית מוצר, צריך להגדיר אתproduct_available: true
. חלק מספריות VNDK בליproduct_available: true
לא זמינות למודולים של מוצרים.