פריסה של GBL

בדף הזה נסביר איך לפרוס את קובץ ה-binary של GBL.

דרישות הקושחה לאתחול

כדי להשתמש ב-GBL, קושחת האתחול צריכה לעמוד בדרישות הבאות:

  • תאימות ל-UEFI. הקושחה צריכה להטמיע את הפרוטוקולים הנדרשים של UEFI ולהשתמש בהם. הקושחה צריכה גם לאפשר תוספי ספציפיים לספק באמצעות פרוטוקולים מוגדרים של UEFI.

  • אבטחה. הקושחה חייבת ליישם את כל ההיבטים של Android Verified Boot‏ (AVB), כדי להבטיח שרק תמונות מאומתות נטענות.

  • מצבי הפעלה. הקובץ הבינארי אמור להיות מסוגל לטפל במצבי אתחול שונים, כמו אתחול רגיל, אתחול לשחזור ואתחול מהיר.

  • חלוקה דינמית. קושחת האתחול צריכה ליישם לוגיקה לבחירת חריץ כדי שתתמוך בקריאה של חריץ האתחול הנכון A/B ותהיה תואמת למחיצות דינמיות ולנתוני משתמש ב-super.

  • הגדרות מערכת ההפעלה. הקושחה צריכה להיות מסוגלת לשנות את שורת הפקודה של הליבה, את עץ המכשיר (DTB) ואת bootconfig עם התאמות אישיות של OEM שנדרשות כדי להפעיל את המכשיר.

  • טעינה של מכונה וירטואלית מוגנת. הקובץ הבינארי אמור לטעון באופן תקין קושחת VM מוגנת שאומתה מראש לפני ליבה של Android בנוכחות מכונות וירטואליות מוגנות. למידע נוסף, ראו רצף האתחול של Microdroid.

  • ניהול זיכרון. קושחת האתחול חייבת לתמוך ב-API להקצאת זיכרון של UEFI.

  • תאימות ותאימות לאחור. הקושחה אמורה לפעול במכשירים עם ספקים שונים, מעבדי SoC שונים ולשמור על תאימות לאחור עם גרסת Android המתאימה.

תמיכה בקושחת אתחול

עם השינויים הנדרשים כדי לעמוד בדרישות שמפורטות בקטע הקודם, הטמעות הקושחה הבאות של UEFI פועלות עם ה-GBF:

  • EDK2‏ (Tianocore) EDK2 היא הטמעה פופולרית של UEFI בקוד פתוח. תמיכה ב-GBL נדרשת למחוללי אתחול שמבוססים על EDK2, ותמיכה ב-UEFI כבר קיימת.
  • U-Boot. פרויקט bootloader גמיש ופופולרי בקוד פתוח, שמקבל תאימות ל-UEFI לשימוש ב-GBL.
  • LittleKernel‏ (LK). מנהל אתחול בקוד פתוח שספקים מסוימים משתמשים בו.

הפעלת GBL

אפשר לקבל קובץ בינארי של GBL שנוצר מראש כדי להריץ אותו, או ליצור קובץ בינארי משלכם ולהריץ אותו.

איך מקבלים ומפעילים את קובץ ה-GBL הבינארי

GBL מופץ כקובץ בינארי יחיד של אפליקציית EFI. אפשר לעדכן את הקובץ הבינארי הזה בנפרד מקושחת הבסיס של המכשיר באמצעות מנגנון העדכון הרגיל של Android.

החל מגרסה 16 של Android, אם אתם שולחים מכשיר שמבוסס על ערכת שבבים מסוג ARM-64, מומלץ מאוד לפרוס את הגרסה העדכנית ביותר של GBL בחתימה של Google ולשלב אותה בשרשרת האתחול.

פיתוח והרצה של GBL

כדי ליצור ולהריץ את GBL:

  1. מוודאים שכלי המאגר ו-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.