סקירה כללית

מכשירי אנדרואיד כוללים מספר מחיצות המשרתות פונקציות שונות בתהליך האתחול.

מחיצות סטנדרטיות

  • מחיצת 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 אינן זמינות למודולי מוצר.