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ằngmkbootimg
. 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ùngvendor
,system
hoặcdtb
(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ùngodm_dlkm
(thay vì phân vùngodm
) 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ùngodm
.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 ảnhboot
hoặcinit_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ênuserdata
; 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ùngvendor_dlkm
(thay vì phân vùngvendor
) 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ùngvendor
.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.
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
system
vàsystem_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 ảnhsystem
vàsystem_ext
.Phân vùng
system_ext
. Một phân vùng mới có thể sử dụng tài nguyênsystem
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ùngsystem
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ặcvendor
.
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ùngsystem
, 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ùngsystem_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ùngsystem
, nhưng không thể liên kết với các thư viện khác trong phân vùngsystem
. Các mô-đun gốc trong phân vùngproduct
có thể liên kết với bất kỳ thư viện nào trong phân vùngsystem
.Trên Android 11 trở lên, phân vùng
product
vàvendor
có thể liên kết với các thư viện VNDK trong phân vùngsystem
, nhưng không thể liên kết với các thư viện khác trong phân vùngsystem
.
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ệpAndroid.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ệnsystem
) 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 địnhvendor_available: true
trong các tệpAndroid.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 địnhproduct_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.