OTA แบบบล็อก

คุณสามารถเปิดใช้งานการอัปเดตแบบ over-the-air (OTA) แบบบล็อกสำหรับอุปกรณ์ใหม่ที่ใช้ Android 5.0 OTA เป็นกลไกที่ OEM อัปเดตพาร์ติชันระบบของอุปกรณ์จากระยะไกล:

  • Android 5.0 และเวอร์ชันที่ใหม่กว่าใช้การอัปเดต OTA แบบบล็อกเพื่อให้แน่ใจว่าอุปกรณ์แต่ละเครื่องใช้พาร์ติชันเดียวกันทุกประการ แทนที่จะเปรียบเทียบแต่ละไฟล์และคำนวณไบนารีแพตช์ บล็อก OTA จะจัดการพาร์ติชันทั้งหมดเป็นไฟล์เดียวและคำนวณไบนารีแพตช์เดียว เพื่อให้มั่นใจว่าพาร์ติชันผลลัพธ์นั้นมีบิตที่ต้องการทุกประการ ซึ่งช่วยให้อิมเมจระบบของอุปกรณ์บรรลุสถานะเดียวกันผ่าน fastboot หรือ OTA
  • Android 4.4 และเวอร์ชันก่อนหน้าใช้ไฟล์อัปเดต OTA ซึ่งช่วยให้มั่นใจว่าอุปกรณ์มีเนื้อหาไฟล์ สิทธิ์ และโหมดที่คล้ายคลึงกัน แต่อนุญาตให้ใช้เมตาดาต้า เช่น การประทับเวลา และเค้าโครงของที่เก็บข้อมูลพื้นฐานที่จะแตกต่างกันระหว่างอุปกรณ์โดยอิงตามวิธีการอัปเดต

เนื่องจากบล็อก OTA ช่วยให้มั่นใจได้ว่าอุปกรณ์แต่ละเครื่องใช้พาร์ติชันเดียวกัน จึงทำให้สามารถใช้ dm-verity เพื่อลงนามในพาร์ติชันระบบแบบเข้ารหัสได้ สำหรับรายละเอียดเกี่ยวกับ dm-verity โปรดดูที่ Verified Boot

หมายเหตุ: คุณต้องมีระบบ OTA แบบบล็อกที่ใช้งานได้ก่อนที่จะใช้ dm-verity

ข้อแนะนำ

สำหรับอุปกรณ์ที่เปิดตัวด้วย Android 5.0 หรือใหม่กว่า ให้ใช้บล็อกการอัปเดต OTA ใน ROM จากโรงงาน หากต้องการสร้าง OTA แบบบล็อกสำหรับการอัพเดตครั้งต่อไป ให้ส่งตัวเลือก --block ไปที่ ota_from_target_files

สำหรับอุปกรณ์ที่เปิดตัวด้วย Android 4.4 หรือก่อนหน้า ให้ใช้ไฟล์อัปเดต OTA แม้ว่าจะเป็นไปได้ที่จะเปลี่ยนอุปกรณ์โดยการส่ง OTA แบบบล็อกเต็มรูปแบบของ Android 5.0 หรือใหม่กว่า แต่จะต้องมีการส่ง OTA แบบเต็มที่มีขนาดใหญ่กว่า OTA ที่เพิ่มขึ้นอย่างมาก (ดังนั้นจึงไม่สนับสนุน)

เนื่องจาก dm-verity ต้องการการสนับสนุน bootloader ซึ่งพบได้ในอุปกรณ์ใหม่ที่มาพร้อมกับ Android 5.0 หรือใหม่กว่าเท่านั้น คุณ จึงไม่สามารถ เปิดใช้งาน dm-verity สำหรับอุปกรณ์ที่มีอยู่ได้

นักพัฒนาซอฟต์แวร์ที่ทำงานบนระบบ Android OTA (อิมเมจการกู้คืนและสคริปต์ที่สร้าง OTA) สามารถติดตามการเปลี่ยนแปลงได้โดยสมัครรับรายชื่ออีเมล android-ota@googlegroups.com

ไฟล์กับบล็อก OTA

ในระหว่าง OTA ที่ใช้ไฟล์ Android จะพยายามเปลี่ยนเนื้อหาของพาร์ติชันระบบที่เลเยอร์ระบบไฟล์ (ทีละไฟล์) ไม่รับประกันว่าการอัปเดตจะเขียนไฟล์ตามลำดับที่สอดคล้องกัน มีเวลาแก้ไขล่าสุดหรือซูเปอร์บล็อกที่สอดคล้องกัน หรือแม้แต่วางบล็อกในตำแหน่งเดียวกันบนอุปกรณ์บล็อก ด้วยเหตุนี้ OTA แบบไฟล์จึงล้มเหลวบนอุปกรณ์ที่เปิดใช้งาน dm-verity หลังจากที่พยายาม OTA อุปกรณ์ไม่สามารถบู๊ตได้

