หน้านี้จะอธิบายวิธีทำให้ไบนารี GBL ใช้งานได้
ข้อกำหนดของเฟิร์มแวร์บูท
หากต้องการใช้ GBL เฟิร์มแวร์สำหรับบูตต้องเป็นไปตามข้อกำหนดต่อไปนี้
การปฏิบัติตามข้อกำหนดของ UEFI เฟิร์มแวร์ต้องติดตั้งใช้งานโปรโตคอล UEFI ที่จำเป็น นอกจากนี้ เฟิร์มแวร์ต้องอนุญาตให้ใช้ส่วนขยายเฉพาะของผู้ให้บริการโดยใช้โปรโตคอล UEFI ที่กําหนด
ความปลอดภัย เฟิร์มแวร์ต้องใช้ทุกแง่มุมของ Android Verified Boot (AVB) เพื่อให้มั่นใจว่ามีเพียงอิมเมจที่ตรวจสอบสิทธิ์เท่านั้นที่โหลด
โหมดการบูต ไบนารีควรจัดการกับโหมดการบูตต่างๆ ได้ เช่น การบูตปกติ การบูตการกู้คืน และการบูตด่วน
การแบ่งพาร์ติชันแบบไดนามิก เฟิร์มแวร์สำหรับบูตต้องใช้ตรรกะการเลือกช่องเพื่อให้รองรับการอ่านช่องบูต A/B ที่ถูกต้อง และเข้ากันได้กับพาร์ติชันแบบไดนามิกและ userdata ใน super
การกําหนดค่าระบบปฏิบัติการ เฟิร์มแวร์ต้องสามารถแก้ไขเคอร์เนล บรรทัดคำสั่ง ต้นไม้อุปกรณ์ (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