פריסה של GBL

בדף הזה מוסבר איך פורסים את הקובץ הבינארי של 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:

  1. מוודאים שכלי ה-repo ו-Bazel bootstrap מותקנים:

    sudo apt install repo bazel-bootstrap
    
  2. מאתחלים את הספרייה הנוכחית לבקרת גרסאות באמצעות קובץ המניפסט uefi-gbl-mainline:

    repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline
    repo sync -j16
    
  3. יוצרים את אפליקציית ה-EFI:

    ./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
    
  4. מריצים את אפליקציית ה-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.