Standard partitions
- boot: kernal image 및 ramdisk(Android 13 이전)를 포함하고 있어 안드로이드 장치를 부팅하는 데 필요한 핵심 요소들을 담고 있다. 장치의 부팅을 담당하는 가장 중요한 파티션 중 하나이다. 부트 로더는 이 파티션에서 커널을 로드하고 운영체제를 시작한다.
- init_boot: Android 13에서 도입된 새로운 파티션으로, 기존의 boot 파티션과 관련된 기능을 분리하는 역할을 한다. init_boot는 주로 Device tree(bootloader 관련 데이터)를 처리하는 데 사용된다. 이 변화는 보안 강화와 관련된 목적을 가지고 있으며, A/B partition 구조 및 dynamic partition과 관련된 업데이트 과정에서 유용하게 활용된다.
- system: 운영체제의 주요 파일(시스템 애플리케이션, 기본 라이브러리 등)을 포함하고 있다. Android framework.
- recovery: 복구 모드에서 실행되는 독립적인 최소한의 운영체제를 포함한다. 이 파티션에는 OTA process 중에 부팅되는 recovery image가 저장된다.seamless updates를 지원하는 장치는 recovery image를 별도의 이미지가 아닌 boot 또는 init_boot image에 포함된 ramdisk로써 저장할 수 있다.
- vendor: 특정 하드웨어 제조업체가 제공하는 드라이버 및 하드웨어 지원 파일이 포함되어 있다. 따라서 AOSP에 배포되지 않는다. 경우에 따라서는 이 파티션을 생략할 수 있다.
- odm: 하드웨어 제조업체가 기기별로 특화된 드라이버나 하드웨어 종속 코드가 저장된다. vendor partition은 주로 SoC(System on Chip) vendor가 제공하는 driver 및 하드웨어 종속 코드를 포함된다. 반면 odm partition은 해당 기기 제조업체(OEM)에서 추가적으로 필요로 하는 하드웨어 지원 코드 및 driver를 저장한다. 즉, vendor pratition은 SoC vendor에 의해 제공되는 driver를 포함하고 있다면, odm partition은 해당 기기에 맞게 추가로 필요한 코드(예: 센서, 카메라, 특수 장치 지원)를 담고 있다. 안드로이드 시스템 업데이트 시, odm partition에 저장된 파일들은 기기별로 유지되며, 하드웨어와의 호환성을 보장할수 있게 된다. 따라서 안드로이드 OS가 업데이트되더라도 기기의 고유한 하드웨어 기능을 유지할 수 있다. 이는 하드웨어 제조업체가 필요한 파일을 독립적으로 관리하여, 시스템 파일(system partition)과 분리된 상태에서 시스템의 업데이트가 이루어질 수 있게 만든다. optional partition 이다. ODM partitions
안드로이드 버전에 따른 변화
- Android 5.0 Lollipop 이전
- 초기 안드로이드 버전에서는 기본적인 파티션 구조를 유지했다.
- 주요 파티션은 boot, system, data, recovery, cache 등으로 나뉘었으며, 하드웨어 제조업체에 따라 firmware 파티션이 포함되기도 했다.
- 사용자 데이터를 포함한 대부분의 파티션은 시스템 업데이트나 공장 초기화 시 손상될 수 있었다.
- Android 6.0 Marshmallow
- system 파티션은 여전히 주요 시스템 파일을 담고 있었고, data 파티션에 사용자 데이터를 저장하는 방식이 유지되었다.
- 앱 권한 관리를 강화하고 보안 패치가 자주 제공되는 구조로 변경되었지만, 파티션 구조 자체에 큰 변화는 없었다.
- Android 7.0 Nougat
- 새로운 파일 시스템인 ext4가 널리 사용되었으며, 일부 장치에서는 f2fs 파일 시스템이 도입되기도 했다. 이 파일 시스템들은 성능을 개선하는 데 중점을 두었다.
- 파티션 구조는 여전히 큰 변화 없이 유지되었다.
- Android 8.0 Oreo
- Project Treble이 도입되면서 파티션 구조에 중요한 변화가 생겼다.
- vendor partition이 별도로 분리되어 하드웨어 관련 파일과 드라이버가 이곳에 저장되었다.
- odm partition이 추가되었다.
- 시스템과 하드웨어 드라이버를 분리하여 제조업체가 안드로이드 업데이트를 더 쉽게 제공할 수 있도록 함으로써, 안드로이드 업데이트 속도가 크게 개선되었다.
- Project Treble이 도입되면서 파티션 구조에 중요한 변화가 생겼다.
- Android 10
- A/B partition 구조가 더 널리 채택되었다.
- A/B partition은 시스템 업데이트 과정에서 두 개의 파티션을 사용하여 업데이트 중에도 장치가 작동할 수 있도록 한다. 즉, 하나의 파티션에서 시스템이 실행되는 동안 다른 파티션에서 업데이트를 설치하고, 재부팅 후 새로 업데이트된 파티션으로 부팅하는 방식이다. 이를 통해 OTA 업데이트의 안정성과 무중단 업데이트가 가능해졌다.
- system, vendor, boot, recovery 등의 주요 파티션 외에도 A/B partition구조에 따라 각각의 파티션이 두 개씩 존재한다.
- A/B partition 구조가 더 널리 채택되었다.
- Android 11
- Dynamic Partitions 기능이 도입되었다.
- 파티션을 고정된 크기로 나누는 대신, Dynamic partitions을 사용하여 스토리지를 보다 유연하게 관리할 수 있다. 즉, 여러 파티션들이 하나의 큰 파티션 내에서 동적으로 할당되고, 시스템이 필요에 따라 크기를 조정할 수 있다.
- 이는 파티션 크기의 제한으로 인한 업데이트 불가 문제를 해결하며, 장치 제조업체가 새로운 파티션을 만들거나 기존 파티션을 재조정할 필요 없이 업데이트할 수 있도록 한다.
- Dynamic Partitions 기능이 도입되었다.
- Android 12
- 안드로이드 11에서 도입된 Dynamic Partitions가 기본적으로 활성화되어 더 많은 장치에서 사용되었다.
- 또한, 시스템 업데이트를 개선하여 사용자가 기기 사용 중에도 업데이트를 받을 수 있는 A/B partition 구조가 널리 확산되었다.
- Android 13 및 그 이후
- Dynamic partition 과 A/B partition 구조가 더욱 표준화되었다.
- init_boot partition 이 추가되었다.
- Seamless Update가 기본적으로 활성화되었으며, OTA가 진행되는 동안 사용자가 계속 장치를 사용할 수 있는 환경이 조성되었다.
https://source.android.com/docs/core/architecture/partitions
'Android' 카테고리의 다른 글
Sparse file header (0) | 2024.11.14 |
---|---|
Sparse file (0) | 2024.10.16 |