หากต้องการใช้การอัปเดตผ่านอากาศ (OTA)
Bootloader ต้องเข้าถึง RAM Disk การกู้คืนได้ในระหว่างการบูต หากอุปกรณ์
ใช้อิมเมจการกู้คืน AOSP ที่ไม่มีการแก้ไข Bootloader จะอ่าน 32 ไบต์แรก
ในพาร์ติชัน misc
หากข้อมูลในพาร์ติชันดังกล่าวตรงกับ boot-recovery
Bootloader จะบูตไปยังอิมเมจ recovery
วิธีนี้จะช่วยให้งานการกู้คืนที่รอดำเนินการ (เช่น การใช้ OTA หรือการนำข้อมูลออก) ดำเนินการต่อไปจนเสร็จสมบูรณ์ได้
ดูรายละเอียดเกี่ยวกับเนื้อหาของบล็อกใน Flash ที่ใช้สำหรับการสื่อสารโดย การกู้คืนและ Bootloader ได้ที่ bootable/recovery/bootloader_message/bootloader_message.h
อุปกรณ์ที่มีการอัปเดต A/B
หากต้องการรองรับการอัปเดต OTA ในอุปกรณ์ที่ใช้การอัปเดต A/B โปรดตรวจสอบว่าโปรแกรมโหลดระบบของอุปกรณ์เป็นไปตามเกณฑ์ต่อไปนี้
เกณฑ์ทั่วไป
พาร์ติชันทั้งหมดที่อัปเดตผ่าน OTA ควรจะอัปเดตได้ขณะที่บูตระบบหลัก (และไม่อัปเดตในโหมดการกู้คืน)
หากต้องการบูตพาร์ติชัน
system
ตัวโหลดโปรแกรมจะส่งค่าต่อไปนี้ในบรรทัดคำสั่งเคอร์เนล:ro root=/dev/[node] rootwait init=/init
เฟรมเวิร์ก Android มีหน้าที่เรียกใช้
markBootSuccessful
จาก HAL Bootloader ไม่ควรทำเครื่องหมายพาร์ติชันว่าบูตสำเร็จ
การรองรับ HAL การควบคุมการบูต
Bootloader ต้องรองรับ boot_control
HAL ตามที่กำหนดไว้ใน
hardware/libhardware/include/hardware/boot_control.h
โปรแกรมอัปเดตจะค้นหา
การควบคุมการบูต
HAL
อัปเดตช่องบูตที่ไม่ได้ใช้งาน เปลี่ยนช่องที่ใช้งานอยู่โดยใช้
HAL และรีบูตเข้าสู่ระบบปฏิบัติการที่อัปเดตแล้ว โปรดดูรายละเอียดที่หัวข้อการใช้ HAL ควบคุมการบูต
การสนับสนุนสำหรับสล็อต
Bootloader ต้องรองรับฟังก์ชันการทำงานที่เกี่ยวข้องกับพาร์ติชันและสล็อต ซึ่งรวมถึง
ชื่อพาร์ติชันต้องมีคำต่อท้ายที่ระบุว่าพาร์ติชันใดเป็นของสล็อตใดใน Bootloader สำหรับแต่ละพาร์ติชันดังกล่าว จะมีตัวแปรที่เกี่ยวข้อง
has-slot:partition base name
ที่มีค่าเป็นyes
โดยจะตั้งชื่อสล็อตตามลำดับตัวอักษรเป็น a, b, c ฯลฯ ซึ่งสอดคล้องกับพาร์ติชันที่มีคำต่อท้าย_a
,_b
,_c
ฯลฯ Bootloader ควรแจ้งระบบปฏิบัติการว่าสล็อตใดที่บูตโดยใช้พร็อพเพอร์ตี้บรรทัดคำสั่งandroidboot.slot_suffix
พร็อพเพอร์ตี้นี้ตั้งค่าผ่าน bootconfig สำหรับอุปกรณ์ที่เปิดตัวด้วย Android 12 ขึ้นไประบบจะรีเซ็ตค่า
slot-retry-count
เป็นค่าบวก (โดยปกติคือ3
) ไม่ว่าจะโดย HAL ของการควบคุมการบูตผ่านการเรียกกลับsetActiveBootSlot
หรือ ผ่านคำสั่งfastboot set_active
เมื่อแก้ไขพาร์ติชันที่เป็นส่วนหนึ่งของสล็อต Bootloader จะล้าง "บูตสำเร็จ" และรีเซ็ตจำนวนครั้งที่ลองใหม่สำหรับสล็อต
นอกจากนี้ Bootloader ควรระบุช่องที่จะโหลดด้วย รูปแสดง ตัวอย่างกระบวนการตัดสินใจ

