Tổng quan về phân vùng

Thiết bị Android chứa một số phân vùng hoặc các phần cụ thể của dung lượng lưu trữ dùng để chứa các phần cụ thể của phần mềm trên thiết bị. Mỗi phân vùng chứa một hình ảnh phân vùng (tệp IMG) hoặc ảnh chụp nhanh của tất cả phần mềm cho phân vùng đó. Hình 1 cho thấy bố cục của các phân vùng cốt lõi trên một thiết bị:

Bố cục của các phân vùng lõi.

Hình 1. Bố cục của các phân vùng lõi.

Các phân vùng được phân loại theo 3 danh mục:

  • Phân vùng hệ thống là các phân vùng được cập nhật khi cập nhật hệ điều hành và các tính năng khác. system, bootinit_boot là các phân vùng hệ thống cốt lõi.

  • Phân vùng của nhà cung cấp chứa mã dành riêng cho thiết bị và phần cứng có thể không bao giờ được cập nhật sau bản phát hành ban đầu. Các phân vùng vendor, vendor_bootodm là các phân vùng nhà cung cấp cốt lõi.

  • Phân vùng không thể cập nhật là các phân vùng có nội dung không được cập nhật hoặc được cập nhật bằng dữ liệu người dùng.

Mã trong các phân vùng hệ thống và nhà cung cấp có thể tương tác bằng cách sử dụng một giao diện ổn định được gọi là giao diện nhà cung cấp (VINTF).

Phân vùng hệ thống

Sau đây là danh sách tất cả các phân vùng hệ thống và mục đích sử dụng của các phân vùng đó:

  • Phân vùng boot. Phân vùng này chứa Hình ảnh hạt nhân chung (GKI). Phân vùng này cũng chứa ramdisk chung trong các thiết bị ra mắt trong Android 12 trở xuống. Để biết thêm thông tin về ổ đĩa RAM chung, hãy xem phần Nội dung hình ảnh ổ đĩa RAM chung.

  • Phân vùng init_boot (Android 13 trở lên). Phân vùng này chứa một ramdisk chung. Trong Android 11 và 12, ramdisk chung nằm trong phân vùng boot.

  • Phân vùng system. Phân vùng này chứa hình ảnh hệ thống dùng cho các sản phẩm OEM.

  • Phân vùng system_ext. Phân vùng này chứa tài nguyên hệ thống và các mô-đun hệ thống độc quyền mở rộng hình ảnh hệ thống chung trong phân vùng system.

  • Phân vùng system_dlkm. Phân vùng này chứa các mô-đun GKI. Để biết thêm thông tin về phân vùng này, hãy xem phần Triển khai phân vùng mô-đun GKI.

  • Phân vùng product. Phân vùng này có thể chứa các mô-đun dành riêng cho sản phẩm không được đóng gói với bất kỳ phân vùng nào khác.

  • Phân vùng pvmfw. Phân vùng này lưu trữ Firmware máy ảo được bảo vệ (pvmfw) là mã đầu tiên chạy trong các máy ảo được bảo vệ. Để biết thêm thông tin, hãy xem phần Phần mềm cơ sở máy ảo được bảo vệ.

  • Phân vùng generic_bootloader. Phân vùng này chứa trình tải khởi động chung.

Phân vùng của nhà cung cấp

Sau đây là danh sách tất cả các phân vùng của nhà cung cấp và mục đích sử dụng của các phân vùng đó:

  • Phân vùng vendor_boot. Phân vùng này chứa mã khởi động dành riêng cho nhà cung cấp. Để biết thêm thông tin, hãy xem phần Phân vùng khởi động của nhà cung cấp.

  • Phân vùng recovery. Phân vùng này lưu trữ hình ảnh khôi phục được khởi động trong quá trình cập nhật qua mạng không dây (OTA). Các thiết bị hỗ trợ tính năng cập nhật liền mạch có thể lưu trữ hình ảnh khôi phục dưới dạng ổ đĩa RAM có trong hình ảnh boot hoặc init_boot. Để biết thêm thông tin về bản cập nhật liền mạch, hãy xem phần Bản cập nhật A/B (liên tục).

  • Phân vùng vbmeta. Phân vùng này chứa thông tin về tính năng Xác minh quy trình khởi động cho tất cả các phân vùng. Thông tin này xác minh rằng các hình ảnh được cài đặt trong mỗi phân vùng là đáng tin cậy. Để biết thêm thông tin về tính năng Khởi động được xác minh, hãy xem bài viết Khởi động được xác minh.

  • Phân vùng vendor. Phân vùng này chứa mọi tệp nhị phân dành riêng cho nhà cung cấp và không đủ chung để phân phối cho AOSP.

  • Phân vùng vendor_dlkm. Phân vùng này chứa các mô-đun hạt nhân của nhà cung cấp. Bằng cách lưu trữ các mô-đun hạt nhân của nhà cung cấp trong phân vùng này thay vì phân vùng vendor, bạn có thể cập nhật các mô-đun hạt nhân mà không cần cập nhật phân vùng vendor. Để biết thêm thông tin, hãy xem bài viết Các phân vùng DKLM của nhà cung cấp và ODM.

  • Phân vùng odm. Phân vùng này chứa các tuỳ chỉnh của nhà sản xuất thiết kế ban đầu (ODM) cho các gói hỗ trợ bo mạch của nhà cung cấp hệ thống trên một chip (SoC) (BSP). Các tuỳ chỉnh như vậy cho phép ODM thay thế hoặc tuỳ chỉnh các thành phần SoC, đồng thời triển khai các mô-đun hạt nhân cho các thành phần, trình nền và tính năng dành riêng cho ODM trên các lớp trừu tượng phần cứng (HAL). Bạn không bắt buộc phải tạo phân vùng này. Thông thường, phân vùng này được dùng để chứa các tuỳ chỉnh để thiết bị có thể sử dụng một hình ảnh nhà cung cấp cho nhiều SKU phần cứng. Để biết thêm thông tin, hãy xem phần Phân vùng ODM.

  • Phân vùng odm_dlkm. Phân vùng này dành riêng cho việc lưu trữ các mô-đun hạt nhân ODM. Bằng cách lưu trữ các mô-đun hạt nhân ODM trong phân vùng này thay vì phân vùng odm, bạn có thể cập nhật các mô-đun hạt nhân ODM mà không cần cập nhật phân vùng odm. Để biết thêm thông tin, hãy xem bài viết Các phân vùng DKLM của nhà cung cấp và ODM.

  • Phân vùng radio. Phân vùng này chứa hình ảnh đài phát thanh và chỉ cần thiết cho các thiết bị có đài phát thanh với phần mềm dành riêng cho đài phát thanh trong một phân vùng chuyên dụng.

