Android 기기에는 두 가지 카테고리의 파티션이 있습니다. 하나는 부팅 프로세스에 중요한 부팅 파티션이고 다른 하나는 부팅 외 정보를 저장하는 데 사용되는 사용자 파티션입니다.
부팅 파티션
boot
파티션. 이 파티션은 커널 이미지를 포함하고mkbootimg
를 사용하여 생성됩니다. 새 부팅 파티션을 플래시하지 않고 가상 파티션을 사용하여 두 이미지를 직접 플래시할 수 있습니다. 이 파티션에는 Android 13 이전에 출시된 기기의 일반 램디스크도 포함되어 있습니다.kernel
파티션. 가상kernel
파티션은 이전 커널 이미지 위에 새 커널 이미지를 작성하여 커널(zImage
,zImage-dtb
,Image.gz-dtb
)을 덮어씁니다. 제공된 개발 커널이 호환되지 않는 경우vendor
,system
,dtb
파티션(있는 경우)을 관련 커널 모듈로 업데이트해야 할 수도 있습니다.ramdisk
파티션. 가상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 파티션을 참고하세요.dtbo
파티션. 이 파티션에는 커널의 하드웨어별 오버레이가 포함되어 있습니다.super
파티션. 이 파티션은 동적 파티션의 메타데이터와 콘텐츠를 저장합니다. 동적 파티션은 무선 업데이트(OTA) 중에 파티션을 만들거나 크기를 조절하거나 삭제할 수 있는 Android용 사용자 공간 파티션 시스템입니다. Android 11 이상을 실행하는 기기는 동적 파티션을 지원할 수 있습니다. 자세한 내용은 동적 파티션을 참고하세요.
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
파티션. 이제 이 파티션은 허용된 인터페이스를 사용하여 다른 파티션과 번들로 묶이지 않은 제품별 모듈을 설치할 수 있습니다.
VNDK 변경사항
공급업체 네이티브 개발 키트(VNDK)는 system
파티션에 설치되며 공급업체의 HAL 구현만을 위해 설계된 일련의 라이브러리입니다.
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 라이브러리는 제품 모듈에서 사용할 수 없습니다.