กำหนดช่องที่จะลอง อย่าพยายามโหลดสล็อตที่มีเครื่องหมาย
slot-unbootable
ช่องนี้ควรสอดคล้องกับค่าที่แสดงผลโดย fastboot และเรียกว่าช่องปัจจุบันหากช่องปัจจุบันไม่ได้ทําเครื่องหมายเป็น
slot-successful
และมีslot-retry-count = 0
ให้ทําเครื่องหมายช่องปัจจุบันเป็นslot-unbootable
จากนั้น เลือกช่องอื่นที่ไม่ได้ทำเครื่องหมายunbootable
และทำเครื่องหมายเป็นslot-successful
ช่องนี้จะเป็นช่องที่เลือก หากไม่มีสล็อตปัจจุบัน ให้ใช้งาน ให้บูตไปยังการกู้คืนหรือแสดงข้อความแสดงข้อผิดพลาดที่มีความหมายแก่ผู้ใช้เลือก
boot.img
ที่เหมาะสมและระบุเส้นทางไปยังพาร์ติชันระบบที่ถูกต้อง ในบรรทัดคำสั่งของเคอร์เนลป้อนข้อมูลพารามิเตอร์บรรทัดคำสั่งของเคอร์เนล
slot_suffix
บูต หากไม่ได้ทำเครื่องหมาย
slot-successful
ให้ลดslot-retry-count
fastboot
ยูทิลิตีจะกำหนดพาร์ติชันที่จะแฟลชเมื่อเรียกใช้คำสั่งแฟลช
เช่น การเรียกใช้คำสั่ง fastboot flash system system.img
จะค้นหาตัวแปร current-slot
ก่อน จากนั้นจะต่อผลลัพธ์
เข้ากับระบบเพื่อสร้างชื่อพาร์ติชันที่ควรแฟลช
(system_a
, system_b
ฯลฯ)
เมื่อตั้งค่าสล็อตปัจจุบันโดยใช้คำสั่ง fastboot set_active
หรือคำสั่ง
HAL การควบคุมการบูต setActiveBootSlot
โปรแกรมโหลดการบูตควรจะอัปเดต
สล็อตปัจจุบัน ล้าง slot-unbootable
และ slot-successful
แล้วรีเซ็ต
จำนวนครั้งที่ลองใหม่ (นี่เป็นวิธีเดียวในการล้าง slot-unbootable
)
อุปกรณ์ที่ไม่มีการอัปเดต A/B
หากต้องการรองรับการอัปเดต OTA ในอุปกรณ์ที่ไม่ได้ใช้การอัปเดต A/B (ดูอุปกรณ์ที่อัปเดตแบบไม่ใช่ A/B ได้) ให้ตรวจสอบว่าโปรแกรมโหลดระบบของอุปกรณ์เป็นไปตามเกณฑ์ต่อไปนี้
พาร์ติชัน
recovery
ควรมีอิมเมจที่อ่านอิมเมจระบบจากพาร์ติชันที่รองรับ (cache
,userdata
) และเขียนลงในพาร์ติชันsystem
ได้Bootloader ควรรองรับการบูตเข้าสู่โหมดการกู้คืนโดยตรง
หากรองรับการอัปเดตรูปภาพวิทยุ
recovery
พาร์ติชันควร แฟลชวิทยุได้ด้วย ซึ่งทำได้ 2 วิธีดังนี้Bootloader จะกะพริบวิทยุ ในกรณีนี้ คุณควรจะ รีบูตจากพาร์ติชันการกู้คืนกลับไปที่ Bootloader เพื่อทำการ อัปเดตให้เสร็จสมบูรณ์ได้
อิมเมจการกู้คืนจะแฟลชวิทยุ ฟังก์ชันนี้อาจมีให้ในรูปแบบ ไลบรารีไบนารีหรือยูทิลิตี