OTA ตามบล็อก

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

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

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

หมายเหตุ: คุณต้องมีระบบ 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 สำหรับอุปกรณ์ที่มีอยู่

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

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

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

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

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

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

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

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

  • ขนาดการดาวน์โหลด

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

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

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

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

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

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

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

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