Tổng quan

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

Phân vùng tiêu chuẩn

  • Phân vùng boot. Phân vùng này chứa một 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.

    • đĩa RAM. 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ế gốc (ODM) đối với các gói hỗ trợ bo mạch (BSP) của nhà cung cấp hệ thống trên 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, hình ảnh này sẽ đượ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. Dung lượng 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 dữ liệu và ứng dụng 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 radio và chỉ cần thiết cho các thiết bị bao gồm đài phát có phần mềm dành riêng cho đài phát trong một phân vùng riê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 Chương trình 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, vui lòng 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 chạy các phân vùng hoặc dữ liệu cụ thể, bạn phải chỉ định các phân vùng hoặc dữ liệu đó là được bảo vệ hoàn toàn hoặc là có thể cài đặt ROM, tức là các phân vùng hoặc dữ liệu đó có thể tạo lại, cung cấp hoặc trích xuất được 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à nhiều dữ liệu khác.

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 quy định 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 (Dự án nguồn mở Android) 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 tách các mô-đun như vậy để có thể cài đặt 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 các mô-đun đó lê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, 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 của 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 các 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à 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 các mô-đun nhà cung cấp bằng cách xác định vendor_available: true trong các 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.