Tổng quan

Thiết bị Android bao gồm một số phân vùng phục vụ 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 hình ảnh hạt nhân và được tạo bằng mkbootimg . Bạn có thể sử dụng phân vùng ảo để flash trực tiếp một trong hai hình ảnh mà không cần flash phân vùng khởi động mới. Phân vùng này cũng chứa đĩa RAM chung trong các thiết bị ra mắt trước Android 13.

    • hạt nhân. Phân vùng kernel ảo ghi đè hạt nhân ( zImage , zImage-dtb , Image.gz-dtb ) bằng cách ghi ảnh hạt nhân mới lên ảnh hạt nhân cũ. Nếu hạt 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 hạt nhân liên quan.

    • ramdisk. Phân vùng ramdisk ảo ghi đè lên đĩ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 (kernel hoặc ramdisk) có thể lớn hơn hình ảnh hiện có; để tạo khoảng trống, bộ nạp khởi động có thể di chuyển dữ liệu theo hình ảnh hoặc hủy thao tác khi gặp lỗi.

  • phân vùng init_boot . Phân vùng này chứa đĩa RAM chung dành cho các thiết bị chạy 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 tùy 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 (BSP) của nhà cung cấp hệ thống trên chip (SoC). Những tùy chỉnh như vậy cho phép ODM thay thế hoặc tùy chỉnh các thành phần SoC và triển khai các mô-đun hạt nhân cho các thành phần, trình nền dành riêng cho bo mạch và các 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). Phân vùng này là tùy chọn; thông thường, nó được sử dụng để chứa các tùy chỉnh để thiết bị có thể sử dụng một hình ảnh nhà cung cấp duy nhất cho nhiều SKU phần cứng. Để biết chi tiết, hãy xem Phân vùng ODM .

  • phân vùng odm_dlkm . Phân vùng này được dành riêng để 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 (ngược lại với phân vùng odm ) giúp 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 .

  • 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ợ 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 (chứ không phải một hình ảnh riêng biệt).

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

  • phân vùng misc . Phân vùng này được sử dụng bởi phân vùng phục hồi và có kích thước 4 KB hoặc lớn hơ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 tùy chỉnh.

  • phân vùng metadata . Phân vùng này dùng để lưu trữ khóa mã hóa siêu dữ liệu khi thiết bị sử dụng mã hóa siêu dữ liệu . Kích thước là 16 MB hoặc lớn hơn. Nó không được mã hóa và dữ liệu của nó không được chụp nhanh. Nó sẽ bị xóa khi thiết bị được khôi phục cài đặt gốc. 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 bất kỳ tệp nhị phân nào không thể phân phối được 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 được dành riêng để 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 (ngược lại với phân vùng vendor ) giúp 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 .

  • 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ị có radio có phần mềm dành riêng cho radio 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 chi tiết, hãy xem Phân vùng TOS .

  • phân vùng pvmfw . Phân vùng này lưu trữ Firmware Máy ảo được bảo vệ (pvmfw), đây là mã đầu tiên chạy trong các máy ảo được bảo vệ. Xem Phần sụn máy ảo được bảo vệ để biết thêm chi tiết.

Phân vùng động

Các thiết bị chạy Android 11 trở lên có thể hỗ trợ phân vùng động, là hệ thống phân vùng không gian người dùng dành cho Android cho phép tạo, thay đổi kích thước hoặc hủy phân vùng trong quá trình cập nhật qua mạng (OTA). Để biết chi tiết, hãy xem 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/dữ liệu đó là được bảo vệ hoàn toàn hoặc có thể flash lại, nghĩa là chúng có thể xây dựng lại, cung cấp hoặc trích xuất được bằng lệnh fastboot oem . Điều này bao gồm các dữ liệu như cài đặt dành riêng cho từng nhà máy, số sê-ri, dữ liệu hiệu chuẩn, v.v.

Những thay đổi trong Android 11

Android 11 bao gồm nhiều thay đổi đối với phân vùng, bao gồm các hạn chế về liên kết đến 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 khái niệm mới chứa hình ảnh systemsystem_ext . Khi các phân vùng này dùng chung cho một tập hợp thiết bị đích, các thiết bị đó có thể chia sẻ SSI và bỏ qua việc xây dựng system và hình ảnh system_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 . Chúng tôi khuyên bạn nên cập nhật các mô-đun đó lên AOSP để có thể cài đặt chúng 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. Chúng tôi khuyên bạn nên tách các mô-đun như vậy để có thể cài đặt chúng vào phân vùng product hoặc vendor .

  • phân vùng system . Hình ảnh hệ thống chung được sử dụng cho các sản phẩm OEM. Chúng tôi khuyên 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 cập nhật chúng lên AOSP hoặc bằng cách di chuyển chúng sang phân vùng system_ext .

  • phân vùng product . Phân vùng này hiện 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 đi kèm với bất kỳ phân vùng nào khác.

VNĐK thay đổi

Bộ công cụ phát triển gốc của nhà cung cấp (VNK) 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 các nhà cung cấp triển khai HAL của họ.

  • Ở Android 10 trở xuống, phân vùng vendor có thể liên kết với các thư viện VNĐK 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 .

  • Ở Android 11 trở lên, phân vùng productvendor có thể liên kết với thư viện VNĐK 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 biến thể của 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 chia các phần phụ thuộc của bản dựng. Các mô-đun gốc ( /build/soong/cc ) có thể chuyển đổi các mô-đun quy trình hệ thống thành biến thể cốt lõi và các mô-đun quy trình của nhà cung cấp thành biến thể của nhà cung cấp; 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 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. Nó 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 của nó; đ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ể của nhà cung cấp của thư viện system , cũng có thể tạo các biến thể của nhà cung cấp cho mô-đun nhà cung cấp bằng cách xác định vendor_available: true trong các tệp Android.bp của nó (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 các 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 ra một biến thể của nhà cung cấp bên cạnh 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 VNĐK không product_available: true thì không có sẵn cho mô-đun sản phẩm.