bootloader เป็นอิมเมจที่เป็นกรรมสิทธิ์ของผู้ขายซึ่งรับผิดชอบในการดึงเคอร์เนลบนอุปกรณ์ โปรแกรมโหลดบูตจะปกป้องสถานะของอุปกรณ์และรับผิดชอบในการเริ่มต้น Trusted Execution Environment (TEE) และเชื่อมโยงรูทของความไว้วางใจ บูตโหลดเดอร์ยังตรวจสอบความสมบูรณ์ของพาร์ติชั่นสำหรับ boot
และ recovery
ก่อนที่จะย้ายการดำเนินการไปยังเคอร์เนล
ตัวอย่างโฟลว์ bootloader
นี่คือตัวอย่างโฟลว์ bootloader:
โหลดและเริ่มต้นหน่วยความจำ
ตรวจสอบอุปกรณ์ตาม ขั้นตอน Verified Boot
ตรวจสอบพาร์ติชันสำหรับบูต รวมถึง
boot
,dtbo
,init_boot
และrecovery
ตามขั้นตอน Verified Boot ในขั้นตอนนี้ ให้ตรวจสอบเวอร์ชัน ส่วนหัวของอิมเมจสำหรับบูต และแยกวิเคราะห์ส่วนหัวตามลำดับหากใช้ การอัปเดต A/B ให้กำหนดช่องปัจจุบันที่จะบูต
ตรวจสอบว่าควรบูตโหมดการกู้คืนหรือไม่ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การสนับสนุนการอัปเดต OTA
โหลดอิมเมจสำหรับบูต เช่น
boot.img
,vendor_boot.img
,init_boot.img
และอิมเมจสำหรับบูตของผู้จำหน่ายที่เป็นกรรมสิทธิ์อื่นๆ อิมเมจสำหรับบูตเหล่านี้ประกอบด้วยอิมเมจเคอร์เนลและ ramdiskโหลดเคอร์เนลลงในหน่วยความจำเป็นไบนารี่ที่ถูกบีบอัดด้วยตนเอง เคอร์เนลจะขยายขนาดตัวเองและเริ่มดำเนินการในหน่วยความจำ
โหลด ramdisks และส่วน bootconfig ลงในหน่วยความจำเพื่อสร้าง
initramfs
คุณสมบัติเพิ่มเติมที่เกี่ยวข้องกับ bootloader
ต่อไปนี้เป็นรายการคุณสมบัติเพิ่มเติมที่เกี่ยวข้องกับ bootloader ที่คุณสามารถใช้ได้:
การซ้อนทับแผนผังอุปกรณ์ (DTO) การซ้อนทับแผนผังอุปกรณ์ ช่วยให้ bootloader รองรับการกำหนดค่าฮาร์ดแวร์ที่แตกต่างกัน DTO ถูกคอมไพล์เป็น Device Tree Blob (DTB) ซึ่งใช้โดย Bootloader
การสุ่มที่อยู่เสมือนเคอร์เนลอิมเมจ bootloader รองรับการสุ่มที่อยู่เสมือนที่โหลดอิมเมจเคอร์เนล หากต้องการสุ่มที่อยู่ ให้ตั้ง
RANDOMIZE_BASE
เป็นtrue
ในการกำหนดค่าเคอร์เนล bootloader ต้องจัดเตรียมเอนโทรปีโดยส่งค่า u64 แบบสุ่มในโหนดแผนผังอุปกรณ์/chosen/kaslr-seed
บูตที่ตรวจสอบแล้ว Verified Boot ช่วยให้ bootloader มั่นใจได้ว่าโค้ดที่ดำเนินการทั้งหมดมาจากแหล่งที่เชื่อถือได้
การกำหนดค่าการบูต การกำหนดค่าการบูต ใช้งานได้ใน Android 12 ขึ้นไปและเป็นกลไกในการส่งรายละเอียดการกำหนดค่าจากบิลด์และโปรแกรมโหลดบูตไปยังระบบปฏิบัติการ ก่อน Android 12 จะใช้พารามิเตอร์บรรทัดคำสั่งเคอร์เนลที่มีคำนำหน้าเป็น
androidboot
การอัปเดตแบบ Over-the-air (OTA) อุปกรณ์ Android ในภาคสนามสามารถรับและติดตั้งการอัปเดต OTA ให้กับระบบ ซอฟต์แวร์แอป และกฎเขตเวลาได้ คุณลักษณะนี้มีผลกระทบต่อการใช้งาน Bootloader ของคุณ สำหรับข้อมูลทั่วไปเกี่ยวกับ OTA โปรดดู การอัปเดต OTA สำหรับรายละเอียดการใช้งาน OTA เฉพาะโปรแกรมโหลดบูต โปรดดูที่ การสนับสนุนการอัปเดต OTA
การผูกเวอร์ชัน การเชื่อมโยงเวอร์ชัน จะผูกคีย์ความปลอดภัยกับระบบปฏิบัติการและเวอร์ชันระดับแพตช์ การเชื่อมโยงเวอร์ชันช่วยให้แน่ใจว่าผู้โจมตีที่ค้นพบจุดอ่อนในระบบเวอร์ชันเก่าหรือซอฟต์แวร์ TEE จะไม่สามารถย้อนกลับอุปกรณ์กลับไปเป็นเวอร์ชันที่มีช่องโหว่และใช้คีย์ที่สร้างด้วยเวอร์ชันที่ใหม่กว่าได้ bootloader ต้องให้ข้อมูลบางอย่างเพื่อรองรับการผูกเวอร์ชัน สำหรับข้อมูลเพิ่มเติม โปรดดู ข้อมูลเวอร์ชันในคุณสมบัติ AVB
บรรทัดคำสั่งเคอร์เนล
เชื่อมต่อบรรทัดคำสั่งเคอร์เนลจากตำแหน่งต่อไปนี้:
บรรทัดคำสั่ง Bootloader: ชุดของพารามิเตอร์คงที่และไดนามิกที่กำหนดโดย bootloader
โครงสร้างอุปกรณ์: จากโหนด
chosen/bootargs
defconfig
: จากCONFIG_CMDLINE
boot.img
: จากบรรทัดคำสั่ง (สำหรับออฟเซ็ตและขนาด อ้างถึงsystem/core/mkbootimg/bootimg.h
ตั้งแต่ Android 12 สำหรับพารามิเตอร์ androidboot.*
ที่เราต้องส่งผ่านไปยังพื้นที่ผู้ใช้ Android เราสามารถใช้ bootconfig แทนบรรทัดคำสั่งเคอร์เนลได้