OTA dựa trên khối

Bạn có thể bật cập nhật qua mạng (OTA) dựa trên khối cho các thiết bị mới chạy Android 5.0. OTA là cơ chế mà các OEM cập nhật từ xa phân vùng hệ thống của thiết bị:

  • Android 5.0 và các phiên bản mới hơn sử dụng các bản cập nhật OTA chặn để đảm bảo rằng mỗi thiết bị sử dụng cùng một phân vùng. Thay vì so sánh các tệp riêng lẻ và tính toán các bản vá nhị phân, khối OTA xử lý toàn bộ phân vùng dưới dạng một tệp và tính toán một bản vá nhị phân duy nhất, đảm bảo phân vùng kết quả chứa chính xác các bit dự định. Điều này cho phép hình ảnh hệ thống của thiết bị đạt được trạng thái tương tự thông qua fastboot hoặc OTA.
  • Android 4.4 và các phiên bản cũ hơn sử dụng bản cập nhật tệp OTA, đảm bảo các thiết bị chứa nội dung, quyền và chế độ tệp tương tự nhưng cho phép siêu dữ liệu như dấu thời gian và bố cục của bộ nhớ cơ bản khác nhau giữa các thiết bị dựa trên phương pháp cập nhật.

Bởi vì khối OTA đảm bảo rằng mỗi thiết bị sử dụng cùng một phân vùng, nên nó cho phép sử dụng dm-verity để ký mật mã vào phân vùng hệ thống. Để biết chi tiết về dm-verity, hãy xem Khởi động đã xác minh .

Lưu ý: Bạn phải có hệ thống OTA khối hoạt động trước khi sử dụng dm-verity.

khuyến nghị

Đối với các thiết bị chạy Android 5.0 trở lên, hãy sử dụng khối cập nhật OTA trong ROM gốc. Để tạo OTA dựa trên khối cho các bản cập nhật tiếp theo, hãy chuyển tùy chọn --block cho ota_from_target_files .

Đối với các thiết bị chạy Android 4.4 trở xuống, hãy sử dụng tệp cập nhật OTA. Mặc dù có thể chuyển đổi thiết bị bằng cách gửi OTA toàn khối của Android 5.0 trở lên, nhưng việc này yêu cầu gửi OTA đầy đủ lớn hơn đáng kể so với OTA gia tăng (và do đó không được khuyến khích).

Vì dm-verity yêu cầu hỗ trợ bộ nạp khởi động chỉ có trong các thiết bị mới chạy Android 5.0 trở lên nên bạn không thể bật dm-verity cho các thiết bị hiện có.

Các nhà phát triển làm việc trên hệ thống OTA Android (hình ảnh khôi phục và tập lệnh tạo OTA) có thể cập nhật các thay đổi bằng cách đăng ký vào danh sách gửi thư android-ota@googlegroups.com .

Tệp so với khối OTA

Trong OTA dựa trên tệp, Android cố gắng thay đổi nội dung của phân vùng hệ thống ở lớp hệ thống tệp (trên cơ sở từng tệp). Bản cập nhật không đảm bảo ghi các tệp theo thứ tự nhất quán, có thời gian sửa đổi lần cuối hoặc siêu khối nhất quán hoặc thậm chí đặt các khối ở cùng một vị trí trên thiết bị khối. Vì lý do này, các OTA dựa trên tệp không thành công trên thiết bị hỗ trợ dm-verity; sau khi thử OTA, thiết bị không khởi động được.

Trong OTA dựa trên khối, Android cung cấp cho thiết bị sự khác biệt giữa hai hình ảnh khối (chứ không phải hai bộ tệp). Bản cập nhật sẽ kiểm tra bản dựng thiết bị dựa trên máy chủ bản dựng tương ứng ở cấp khối (bên dưới hệ thống tệp) bằng một trong các phương pháp sau:

  • Cập nhật đầy đủ . Sao chép toàn bộ hình ảnh hệ thống rất đơn giản và giúp tạo bản vá dễ dàng nhưng cũng tạo ra các hình ảnh lớn có thể khiến việc áp dụng các bản vá trở nên đắt đỏ.
  • Cập nhật gia tăng . Việc sử dụng công cụ khác biệt nhị phân sẽ tạo ra các hình ảnh nhỏ hơn và giúp ứng dụng bản vá trở nên dễ dàng nhưng lại tốn nhiều bộ nhớ khi tự tạo bản vá.