Các phân vùng không thể cập nhật

Sau đây là danh sách tất cả các phân vùng không thể cập nhật và cách sử dụng các phân vùng đó:

  • Phân vùng cache. Phân vùng này chứa dữ liệu tạm thời và không bắt buộc nếu thiết bị của bạn sử dụng tính năng cập nhật liền mạch. Bạn không cần ghi được phân vùng này từ trình tải khởi động, nhưng cần có thể xoá được. Kích thước phân vùng phụ thuộc vào loại thiết bị và dung lượng trống trên userdata; thường thì 50 đến 100 MB là đủ.

  • Phân vùng userdata. Phân vùng này chứa các ứng dụng và dữ liệu do người dùng cài đặt, bao gồm cả dữ liệu tuỳ chỉnh.

  • Phân vùng metadata. Nếu thiết bị của bạn sử dụng tính năng mã hoá siêu dữ liệu, thì phân vùng này sẽ chứa khoá mã hoá siêu dữ liệu. Kích thước của phân vùng này là 16 MB trở lên, không được mã hoá và dữ liệu của phân vùng này không được chụp nhanh. Phân vùng này sẽ bị xoá khi thiết bị được đặt lại về trạng thái ban đầu.

Quy tắc và đề xuất cập nhật phân vùng

Bạn nên cập nhật tất cả các phân vùng hệ thống cùng một lúc và tất cả các phân vùng của nhà cung cấp cùng một lúc. Bằng cách cập nhật toàn bộ tập hợp các phân vùng, bạn có thể kiểm thử để xác minh rằng các giao diện giữa các hình ảnh trong mỗi phân vùng vẫn ổn định.

Bất kể bạn cập nhật các phân vùng như thế nào, bạn phải cập nhật các phân vùng sau do các phần phụ thuộc được ghép nối chặt chẽ và thiếu API ổn định:

  • Các phân vùng bootsystem_dlkm
  • các phân vùng init_boot, system, system_extproduct

Phân vùng động

Các thiết bị chạy Android 11 trở lên có thể hỗ trợ các phân vùng động. Đây là một hệ thống phân vùng không gian người dùng cho Android, cho phép bạn tạo, đổi kích thước hoặc huỷ phân vùng trong quá trình cập nhật qua mạng không dây (OTA). Để biết thêm thông tin, hãy xem phần Phân vùng động.

  • Phân vùng misc. Phân vùng này được phân vùng khôi phục sử dụng và có kích thước từ 4 KB trở lên.

  • Phân vùng tos. Phân vùng này chứa hình ảnh nhị phân của Trusty OS và chỉ được dùng nếu thiết bị có Trusty. Để biết thêm thông tin, hãy xem phần Phân vùng Trusty OS (TOS).

Biến thể sản phẩm Soong

Hệ thống xây dựng Soong sử dụng các biến thể hình ảnh để phân tách các phần phụ thuộc bản dựng. Mô-đun gốc (/build/soong/cc) có thể biến đổi mô-đun xử lý hệ thống thành biến thể cốt lõi và mô-đun xử lý của nhà cung cấp thành biến thể của nhà cung cấp; một mô-đun trong một biến thể hình ảnh không thể liên kết với các mô-đun khác trong một biến thể hình ảnh khác.

Trong Android 12 trở lên, mô-đun hệ thống có vendor_available: true sẽ tạo một biến thể nhà cung cấp ngoài biến thể cốt lõi. Để tạo một biến thể sản phẩm, bạn phải xác định product_available: true. Một số thư viện VNDK không có product_available: true sẽ không dùng được cho các mô-đun sản phẩm.