Tổng quan

Thiết bị Android bao gồm một số phân vùng phục vụ nhiều chức năng trong quá trình khởi động.

Các phân vùng tiêu chuẩn

  • Phân vùng boot. Phân vùng này chứa hình ảnh hạt nhân và được tạo bằng mkbootimg. Bạn có thể sử dụng một phân vùng ảo để trực tiếp cài đặt ROM cho một trong hai hình ảnh mà không cần cài đặt ROM cho một phân vùng khởi động mới. Phân vùng này cũng chứa ramdisk chung trong các thiết bị ra mắt trước Android 13.

    • kernel. Phân vùng kernel ảo ghi đè hạt nhân (zImage, zImage-dtb, Image.gz-dtb) bằng cách ghi hình ảnh hạt nhân mới lên hình ảnh hạt nhân cũ. Nếu nhân phát triển được cung cấp không tương thích, bạn có thể cần cập nhật phân vùng vendor, system hoặc dtb (nếu có) bằng các mô-đun nhân được liên kết.

    • ramdisk. Phân vùng ramdisk ảo ghi đè ổ đĩa RAM bằng cách ghi hình ảnh ổ đĩa RAM mới lên hình ảnh ổ đĩa RAM cũ.

    Thao tác ghi đè xác định vị trí bắt đầu của hình ảnh hiện có trong eMMC và sao chép hình ảnh mới vào vị trí đó. Hình ảnh mới (hạt nhân hoặc ramdisk) có thể lớn hơn hình ảnh hiện có; để tạo không gian, trình tải khởi động có thể di chuyển dữ liệu theo hình ảnh hoặc bỏ qua thao tác với lỗi.

  • Phân vùng init_boot. Phân vùng này chứa ramdisk chung cho các thiết bị khởi chạy bằng Android 13 trở lên.

  • Phân vùng system. Phân vùng này chứa khung Android.

  • 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 gói hỗ trợ bo mạch (BSP) của nhà cung cấp hệ thống trên một chip (SoC). 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 sử dụng phân vùng này; thường thì 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ông tin chi tiết, 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. Việc lưu trữ các mô-đun hạt nhân ODM trong phân vùng odm_dlkm (thay vì phân vùng odm) cho phép 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.

  • 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 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 (thay vì một hình ảnh riêng biệt).

  • Phân vùng cache. Phân vùng này lưu trữ dữ liệu tạm thời và không bắt buộc nếu thiết bị sử dụng tính năng cập nhật liền mạch. Bạn không cần phải ghi được phân vùng bộ nhớ đệm từ trình tải khởi động, nhưng phân vùng này phải 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 MB – 100 MB là đủ.

  • 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 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. Phân vùng này dùng để lưu trữ khoá mã hoá siêu dữ liệu khi thiết bị sử dụng tính năng mã hoá siêu dữ liệu. Kích thước từ 16 MB trở lên. Dữ liệu này không được mã hoá và không được chụp nhanh. Mã này sẽ bị xoá khi thiết bị được đặt lại về trạng thái ban đầu. Việc sử dụng phân vùng này bị hạn chế nghiêm ngặt.

  • Phân vùng vendor. Phân vùng này chứa mọi tệp nhị phân không thể phân phối cho AOSP. Nếu thiết bị không chứa thông tin độc quyền, bạn có thể bỏ qua phân vùng này.

  • Phân vùng vendor_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 của nhà cung cấp. Việc lưu trữ các mô-đun hạt nhân của nhà cung cấp trong phân vùng vendor_dlkm (thay vì phân vùng vendor) cho phép 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.

  • 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.

  • Phân vùng tos. Phân vùng này lưu trữ hình ảnh nhị phân của Trusty OS và chỉ được sử dụng nếu thiết bị có Trusty. Để biết thông tin chi tiết, hãy xem phần Phân vùng theo Thoả thuận dịch vụ.

  • 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ệ. Hãy xem phần Phần mềm cơ sở máy ảo được bảo vệ để biết thêm thông tin chi tiết.

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 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ông tin chi tiết, hãy xem phần Phân vùng động.

