בדף הזה מוסבר איך פורסים את הקובץ הבינארי של GBL.
הדרישות לגבי קושחה של אתחול
כדי להשתמש ב-GBL, קושחת האתחול צריכה לעמוד בדרישות הבאות:
עמידה בתקני UEFI. הקושחה צריכה להטמיע את פרוטוקולי ה-UEFI הנדרשים ולהשתמש בהם. הקושחה צריכה לאפשר גם הרחבות ספציפיות לספקים באמצעות פרוטוקולי UEFI מוגדרים.
אבטחה. הקושחה צריכה להטמיע את כל ההיבטים של הפעלה מאומתת של Android (AVB), כדי להבטיח שייטענו רק תמונות מאומתות.
מצבי הפעלה. קובץ הבינארי צריך להיות מסוגל לטפל במצבי אתחול שונים, כמו אתחול רגיל, אתחול לשחזור ואתחול מהיר.
חלוקה דינמית למחיצות. קושחת האתחול צריכה להטמיע לוגיקה של בחירת משבצת כדי לתמוך בקריאה של משבצת האתחול הנכונה מסוג A/B, ולהיות תואמת למחיצות דינמיות ולנתוני משתמשים ב-super.
הגדרת מערכת ההפעלה. הקושחה צריכה להיות מסוגלת לשנות את שורת הפקודה של ליבת המערכת, את עץ המכשיר (DTB) ואת bootconfig עם התאמות אישיות של OEM שנדרשות להפעלת המכשיר.
מכונה וירטואלית מוגנת בטעינה. הקובץ הבינארי צריך לטעון בצורה נכונה קושחת מכונה וירטואלית מוגנת שאומתה מראש לפני ליבת Android, בנוכחות מכונות וירטואליות מוגנות. מידע נוסף זמין במאמר בנושא רצף האתחול של Microdroid.
ניהול זיכרון. קושחת האתחול צריכה לתמוך בממשק ה-API של הקצאת הזיכרון UEFI.
תאימות ותאימות לאחור. הקושחה צריכה לפעול במכשירים עם ספקים שונים, מערכות SoC שונות ולשמור על תאימות לאחור עם גרסת Android המתאימה.
תמיכה בקושחה של אתחול
אחרי שמבצעים את השינויים שנדרשים כדי לתמוך בדרישות שצוינו בקטע הקודם, הטמעות הקושחה הבאות של UEFI פועלות עם GBF:
- EDK2 (Tianocore). EDK2 היא הטמעה פופולרית של UEFI בקוד פתוח. נדרשת תמיכה ב-GBL עבור טועני אתחול (bootloaders) שמבוססים על EDK2, ותמיכה ב-UEFI כבר קיימת.
- U-Boot. פרויקט גמיש ופופולרי של טוען אתחול בקוד פתוח, שמתחילה להיות לו תאימות ל-UEFI לשימוש ב-GBL.
- LittleKernel (LK). טוען אתחול (bootloader) בקוד פתוח שמשמש חלק מהספקים.
הפעלת GBL
אתם יכולים להשיג קובץ בינארי של GBL שמוכן להפעלה, או ליצור קובץ משלכם ולהפעיל אותו.
קבלת הקובץ הבינארי של GBL והרצתו
GBL מופץ כקובץ בינארי יחיד של אפליקציית EFI. אפשר לעדכן את הקובץ הבינארי הזה בנפרד מהקושחה הבסיסית של המכשיר באמצעות מנגנון העדכון הרגיל של Android.
החל מ-Android 16, אם אתם שולחים מכשיר שמבוסס על ערכת שבבים ARM-64, מומלץ מאוד לפרוס את הגרסה העדכנית ביותר שחתמה עליה Google של GBL ולשלב אותה בשרשרת האתחול.
איך בונים ומריצים את ה-GBL
כדי ליצור ולהפעיל את GBL:
מוודאים שכלי ה-repo ו-Bazel bootstrap מותקנים:
sudo apt install repo bazel-bootstrap
מאתחלים את הספרייה הנוכחית לבקרת גרסאות באמצעות קובץ המניפסט
uefi-gbl-mainline
:repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline repo sync -j16
יוצרים את אפליקציית ה-EFI:
./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
מריצים את אפליקציית ה-EFI ב-Cuttlefish:
cvd start --android_efi_loader=path_to_the_EFI_app ...
במקום להפעיל את Android ישירות, הפקודה
cvd start
הזו משתמשת באפליקציית EFI כדי להפעיל את Android.
דיווח על באגים ויצירת קשר עם צוות תוכנת האתחול
כדי לדווח על באג ב-GBL, עוברים אל רכיב Android Generic Bootloader ב-Buganizer.
אם יש לך שאלות, אפשר לפנות לצוות GBL באימייל android-gbl@google.com
.