Lưu ý: adb fastboot đặt các bit giống hệt nhau trên thiết bị dưới dạng OTA đầy đủ, do đó việc flash tương thích với khối OTA.

Cập nhật hệ thống chưa sửa đổi

Đối với các thiết bị có phân vùng hệ thống chưa sửa đổi chạy Android 5.0, quá trình tải xuống và cài đặt cho một khối OTA vẫn giống như đối với một tệp OTA. Tuy nhiên, bản cập nhật OTA có thể bao gồm một hoặc nhiều điểm khác biệt sau:

  • Kích thước tải xuống . Các bản cập nhật OTA toàn khối có kích thước tương đương với các bản cập nhật OTA tệp đầy đủ và các bản cập nhật gia tăng có thể chỉ lớn hơn vài megabyte.

    so sánh kích thước OTA

    Hình 1. So sánh kích thước OTA của Nexus 6 giữa các bản phát hành Android 5.0 và Android 5.1 (các thay đổi về bản dựng mục tiêu khác nhau)

    Nói chung, các bản cập nhật OTA khối gia tăng lớn hơn các bản cập nhật OTA tệp gia tăng do:

    • Bảo quản dữ liệu . OTA dựa trên khối lưu giữ nhiều dữ liệu hơn (siêu dữ liệu tệp, dữ liệu dm-verity, bố cục ext4, v.v.) so với OTA dựa trên tệp.
    • Sự khác biệt về thuật toán tính toán . Trong bản cập nhật tệp OTA, nếu đường dẫn tệp giống hệt nhau trong cả hai bản dựng thì gói OTA không chứa dữ liệu cho tệp đó. Trong bản cập nhật OTA khối, việc xác định ít hoặc không có thay đổi nào trong tệp phụ thuộc vào chất lượng của thuật toán tính toán bản vá và bố cục dữ liệu tệp trong cả hệ thống nguồn và đích.
  • Nhạy cảm với flash và RAM bị lỗi . Nếu một tệp bị hỏng, tệp OTA sẽ thành công miễn là nó không chạm vào tệp bị hỏng, nhưng khối OTA sẽ không thành công nếu phát hiện bất kỳ lỗi nào trên phân vùng hệ thống.

Cập nhật hệ thống đã sửa đổi

Đối với các thiết bị có phân vùng hệ thống được sửa đổi chạy Android 5.0:

  • Cập nhật OTA khối gia tăng không thành công . Phân vùng hệ thống có thể bị sửa đổi trong quá trình adb remount hoặc do phần mềm độc hại. Tệp OTA chấp nhận một số thay đổi đối với phân vùng, chẳng hạn như việc thêm các tệp không phải là một phần của bản dựng nguồn hoặc đích. Tuy nhiên, chặn OTA không cho phép bổ sung vào phân vùng, vì vậy người dùng sẽ cần cài đặt OTA đầy đủ để ghi đè mọi sửa đổi phân vùng hệ thống) hoặc flash hình ảnh hệ thống mới để kích hoạt các OTA trong tương lai.
  • Cố gắng thay đổi các tập tin đã sửa đổi sẽ gây ra lỗi cập nhật . Đối với cả tệp và khối cập nhật OTA, nếu OTA cố gắng thay đổi tệp đã bị sửa đổi thì bản cập nhật OTA sẽ không thành công.
  • Nỗ lực truy cập các tệp đã sửa đổi sẽ tạo ra lỗi (chỉ dm-verity) . Đối với cả bản cập nhật tệp và khối OTA, nếu dm-verity được bật và OTA cố gắng truy cập các phần đã sửa đổi của hệ thống tệp hệ thống, thì OTA sẽ tạo ra lỗi.