หน้านี้จะอธิบายวิธีติดตั้งใช้งานไบนารี GBL
ข้อกำหนดของเฟิร์มแวร์บูต
หากต้องการใช้ GBL เฟิร์มแวร์การบูตต้องเป็นไปตามข้อกำหนดต่อไปนี้
การปฏิบัติตามข้อกำหนดของ UEFI เฟิร์มแวร์ต้องติดตั้งใช้งานและใช้ โปรโตคอล UEFI ที่จำเป็น เฟิร์มแวร์ต้องอนุญาตให้ใช้ส่วนขยายเฉพาะของผู้ให้บริการ โดยใช้โปรโตคอล UEFI ที่กำหนดด้วย
ความปลอดภัย เฟิร์มแวร์ต้องใช้การเปิดเครื่องที่ได้รับการยืนยัน (AVB) ของ Android ทุกด้าน เพื่อให้มั่นใจว่าจะโหลดเฉพาะอิมเมจที่ได้รับการตรวจสอบสิทธิ์เท่านั้น
โหมดการเปิดเครื่อง ไบนารีควรจัดการโหมดการบูตต่างๆ ได้ เช่น การบูตปกติ การบูตกู้คืน และ Fastboot
การแบ่งพาร์ติชันแบบไดนามิก เฟิร์มแวร์การบูตต้องใช้ตรรกะการเลือกสล็อตเพื่อให้รองรับการอ่านสล็อตการบูต A/B ที่ถูกต้องและเข้ากันได้กับพาร์ติชันแบบไดนามิกและ userdata ใน Super
การกำหนดค่าระบบปฏิบัติการ เฟิร์มแวร์ต้องสามารถแก้ไขบรรทัดคำสั่งเคอร์เนล Device Tree (DTB) และ Bootconfig ด้วยการปรับแต่ง OEM ที่จำเป็นต่อการบูตอุปกรณ์
กำลังโหลด VM ที่มีการป้องกัน ไบนารีควรโหลดเฟิร์มแวร์ VM ที่ได้รับการป้องกันซึ่งได้รับการยืนยันล่วงหน้าอย่างถูกต้องก่อนเคอร์เนล Android ในกรณีที่มี VM ที่ได้รับการป้องกัน ดูข้อมูลเพิ่มเติมได้ที่ลำดับการบูตของ Microdroid
การจัดการหน่วยความจำ เฟิร์มแวร์สำหรับบูตต้องรองรับ API การจัดสรรหน่วยความจำ UEFI
ความเข้ากันได้และความเข้ากันได้แบบย้อนหลัง เฟิร์มแวร์ควรทำงานในอุปกรณ์ ที่มีผู้จำหน่ายและ SoC ต่างกัน รวมถึงรักษาความเข้ากันได้แบบย้อนหลังกับ เวอร์ชัน Android ที่เกี่ยวข้อง
การรองรับเฟิร์มแวร์บูต
การติดตั้งเฟิร์มแวร์ UEFI ต่อไปนี้จะใช้ได้กับ GBF เมื่อมีการแก้ไขที่จำเป็นเพื่อรองรับข้อกำหนดในส่วนก่อนหน้า
- EDK2 (Tianocore) EDK2 เป็นการใช้งาน UEFI แบบโอเพนซอร์สที่ได้รับความนิยม ต้องมีการรองรับ GBL สำหรับโปรแกรมโหลด ที่ใช้ EDK2 และมีการรองรับ UEFI อยู่แล้ว
- U-Boot โปรเจ็กต์โปรแกรมโหลดระบบปฏิบัติการแบบโอเพนซอร์สที่ยืดหยุ่นและใช้กันอย่างแพร่หลาย ซึ่งกำลังได้รับความเข้ากันได้กับ UEFI สำหรับการใช้งาน GBL
- LittleKernel (LK) โปรแกรมโหลด โอเพนซอร์สที่ผู้ให้บริการบางรายใช้
เรียกใช้ GBL
คุณสามารถรับไบนารี GBL ที่สร้างไว้ล่วงหน้าเพื่อเรียกใช้ หรือจะสร้างเองแล้วเรียกใช้ก็ได้
รับและเรียกใช้ไบนารี GBL
GBL จะจัดจำหน่ายเป็นไบนารีแอป EFI เดียว คุณอัปเดตไบนารีนี้ แยกจากเฟิร์มแวร์พื้นฐานของอุปกรณ์ได้โดยใช้กลไกการอัปเดตมาตรฐานของ Android
ตั้งแต่ Android 16 เป็นต้นไป หากคุณจัดส่งอุปกรณ์ที่ใช้ชิปเซ็ต ARM-64 เราขอแนะนำเป็นอย่างยิ่งให้คุณติดตั้งใช้งาน GBL เวอร์ชันล่าสุดที่ Google ลงนาม และผสานรวมเข้ากับห่วงโซ่การบูต
สร้างและเรียกใช้ GBL
วิธีสร้างและเรียกใช้ GBL
ตรวจสอบว่าคุณได้ติดตั้งเครื่องมือ Repo และ Bazel Bootstrap แล้ว
sudo apt install repo bazel-bootstrap
เริ่มต้นไดเรกทอรีปัจจุบันสำหรับการควบคุมแหล่งที่มาโดยใช้
uefi-gbl-mainline
ไฟล์ Manifest ดังนี้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 ...
cvd start
คำสั่งนี้ใช้แอป EFI เพื่อบูต Android แทนที่จะบูต Android โดยตรง
รายงานข้อบกพร่องและติดต่อทีม Bootloader
หากต้องการรายงานข้อบกพร่องสำหรับ GBL ให้ไปที่คอมโพเนนต์โปรแกรมโหลดบูตทั่วไปของ Android ใน Buganizer
หากมีคำถาม โปรดติดต่อทีม GBL โดยส่งอีเมลไปที่ android-gbl@google.com