boot 파티션. 이 파티션은 커널 이미지를 포함하고 mkbootimg를 사용하여 생성됩니다. 새 부팅 파티션을 플래시하지 않고 가상 파티션을 사용하여 두 이미지를 직접 플래시할 수 있습니다.
이 파티션에는 Android 13 이전에 출시된 기기의 일반 램디스크도 포함되어 있습니다.
커널. 가상 kernel 파티션은 이전 커널 이미지 위에 새 커널 이미지를 작성하여 커널(zImage, zImage-dtb, Image.gz-dtb)을 덮어씁니다. 제공된 개발 커널이 호환되지 않는 경우 vendor, system, dtb 파티션(있는 경우)을 관련 커널 모듈로 업데이트해야 할 수도 있습니다.
램디스크. 가상 ramdisk 파티션은 이전 램디스크 이미지 위에 새 램디스크 이미지를 작성하여 램디스크를 덮어씁니다.
덮어쓰기 작업은 eMMC에서 기존 이미지의 시작 위치를 확인하고 이 위치에 새 이미지를 복사합니다. 새 이미지(커널 또는 램디스크)가 기존 이미지보다 클 수도 있습니다. 공간을 확보하기 위해 부트로더는 이미지를 따라 데이터를 이동하거나 오류가 있는 작업을 취소할 수 있습니다.
init_boot 파티션. 이 파티션에는 Android 13 이상을 실행하는 기기를 위한 일반 램디스크가 포함되어 있습니다.
system 파티션. 이 파티션에는 Android 프레임워크가 포함됩니다.
odm 파티션. 이 파티션에는 단일 칩 시스템(SoC) 공급업체 보드 서포트 패키지(BSP)의 ODM(Original Design Manufacturer) 맞춤설정이 포함됩니다.
이러한 맞춤설정을 통해 ODM은 SoC 구성요소를 교체하거나 맞춤설정하고, 하드웨어 추상화 계층(HAL)에 보드별 구성요소, 데몬, ODM 관련 기능을 위한 커널 모듈을 구현할 수 있습니다. 이 파티션은 선택사항이며 일반적으로 기기가 여러 하드웨어 SKU를 위해 단일 공급업체 이미지를 사용할 수 있도록 맞춤설정을 포함하는 데 사용됩니다. 자세한 내용은 ODM 파티션을 참고하세요.
odm_dlkm 파티션. 이 파티션은 ODM 커널 모듈을 저장하는 데 사용됩니다.
ODM 커널 모듈을 odm 파티션이 아닌 odm_dlkm 파티션에 저장하면 odm 파티션을 업데이트하지 않고 ODM 커널 모듈을 업데이트할 수 있습니다.
recovery 파티션. 이 파티션은 OTA 프로세스 중에 부팅되는 복구 이미지를 저장합니다. 원활한 업데이트를 지원하는 기기는 복구 이미지를 별도의 이미지가 아닌 boot 또는 init_boot 이미지에 포함된 램디스크로 저장할 수 있습니다.
cache 파티션. 이 파티션은 임시 데이터를 저장합니다. 기기가 원활한 업데이트를 사용하는 경우에는 선택사항입니다. 캐시 파티션은 부트로더에서 쓰기 가능할 필요가 없지만 삭제는 가능해야 합니다. 파티션 크기는 기기 유형과 userdata의 공간 가용성에 따라 다릅니다. 일반적으로 50MB~100MB면 충분합니다.
misc 파티션. 이 파티션은 복구 파티션에서 사용되며 4KB 이상입니다.
userdata 파티션. 이 파티션에는 맞춤설정 데이터를 포함하여 사용자가 설치한 앱과 데이터가 포함됩니다.
metadata 파티션. 이 파티션은 기기에서 메타데이터 암호화를 사용할 때 메타데이터 암호화 키를 저장하는 데 사용됩니다. 크기는 16MB 이상입니다. 이 파티션은 암호화되지 않으며 그 데이터는 스냅샷 처리되지 않습니다. 기기가 초기화되면 파티션은 삭제됩니다. 이 파티션의 사용은 엄격하게 제한됩니다.
vendor 파티션. 이 파티션에는 AOSP에 배포할 수 없는 바이너리가 포함됩니다. 기기에 독점 정보가 포함되어 있지 않으면 이 파티션을 생략할 수 있습니다.
vendor_dlkm 파티션. 이 파티션은 공급업체 커널 모듈을 저장하는 데 사용됩니다.
공급업체 커널 모듈을 vendor 파티션이 아닌 vendor_dlkm 파티션에 저장하면 vendor 파티션을 업데이트하지 않고도 커널 모듈을 업데이트할 수 있습니다.
radio 파티션. 이 파티션은 무선 이미지를 포함하며 전용 파티션에 무선 관련 소프트웨어가 있는 기기(무선 기능 포함)에만 필요합니다.
tos 파티션. 이 파티션은 Trusty OS의 바이너리 이미지를 저장합니다. 기기에 Trusty가 있는 경우에만 사용됩니다. 자세한 내용은 TOS 파티션을 참고하세요.
pvmfw 파티션. 이 파티션은 보호된 VM에서 실행되는 첫 번째 코드인 보호된 가상 머신 펌웨어(pvmfw)를 저장합니다. 자세한 내용은 보호된 가상 머신 펌웨어를 참고하세요.
동적 파티션
Android 11 이상을 실행하는 기기는 동적 파티션을 지원할 수 있습니다. 동적 파티션은 무선 업데이트(OTA) 동안 파티션 만들기, 삭제 또는 파티션 크기 조절을 가능하게 하는 Android용 사용자 공간 파티션 나누기입니다. 자세한 내용은 동적 파티션을 참고하세요.
중요 파티션 지정
기기에서 특정 파티션이나 데이터를 실행해야 하는 경우 이러한 파티션/데이터를 완전히 보호되거나 다시 플래시 가능한 것으로 지정해야 합니다. 즉, 다시 빌드할 수 있거나 제공되거나 fastboot oem 명령어를 사용해 추출할 수 있습니다. 여기에는 기기당 공장별 설정, 일련번호, 보정 데이터 등의 데이터가 포함됩니다.
Android 11 변경사항
Android 11에는 라이브러리 및 새로운 Soong 이미지 변형 연결에 대한 제한사항을 포함하여 많은 파티션 변경사항이 포함되어 있습니다.
그림 1. Android 11의 파티션 레이아웃
단일 시스템 이미지(SSI).system 및 system_ext 이미지가 포함된 새로운 개념적 이미지입니다. 이러한 파티션이 일련의 대상 기기에서 일반적인 경우 이러한 기기는 SSI를 공유하고 system 및 system_ext 이미지 빌드를 건너뛸 수 있습니다.
system_ext 파티션.system 리소스를 사용할 수 있고 다음과 같은 시스템 모듈을 포함할 수 있는 새 파티션입니다.
system 파티션에서 AOSP 시스템 모듈을 확장하는 시스템 모듈. 이러한 모듈을 나중에 system 파티션에 설치할 수 있도록 AOSP에 업스트림하는 것이 좋습니다.
OEM 또는 SoC 관련 모듈을 번들로 묶는 시스템 모듈. 이러한 모듈을 product 또는 vendor 파티션에 설치할 수 있도록 번들 해제하는 것이 좋습니다.
system 파티션. OEM 제품에 사용되는 일반적인 시스템 이미지입니다. 독점 모듈을 AOSP로 업스트림하거나 system_ext 파티션으로 이동하여 system 파티션 외부로 이동하는 것이 좋습니다.
product 파티션. 이제 이 파티션은 허용된 인터페이스를 사용하여 다른 파티션과 번들로 묶이지 않은 제품별 모듈을 설치할 수 있습니다.
Android 10 이하에서는 vendor 파티션을 system 파티션의 VNDK 라이브러리에 연결할 수 있지만 system 파티션의 다른 라이브러리에는 연결할 수 없습니다. product 파티션의 네이티브 모듈은 system 파티션의 모든 라이브러리에 연결할 수 있습니다.
Android 11 이상에서는 product 및 vendor 파티션을 system 파티션의 VNDK 라이브러리에 연결할 수 있지만 system 파티션의 다른 라이브러리에는 연결할 수 없습니다.
Soong 제품 변형
Soong 빌드 시스템은 이미지 변형을 사용하여 빌드 종속 항목을 분할합니다. 네이티브 모듈(/build/soong/cc)은 시스템 프로세스 모듈을 핵심 변형으로, 공급업체 프로세스 모듈을 공급업체 변형으로 변경할 수 있습니다. 단, 한 이미지 변형에 있는 모듈을 다른 이미지 변형에 있는 다른 모듈에 연결할 수 없습니다.
Android 10 이하에서는 시스템 모듈이 핵심 변형을 자동으로 만듭니다.
또한 Android.bp 파일에서 vendor_available: true를 정의하여 공급업체 변형을 만들 수 있습니다. 이렇게 하면 공급업체 모듈을 시스템 모듈에 연결할 수 있습니다.
또한 system 라이브러리의 공급업체 변형인 VNDK 라이브러리는 Android.bp 파일에서 vendor_available: true를 정의하여 공급업체 모듈의 공급업체 변형을 만들 수 있습니다(예시 참고).
Android 11에서는 시스템 모듈이 vendor_available: true를 정의하여 (핵심 및 공급업체 변형 외에) 제품 변형도 만들 수 있습니다.
Android 12 이상에서는 vendor_available: true가 있는 시스템 모듈이 핵심 변형 외에 공급업체 변형도 만듭니다. 제품 변형을 만들려면 product_available: true를 정의해야 합니다. product_available: true가 없는 일부 VNDK 라이브러리는 제품 모듈에서 사용할 수 없습니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2024-05-14(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2024-05-14(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."]]