ในระหว่าง OTA แบบบล็อก Android จะให้บริการอุปกรณ์ถึงความแตกต่างระหว่างรูปภาพบล็อกทั้งสอง (แทนที่จะเป็นไฟล์สองชุด) การอัพเดตจะตรวจสอบบิลด์ของอุปกรณ์กับเซิร์ฟเวอร์บิลด์ที่เกี่ยวข้องในระดับบล็อก (ต่ำกว่าระบบไฟล์) โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้:

  • อัพเดตแบบเต็ม . การคัดลอกอิมเมจระบบแบบเต็มนั้นง่ายดายและทำให้การสร้างแพตช์เป็นเรื่องง่าย แต่ยังสร้างอิมเมจขนาดใหญ่ที่อาจทำให้การใช้แพตช์มีราคาแพง
  • การปรับปรุงแบบค่อยเป็นค่อยไป การใช้เครื่องมือไบนารีที่แตกต่างกันจะสร้างอิมเมจที่เล็กลงและทำให้แอปพลิเคชันแพตช์เป็นเรื่องง่าย แต่ต้องใช้หน่วยความจำมากเมื่อสร้างแพตช์เอง

หมายเหตุ: adb fastboot จะวางบิตเดียวกันบนอุปกรณ์เป็น OTA แบบเต็ม ดังนั้นการแฟลชจึงเข้ากันได้กับบล็อก OTA

อัพเดตระบบที่ยังไม่ได้แก้ไข

สำหรับอุปกรณ์ที่มีพาร์ติชันระบบ ที่ยังไม่ได้แก้ไข ซึ่งใช้ Android 5.0 กระบวนการดาวน์โหลดและติดตั้งสำหรับบล็อก OTA จะยังคงเหมือนกับไฟล์ OTA อย่างไรก็ตาม การอัปเดต OTA เองอาจมีข้อแตกต่างต่อไปนี้อย่างน้อยหนึ่งข้อ:

  • ขนาดการดาวน์โหลด . การอัปเดต OTA แบบบล็อกแบบเต็มมีขนาดประมาณเดียวกับการอัปเดต OTA ไฟล์แบบเต็ม และการอัปเดตเพิ่มเติมอาจมีขนาดใหญ่ขึ้นเพียงไม่กี่เมกะไบต์

    การเปรียบเทียบขนาด OTA

    รูปที่ 1 เปรียบเทียบขนาด OTA ของ Nexus 6 ระหว่าง Android 5.0 และ Android 5.1 (การเปลี่ยนแปลงบิลด์เป้าหมายที่แตกต่างกัน)

    โดยทั่วไป การอัปเดต OTA แบบบล็อกส่วนเพิ่มจะมีขนาดใหญ่กว่าการอัปเดต OTA ของไฟล์ส่วนเพิ่มเนื่องจาก:

    • การเก็บรักษาข้อมูล OTA แบบบล็อกจะรักษาข้อมูล (ข้อมูลเมตาของไฟล์ ข้อมูล dm-verity เค้าโครง ext4 ฯลฯ) มากกว่า OTA แบบไฟล์
    • ความแตกต่างของอัลกอริธึมการคำนวณ ในการอัปเดตไฟล์ OTA หากเส้นทางของไฟล์เหมือนกันในทั้งสองรุ่น แพ็คเกจ OTA จะไม่มีข้อมูลสำหรับไฟล์นั้น ในการอัพเดต OTA แบบบล็อก การพิจารณาการเปลี่ยนแปลงเพียงเล็กน้อยหรือไม่มีเลยในไฟล์จะขึ้นอยู่กับคุณภาพของอัลกอริธึมการคำนวณแพตช์และโครงร่างของข้อมูลไฟล์ทั้งในระบบต้นทางและเป้าหมาย
  • ความไวต่อแฟลชและ RAM ที่ผิดพลาด หากไฟล์เสียหาย ไฟล์ OTA จะทำงานสำเร็จตราบใดที่ไม่ได้สัมผัสกับไฟล์ที่เสียหาย แต่บล็อก OTA จะล้มเหลวหากตรวจพบความเสียหายใดๆ บนพาร์ติชันระบบ

อัพเดตระบบที่แก้ไข

สำหรับอุปกรณ์ที่มี การแก้ไข พาร์ติชันระบบที่ใช้ Android 5.0:

  • การอัปเดต OTA แบบบล็อกส่วนเพิ่มล้มเหลว พาร์ติชันระบบอาจถูกแก้ไขระหว่าง adb remount หรือเป็นผลมาจากมัลแวร์ ไฟล์ OTA ยอมรับการเปลี่ยนแปลงบางอย่างในพาร์ติชัน เช่น การเพิ่มไฟล์ที่ไม่ได้เป็นส่วนหนึ่งของซอร์สหรือบิลด์เป้าหมาย อย่างไรก็ตาม บล็อก OTA ไม่ยอมให้มีการเพิ่มพาร์ติชัน ดังนั้นผู้ใช้จะต้องติดตั้ง OTA แบบเต็มเพื่อเขียนทับการแก้ไขพาร์ติชันระบบ) หรือแฟลชอิมเมจระบบใหม่เพื่อเปิดใช้งาน OTA ในอนาคต
  • ความพยายามที่จะเปลี่ยนแปลงไฟล์ที่แก้ไขทำให้การอัปเดตล้มเหลว สำหรับการอัปเดต OTA ทั้งไฟล์และบล็อก หาก OTA พยายามเปลี่ยนไฟล์ที่ได้รับการแก้ไข การอัปเดต OTA จะล้มเหลว
  • ความพยายามที่จะเข้าถึงไฟล์ที่แก้ไขทำให้เกิดข้อผิดพลาด (dm-verity เท่านั้น) สำหรับการอัปเดต OTA ทั้งไฟล์และบล็อก หากเปิดใช้งาน dm-verity และ OTA พยายามเข้าถึงส่วนที่แก้ไขของระบบไฟล์ระบบ OTA จะสร้างข้อผิดพลาด