Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release thay vì aosp-main để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Các thiết bị Android có một số phân vùng hoặc các phần cụ thể của không gian lưu trữ được 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 chính trên một thiết bị:
Hình 1. Bố cục của các phân vùng chính.
Phân vùng được phân loại thành 3 danh mục:
Phân vùng hệ thống là những phân vùng được cập nhật khi bạn cập nhật hệ điều hành và các tính năng khác. system, boot và init_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 lần phát hành ban đầu. Các phân vùng vendor, vendor_boot và odm là các phân vùng cốt lõi của nhà cung cấp.
Phân vùng không thể cập nhật là những 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 một giao diện ổn định có tên 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 chúng:
phân vùng boot. Phân vùng này chứa một 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 trên Android 12 trở xuống. Để biết thêm thông tin về ổ đĩa ngẫu nhiên chung, hãy xem phần Nội dung hình ảnh ổ đĩa ngẫu nhiên 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 được dùng cho các sản phẩm của nhà sản xuất thiết bị gốc (OEM).
phân vùng system_ext. Phân vùng này chứa các tài nguyên hệ thống và các mô-đun hệ thống độc quyền giúp 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 bài viết Triển khai một 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 đi kèm 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ữ Protected Virtual Machine Firmware (pvmfw) (Phần mềm của máy ảo được bảo vệ), đây là mã đầu tiên chạy trong các VM được bảo vệ. Để biết thêm thông tin, hãy xem phần Firmware 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 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 chú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 bài viết 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 ramdisk 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 mạch).
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 vbmeta. Phân vùng này chứa thông tin về quy trình Khởi động đã xác minh 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 đều đáng tin cậy. Để biết thêm thông tin về tính năng Xác minh quy trình khởi động, hãy xem phần Xác minh quy trình khởi động.
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 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 kernel 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 Phân vùng DKLM của nhà cung cấp và nhà sản xuất thiết bị gốc (ODM).
phân vùng odm. Phân vùng này chứa các chế độ tuỳ chỉnh của nhà sản xuất thiết kế ban đầu (ODM) đối với các gói hỗ trợ bảng (BSP) của nhà cung cấp hệ thống trên một chip (SoC).
Những hoạt động 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 nhân cho các thành phần, trình nền dành riêng cho bảng 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à không bắt buộc. Thông thường, phân vùng này được dùng để chứa các chế độ tuỳ chỉnh để thiết bị có thể 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 bài viết 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 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 Phân vùng DKLM của nhà cung cấp và nhà sản xuất thiết bị gốc (ODM).
phân vùng radio. Phân vùng này chứa hình ảnh vô tuyến và chỉ cần thiết cho những 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 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à mục đích sử dụng của chúng:
phân vùng cache. Phân vùng này chứa dữ liệu tạm thời và là 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. Phân vùng này không cần có thể ghi từ trình tải khởi động, nhưng cần có thể xoá. Kích thước phân vùng tuỳ thuộc vào loại thiết bị và dung lượng trống trên userdata; thông thường, 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 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.
Các 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 thành một khối và tất cả các phân vùng nhà cung cấp thành một khối khác. Bằng cách cập nhật toàn bộ nhóm phân vùng, bạn có thể kiểm thử để xác minh rằng các giao diện giữa 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 vẫn phải cập nhật các phân vùng sau do các phần phụ thuộc được liên kết chặt chẽ và thiếu API ổn định:
Phân vùng boot và system_dlkm
các phân vùng init_boot, system, system_ext và product
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ỷ các phân vùng trong quá trình cập nhật qua mạng (OTA). Để biết thêm thông tin, hãy xem bài viết Phân vùng động.
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 chia các phần phụ thuộc bản dựng. Các mô-đun gốc (/build/soong/cc) có thể thay đổ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ộ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ột mô-đun hệ thống có vendor_available: true sẽ tạo một biến thể của 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 không có sẵn cho các mô-đun sản phẩm.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Partitions overview\n\nAndroid devices contain several *partitions* or specific sections of storage\nspace used to contain specific parts of the device's software. Each partition\ncontains a *partition image* (an IMG file) or snapshot of all the software for\nthe partition. Figure 1 shows the layout of core partitions on a device:\n\n**Figure 1.** Layout of core partitions.\n\nPartitions are classified in three categories:\n\n- *System partitions* are partitions that are updated when updating the OS\n and other features. The `system`, `boot`, and `init_boot` are core system\n partitions.\n\n- *Vendor partitions* contain device and hardware-specific code that might\n never be updated after initial release. The `vendor`, `vendor_boot`, and `odm`\n partitions are core vendor partitions.\n\n- *Nonupdatable partitions* are partitions whose contents are either not updated\n or updated with user data.\n\nCode in system and vendor partitions can interact using a stable interface\ncalled the *vendor interface (VINTF)*.\n| **Note:** The separation of system partitions from vendor partitions was part of an Android 11 effort called *Project Treble*. With this architecture, you can update a device's operating system and apps without updating any of hardware-specific code.\n\n### System partitions\n\nFollowing is a list of all system partitions and their use:\n\n- **`boot` partition.** This partition contains a Generic Kernel Image (GKI).\n This partition also contains the generic ramdisk in devices launched in\n Android 12 and lower. For further information on generic ramdisk, see\n [Generic ramdisk image contents](/docs/core/architecture/partitions/generic-boot#generic-boot-ramdisk-image-contents).\n\n- **`init_boot` partition (Android 13 and higher).** This partition contains a\n generic ramdisk. In Android 11 and 12, the generic ramdisk is in the\n `boot` partition.\n\n- **`system` partition.** This partition contains the system image used\n for OEM products.\n\n- **`system_ext` partition.** This partition contains system resources and\n proprietary system modules that extend the common system image in the `system`\n partition.\n\n | **Note:** *Single system image (SSI)* refers to a file, such as a zip file that contains the images of the `system` and `system_ext` partitions and reuses those images across a set of target devices. For further information on SSI, see [Android shared system image](/docs/core/architecture/partitions/shared-system-image).\n- **`system_dlkm` partition.** This partition contains GKI modules. For further\n information on this partition, see [Implement a GKI module partition](/docs/core/architecture/partitions/gki-partitions).\n\n- **`product` partition.** This partition can contain product-specific modules\n that aren't bundled with any other partitions.\n\n | **Note:** The [*Vendor Native Development Kit (VNDK)*](/docs/core/architecture/vndk) is a set of libraries installed in the `system` partition and designed exclusively for vendors to implement their HALs. The `product` and `vendor` partitions can link to VNDK libraries in the `system` partition, but can't link to other libraries in the `system` partition.\n- **`pvmfw` partition.** This partition stores the Protected Virtual Machine\n Firmware (pvmfw) which is the first code that runs in protected VMs. For more\n information, see [Protected Virtual Machine Firmware](https://android.googlesource.com/platform/packages/modules/Virtualization/+/refs/heads/android16-release/guest/pvmfw/README.md).\n\n- **`generic_bootloader` partition.** This partition contains the generic bootloader.\n\n### Vendor partitions\n\nFollowing is a list of all vendor partitions and their use:\n\n- **`vendor_boot` partition.** This partition contains vendor-specific boot\n code. For more information, see [Vendor boot partitions](/docs/core/architecture/partitions/vendor-boot-partitions).\n\n- **`recovery` partition.** This partition stores the recovery image, which is\n booted during the over-the-air (OTA) update process. Devices that support\n seamless updates can store the recovery images as a ramdisk contained in the\n `boot` or `init_boot` image. For more information on seamless updates,\n see [A/B (seamless) updates](/docs/core/ota/ab).\n\n- **`misc` partition.** This partition is used by the recovery partition and is\n 4 KB or larger.\n\n- **`vbmeta` partition.** This partition contains the Verified Boot information\n for all of the partitions. This information verifies that the images installed\n in each partition is trusted. For further information on\n Verified Boot, see\n [Verified Boot](/docs/security/features/verifiedboot).\n\n- **`vendor` partition.** This partition contains any binary that is vendor\n specific and not generic enough to distribute to AOSP.\n\n | **Note:** The [*Vendor Native Development Kit (VNDK)*](/docs/core/architecture/vndk) is a set of libraries installed in the `system` partition and designed exclusively for vendors to implement their HALs. The `product` and `vendor` partitions can link to VNDK libraries in the `system` partition, but can't link to other libraries in the `system` partition.\n- **`vendor_dlkm` partition.** This partition contains vendor\n kernel modules. By storing vendor kernel modules in this partition\n instead of the `vendor` partition, you can update kernel\n modules without updating the `vendor` partition. For more information, see\n [Vendor and ODM DKLM partitions](/docs/core/architecture/partitions/vendor-odm-dlkm-partition).\n\n- **`odm` partition.** This partition contains original design manufacturer\n (ODM)\n customizations to system-on-chip (SoC) vendor board-support packages (BSPs).\n Such customizations enable ODMs to replace or customize SoC components, and\n implement kernel modules for board-specific components, daemons, and\n ODM-specific features on hardware abstraction layers (HALs). This partition is\n optional. Typically this partition is used to contain customizations so that\n devices can\n use a single vendor image for multiple hardware SKUs. For more information,\n see [ODM partitions](/docs/core/architecture/bootloader/partitions/odm-partitions).\n\n- **`odm_dlkm` partition.** This partition is dedicated to storing ODM kernel\n modules. By storing ODM kernel modules in the this partition, instead of\n the `odm` partition, you can update ODM kernel modules without updating the\n `odm` partition. For more information, see\n [Vendor and ODM DKLM partitions](/docs/core/architecture/partitions/vendor-odm-dlkm-partition).\n\n- **`radio` partition.** This partition contains the radio image and is needed\n only for devices that include a radio with radio-specific software in a\n dedicated partition.\n\n| **Note:** Devices that support seamless updates need two partitions, referred to as *slots* (slot A and slot B) for the `boot`, `system`, `vendor`, and `radio` partitions. For further information, see [Partition selection (slots)](/docs/core/ota/ab#slots).\n\n### Nonupdatable partitions\n\nFollowing is a list of all nonupdatable partitions and their use:\n\n- **`cache` partition.** This partition contains temporary data and is optional\n if your device uses seamless updates. This partition doesn't need to be\n writable from the bootloader, but needs to be erasable. The partition\n size depends on the device type and the availability of space on `userdata`;\n typically, 50 to 100 MB is sufficient.\n\n- **`userdata` partition.** This partition contains user-installed apps and\n data, including customization data.\n\n- **`metadata` partition.** If your device uses [metadata encryption](/docs/security/features/encryption/metadata),\n this partition contains the metadata encryption key. The size of this\n partition is 16 MB or larger, it isn't encrypted, and its data isn't\n snapshotted. This partition is erased when the device is factory reset.\n\nPartition update rules and recommendations\n------------------------------------------\n\nWe recommend updating all system partitions as a whole\nand all vendor partitions as another whole. By updating the set of partitions as\na whole, you can test to verify the interfaces between images in each partition\nremain stable.\n\nRegardless of how you update your partitions, the following partitions must\nbe updated due to tightly coupled dependencies and lack of stable APIs:\n\n- The `boot` and `system_dlkm` partitions\n- the `init_boot`, `system`, `system_ext`, and `product` partitions\n\n| **Note:** If all interfaces between the `product` partition and other system partitions have stable ABIs, you can update the `product` partition independently. For furthe information, see [Maintain ABIs between partitions](/docs/core/architecture/partitions/product-partitions#maintaining-abis).\n\nDynamic partitions\n------------------\n\nDevices running Android 11 and higher can support\ndynamic partitions, which are a userspace partitioning system for Android that\nlets you create, resize, or destroy partitions during over-the-air (OTA)\nupdates. For more information, see [Dynamic partitions](/docs/core/ota/dynamic_partitions).\n\n### Soong product variants\n\nThe [Soong](/docs/setup/build) build system uses image variants to split\nbuild dependencies. Native modules (`/build/soong/cc`) can mutate system\nprocess modules to the core variant and vendor process modules to the\nvendor variant; a module in one image variant can't link to other modules in\na different image variant.\n\nIn Android 12 or higher, a system module with\n`vendor_available: true` creates a vendor variant in addition to the core\nvariant. To create a product variant, `product_available: true` must be\ndefined. Some VNDK libraries without `product_available: true` aren't\navailable to product modules."]]