סקירה כללית של טוען האתחול

טוען אתחול הוא תמונה קניינית של ספק האחראית להעלאת הליבה במכשיר. טוען האתחול שומר על מצב המכשיר ואחראי לאתחול סביבת הביצוע המהימנה (TEE) וקשירת שורש האמון שלה. טוען האתחול מאמת גם את תקינות מחיצות boot recovery לפני העברת הביצוע לקרנל.

זרימת מאתחול לדוגמה

להלן זרימת אתחול לדוגמא:

  1. טען ואתחול זיכרון.

  2. אמת את ההתקן לפי זרימת אתחול מאומת .

  3. אמת את מחיצות האתחול, כולל boot , dtbo , init_boot recovery , בהתאם לזרימת האתחול המאומת. כחלק משלב זה, בדוק את גרסת הכותרת של תמונת האתחול ונתח את הכותרת בהתאם.

  4. אם נעשה שימוש בעדכוני A/B , קבע את החריץ הנוכחי לאתחול.

  5. קבע אם יש לאתחל את מצב השחזור. למידע נוסף, ראה תמיכה בעדכוני OTA .

  6. טען את תמונות האתחול, כגון boot.img , vendor_boot.img , init_boot.img ותמונות אתחול קנייניות אחרות של ספקים. תמונות האתחול הללו מכילות את תמונות הליבה וה-ramdisk.

    1. טען את הליבה לזיכרון כקובץ בינארי דחוס הניתן להפעלה עצמית. הליבה מפרקת את עצמה ומתחילה להפעיל לתוך הזיכרון.

    2. טען תקליטורים של ramdisk ו-bootconfig לזיכרון כדי ליצור initramfs .

תכונות נוספות הקשורות לאתחול

להלן רשימה של תכונות נוספות הקשורות לאתחול שאתה יכול ליישם:

  • שכבת עץ התקן (DTO). שכבת-על של עץ התקן מאפשרת לטוען האתחול לתמוך בתצורות חומרה שונות. DTO מורכב ל- Device Tree Blob (DTB) המשמש את טוען האתחול.

  • אקראיות של כתובת וירטואלית של תמונת ליבה. טוען האתחול תומך באקראי של הכתובת הווירטואלית שבה נטענת תמונת הליבה. כדי להפוך את הכתובת באקראי, הגדר את RANDOMIZE_BASE ל- true בתצורת הליבה. טוען האתחול חייב לספק אנטרופיה על ידי העברת ערך u64 אקראי בצומת עץ התקן /chosen/kaslr-seed .

  • אתחול מאומת. אתחול מאומת מאפשר לטוען האתחול להבטיח שכל הקוד המבוצע מגיע ממקור מהימן.

  • תצורת אתחול. תצורת האתחול זמינה באנדרואיד 12 ומעלה והיא מנגנון להעברת פרטי תצורה מה-build ומטען האתחול למערכת ההפעלה. לפני אנדרואיד 12, נעשה שימוש בפרמטרים של שורת הפקודה של הליבה עם הקידומת androidboot .

  • עדכונים באוויר (OTA). מכשירי אנדרואיד בתחום יכולים לקבל ולהתקין עדכוני OTA למערכת, לתוכנת האפליקציה ולכללי אזור הזמן. לתכונה זו יש השלכות על הטמעת טוען האתחול שלך. למידע כללי על OTA, ראה עדכוני OTA . לפרטי הטמעת OTA ספציפיים למטען האתחול, ראה תמיכה בעדכוני OTA .

  • מחייב גרסה . קשירת גרסה קושרת מפתחות אבטחה למערכת ההפעלה ולגרסת רמת התיקון. כריכת גרסה מבטיחה שתוקף שמגלה חולשה בגרסה ישנה של המערכת או בתוכנת TEE לא יוכל להחזיר מכשיר לגרסה הפגיעה ולהשתמש במפתחות שנוצרו עם הגרסה החדשה יותר. טוען האתחול חייב לספק מידע מסוים כדי לתמוך באיגד גירסה. למידע נוסף, ראה מידע על גרסה במאפייני AVB .

שורת הפקודה של ליבה

שרשור את שורת הפקודה של הליבה מהמיקומים הבאים:

  • שורת הפקודה של טוען האתחול: קבוצה של פרמטרים סטטיים ודינמיים שנקבעו על ידי טוען האתחול

  • עץ התקנים: מהצומת chosen/bootargs

  • defconfig : מ- CONFIG_CMDLINE

  • boot.img : משורת הפקודה (עבור קיזוז וגודל, עיין ב- system/core/mkbootimg/bootimg.h

החל מ-Android 12, עבור androidboot.* פרמטרים שעלינו להעביר למרחב המשתמש של Android, נוכל להשתמש ב-bootconfig במקום בשורת הפקודה של הקרנל.