Chỉ định các phân vùng quan trọng

Nếu thiết bị yêu cầu các phân vùng hoặc dữ liệu cụ thể để chạy, bạn phải chỉ định các phân vùng hoặc dữ liệu đó là được bảo vệ đầy đủ hoặc có thể cài đặt lại ROM, nghĩa là các phân vùng hoặc dữ liệu đó có thể được tạo lại, cung cấp hoặc trích xuất bằng lệnh fastboot oem. Dữ liệu này bao gồm các dữ liệu như chế độ cài đặt dành riêng cho nhà máy trên mỗi thiết bị, số sê-ri, dữ liệu hiệu chuẩn, v.v.

Các thay đổi trong Android 11

Android 11 có nhiều thay đổi đối với các phân vùng, bao gồm cả các hạn chế về việc liên kết với thư viện và các biến thể hình ảnh Soong mới.

Bố cục phân vùng Android

Hình 1. Bố cục phân vùng trong Android 11

  • Hình ảnh hệ thống đơn (SSI). Một hình ảnh mới, mang tính khái niệm chứa hình ảnh systemsystem_ext. Khi các phân vùng này phổ biến cho một nhóm thiết bị mục tiêu, các thiết bị đó có thể chia sẻ SSI và bỏ qua việc tạo hình ảnh systemsystem_ext.

  • Phân vùng system_ext. Một phân vùng mới có thể sử dụng tài nguyên system và có thể bao gồm các mô-đun hệ thống:

    • Mở rộng các mô-đun hệ thống AOSP trong phân vùng system. Bạn nên chuyển các mô-đun đó lên AOSP để có thể cài đặt vào phân vùng system sau này.

    • Gói các mô-đun dành riêng cho OEM hoặc SoC. Bạn nên huỷ gói các mô-đun đó để có thể cài đặt các mô-đun đó vào phân vùng product hoặc vendor.

  • Phân vùng system. Hình ảnh hệ thống phổ biến dùng cho các sản phẩm OEM. Bạn nên di chuyển các mô-đun độc quyền ra khỏi phân vùng system bằng cách chuyển ngược các mô-đun đó đến AOSP hoặc di chuyển các mô-đun đó sang phân vùng system_ext.

  • Phân vùng product. Giờ đây, phân vùng này có thể sử dụng các giao diện được phép để cài đặt 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.

Thay đổi về VNDK

Bộ công cụ phát triển gốc dành cho nhà cung cấp (VNDK) là một bộ thư viện được cài đặt trong phân vùng system và được thiết kế dành riêng cho nhà cung cấp để triển khai HAL của họ.

  • Trong Android 10 trở xuống, phân vùng vendor có thể liên kết với các thư viện VNDK trong phân vùng system, nhưng không thể liên kết với các thư viện khác trong phân vùng system. Các mô-đun gốc trong phân vùng product có thể liên kết với bất kỳ thư viện nào trong phân vùng system.

  • Trên Android 11 trở lên, các phân vùng productvendor có thể liên kết với các thư viện VNDK trong phân vùng system, nhưng không thể liên kết với các thư viện khác trong phân vùng system.

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 10 trở xuống, mô-đun hệ thống sẽ tự động tạo các biến thể cốt lõi. Tệp này cũng có thể tạo biến thể của nhà cung cấp bằng cách xác định vendor_available: true trong các tệp Android.bp; điều này cho phép các mô-đun của nhà cung cấp liên kết với các mô-đun hệ thống. Thư viện VNDK (là các biến thể nhà cung cấp của thư viện system) cũng có thể tạo biến thể nhà cung cấp cho mô-đun nhà cung cấp bằng cách xác định vendor_available: true trong tệp Android.bp (xem ví dụ).

  • Trong Android 11, mô-đun hệ thống cũng có thể tạo một biến thể sản phẩm (ngoài biến thể cốt lõi và biến thể của nhà cung cấp) bằng cách xác định vendor_available: true.

  • 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.