Bạn có thể bật tính năng cập nhật không dây (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à OEM cập nhật từ xa phân vùng hệ thống của thiết bị:
- Android 5.0 trở lê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 chính xác 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, OTA theo khối sẽ 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ự kiến. Điều này cho phép hình ảnh hệ thống thiết bị đạt được trạng thái tương tự thông qua tính năng khởi động nhanh 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 OTA của tệp, đảm bảo các thiết bị chứa nội dung, quyền và chế độ tệp tương tự nhau, 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ơ sở khác nhau giữa các thiết bị dựa trên phương thức cập nhật.
Vì OTA chặn đảm bảo rằng mỗi thiết bị sử dụng cùng một phân vùng, nên tính năng này cho phép sử dụng dm-verity để ký mã hoá phân vùng hệ thống. Để biết thông tin chi tiết về dm-verity, hãy xem phần Khởi động được xác minh.
Lưu ý: Bạn phải có hệ thống OTA chặn đang hoạt động trước khi sử dụng dm-verity.
Đề xuất
Đối với các thiết bị chạy Android 5.0 trở lên, hãy chặn các bản 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 truyền tuỳ chọn --block
đến ota_from_target_files
.
Đối với các thiết bị ra mắt với Android 4.4 trở về trước, hãy sử dụng bản cập nhật OTA qua tệp. Mặc dù có thể chuyển đổi thiết bị bằng cách gửi một OTA toàn bộ khối của Android 5.0 trở lên, nhưng bạn cần gửi một OTA đầy đủ lớn hơn đáng kể so với OTA gia tăng (vì vậy, bạn không nên thực hiện việc này).
Vì dm-verity yêu cầu tính năng hỗ trợ trình tải 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 đang làm việc trên hệ thống OTA của Android (hình ảnh khôi phục và các tập lệnh tạo OTA) có thể theo dõi các thay đổi bằng cách đăng ký danh sách gửi thư android-ota@googlegroups.com.
Tệp so với OTA khối
Trong quá trình OTA dựa trên tệp, Android sẽ cố gắng thay đổi nội dung của phân vùng hệ thống ở lớp hệ thống tệp (theo từng tệp). Không đảm bảo rằng bản cập nhật sẽ ghi các tệp theo thứ tự nhất quán, có thời gian sửa đổi gần đây nhất 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 bản cập nhật 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ử cập nhật OTA, thiết bị không khởi động.
Trong quá trình OTA dựa trên khối, Android sẽ phân phát cho thiết bị sự khác biệt giữa hai hình ảnh khối (thay vì hai nhóm tệp). Bản cập nhật này sẽ kiểm tra bản dựng thiết bị với máy chủ bản dựng tương ứng ở cấp khối (dưới hệ thống tệp) bằng một trong các phương thức sau:
- Bản cập nhật đầy đủ. Việc 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 bản vá tốn kém.
- Cập nhật gia tăng. Việc sử dụng công cụ so sánh nhị phân sẽ tạo ra các hình ảnh nhỏ hơn và giúp dễ dàng áp dụng bản vá, nhưng lại tốn nhiều bộ nhớ khi tạo bản vá.
Lưu ý: adb fastboot
đặt chính xác các bit trên thiết bị như OTA đầy đủ, vì vậy, tính năng cài đặt ROM tương thích với OTA theo khối.
Cập nhật các hệ thống chưa sửa đổi
Đối với các thiết bị có các phân vùng hệ thống chưa sửa đổi chạy Android 5.0, quy trình tải xuống và cài đặt cho OTA khối vẫn giống như đối với OTA tệp. 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.
Bản cập nhật OTA theo khối đầy đủ có kích thước gần giống với bản cập nhật OTA theo tệp đầy đủ và bản cập nhật tăng dần có thể chỉ lớn hơn vài megabyte.
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)
Nhìn chung, các bản cập nhật OTA theo khối tăng dần lớn hơn các bản cập nhật OTA theo tệp tăng dần do:
- Bảo tồn dữ liệu. OTA dựa trên khối giữ lại 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 OTA qua tệp, nếu đường dẫn tệp giống hệt nhau trong cả hai bản dựng, thì gói OTA sẽ không chứa dữ liệu cho tệp đó. Trong bản cập nhật OTA theo khối, việc xác định có thay đổi ít hoặc không thay đổi 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 của dữ liệu tệp trong cả hệ thống nguồn và hệ thống mục tiêu.
- Độ nhạy cảm với ổ flash và RAM bị lỗi. Nếu một tệp bị hỏng, thì quá trình OTA tệp sẽ thành công miễn là không ảnh hưởng đến tệp bị hỏng, nhưng quá trình OTA khối sẽ không thành công nếu phát hiện thấy 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 đã sửa đổi chạy Android 5.0:
-
Không cập nhật được bản cập nhật OTA theo khối gia tăng. Một 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. OTA tệp chấp nhận một số thay đổi đối với phân vùng, chẳng hạn như thêm các tệp không thuộc bản dựng nguồn hoặc mục tiêu. Tuy nhiên, OTA chặn không cho phép thêm vào phân vùng, vì vậy, người dùng sẽ cần cài đặt OTA đầy đủ để ghi đè mọi nội dung sửa đổi phân vùng hệ thống) hoặc cài đặt ROM hình ảnh hệ thống mới để bật OTA trong tương lai. - Việc cố gắng thay đổi các tệp đã sửa đổi khiến quá trình cập nhật không thành công. Đối với cả bản cập nhật OTA qua tệp và qua khối, nếu OTA cố gắng thay đổi một tệp đã được sửa đổi, thì bản cập nhật OTA sẽ không thành công.
- Các lần cố gắng truy cập vào tệp đã sửa đổi sẽ tạo ra lỗi (chỉ dành cho dm-verity). Đối với cả bản cập nhật OTA qua tệp và khối, nếu dm-verity được bật và OTA cố gắng truy cập vào các phần đã sửa đổi của hệ thống tệp, thì OTA sẽ tạo lỗi.