Android 기기에는 부팅 프로세스에서 다양한 기능을 제공하는 여러 파티션이 있습니다.
표준 파티션
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
파티션. 이제 이 파티션은 허용된 인터페이스를 사용하여 다른 파티션과 번들로 묶이지 않은 제품별 모듈을 설치할 수 있습니다.
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 라이브러리는 제품 모듈에서 사용할 수 없습니다.