תוכנת אתחול היא תמונה קניינית של ספק שאחראית להפעלת ליבת המערכת במכשיר. תוכנת האתחול מגנה על מצב המכשיר ואחראית לאתחול של סביבת מחשוב אמינה (TEE) ולקישור שלה ל-Root of Trust. טוען האתחול גם מאמת את התקינות של מחיצות boot ו-recovery לפני שהוא מעביר את ההרצה לליבה.
דוגמה לתהליך של טוען האתחול
דוגמה לתהליך של bootloader:
טעינה והפעלה של הזיכרון.
מאמתים את המכשיר לפי תהליך ההפעלה המאומתת.
מאמתים את מחיצות האתחול, כולל
boot,dtbo,init_bootו-recovery, בהתאם לתהליך של הפעלה מאומתת. כחלק מהשלב הזה, בודקים את הגרסה של כותרת קובץ אימג' לאתחול ומנתחים את הכותרת בהתאם.אם נעשה שימוש בעדכוני A/B, צריך לקבוע את המשבצת הנוכחית לאתחול.
קובעים אם צריך להפעיל את מצב השחזור. מידע נוסף זמין במאמר בנושא תמיכה בעדכוני OTA.
טוענים את קובצי האימג' לאתחול, כמו
boot.img,vendor_boot.img,init_boot.imgוקובצי אימג' לאתחול של ספקים אחרים. קובצי האימג' האלה לאתחול מכילים את הליבה ואת קובצי האימג' של ramdisk.טוען את הליבה לזיכרון כקובץ בינארי דחוס שניתן להפעלה עצמית. הליבה מבצעת דקומפרסיה של עצמה ומתחילה לפעול בזיכרון.
טוענים את ה-ramdisks ואת הקטע bootconfig לזיכרון כדי ליצור את
initramfs.
תכונות נוספות שקשורות לטוען האתחול
בהמשך מופיעה רשימה של תכונות נוספות שקשורות לטוען האתחול שאפשר להטמיע:
שכבת-על של פירוט מבנה המכשיר (DTO). שכבת-על של פירוט מבנה המכשיר (DT) מאפשרת לתוכנת האתחול לתמוך בתצורות חומרה שונות. קובץ DTO עובר קומפילציה ל-device tree blob (DTB) שמשמש את טוען האתחול.
הגרלה של כתובת וירטואלית של תמונת ליבה. טוען האתחול תומך בהקצאה אקראית של הכתובת הווירטואלית שבה נטען קובץ האימג' של הליבה. כדי להגריל את הכתובת, מגדירים את
RANDOMIZE_BASEל-trueבהגדרות של ליבת המערכת. תוכנת האתחול חייבת לספק אנטרופיה על ידי קביעת ערך u64 אקראי בצומת של פירוט מבנה המכשיר/chosen/kaslr-seed.הפעלה מאומתת. הפעלה מאומתת מאפשרת לתוכנת האתחול לוודא שכל הקוד שמופעל מגיע ממקור מהימן.
הגדרת אתחול הגדרת האתחול זמינה ב-Android מגרסה 12 ואילך, והיא מנגנון להעברת פרטי תצורה מה-build ומטען האתחול למערכת ההפעלה. לפני Android 12, נעשה שימוש בפרמטרים של שורת הפקודה של ליבת המערכת עם הקידומת
androidboot.עדכונים דרך האוויר (OTA). מכשירי Android בשטח יכולים לקבל ולהתקין עדכוני OTA למערכת, לתוכנת האפליקציות ולכללי אזור הזמן. התכונה הזו משפיעה על ההטמעה של טוען האתחול. מידע כללי על OTA זמין במאמר עדכוני OTA. פרטים על הטמעה של OTA שספציפית לטוען האתחול מופיעים במאמר בנושא תמיכה בעדכוני OTA.
קישור גרסה. קישור גרסה מקשר מפתחות אבטחה לגרסת מערכת ההפעלה ולגרסת רמת התיקון. קישור לגרסה מבטיח שתוקף שמגלה חולשה בגרסה ישנה של המערכת או של תוכנת TEE לא יוכל להחזיר מכשיר לגרסה הפגיעה ולהשתמש במפתחות שנוצרו באמצעות הגרסה החדשה יותר. תוכנת האתחול חייבת לספק מידע מסוים כדי לתמוך בקישור גרסה. מידע נוסף זמין במאמר בנושא פרטי גרסה במאפייני AVB.
שורת פקודה של ליבה
משרשרים את שורת הפקודה של ליבת המערכת מהמיקומים הבאים:
שורת פקודה של תוכנת האתחול: קבוצה של פרמטרים סטטיים ודינמיים שנקבעים על ידי תוכנת האתחול
פירוט מבנה המכשיר (DT): מהצומת
chosen/bootargsdefconfig: מ-CONFIG_CMDLINE
boot.img: משורת הפקודה (לגבי היסטים וגדלים, אפשר לעיין ב-system/core/mkbootimg/bootimg.h
החל מ-Android 12, כדי להעביר פרמטרים של androidboot.* למרחב המשתמש של Android, אפשר להשתמש ב-bootconfig במקום בשורת הפקודה של ליבת המערכת.