1/25/2021

Android Partition

1. Android Partition 구조 자료수집

Android에서 구성되는 Partition의 구조가 어떻게 변화가 되고 있는지 궁금해서 관련자료들을 수집하고 간단하게 정리한다. 

우선 Android의 Booting 부터 이해를 해야 될 것이며,  OTA와 관련된 부분을 별도로 다시 보도록 하자. 


1.1 Android Verified Boot(VBoot) 2.0  

AVB(Android Verified Boot) or Verified Boot(VBoot)라고 하며, 일종의 Linux라고 하면 Security Boot라고 보면 될 것 같다. 

  • AVB 의 vbmeta 기본구조 
boot/system/vendor를 같이 관리 목적이며, 상위에서 설명했듯이 Security Boot와 유사하다.
다만 3개의 Partition을 한번에 관리하는 것이 큰 목적이다. 
더불어 system/vendor는 hashtree로 구성하여 좀 더 많은 보안정보를 넣고 마지막에 vbmeta에 대한 sign하는 Key 정보를 넣어 구성 



  • AVB의 VBMeta의 확장구조 
boot/system/vendor를 같이 2개 이상으로 구성하고 싶다면 아래와 같이 Chained 연결하여 구성하여, OTA를 쉽게 구성할 수 있을 것이다. 
구조를 보면  xyz Partition을 Public Key로 연결하는 구조


  • Rollback Protection 
VBmeta의 Rollback Index 와 RIL 값이 존재하며, 이는 OTA에서 Upgrade를 했을 경우 중요한 정보이다. 


  • Stored Rollback Index
  1. RIL #0: 상위 head 의 vbmeta의 Rollback Index 42
  2. RIL #1: 상위 tail 의 xyz Rollback index 101


  • OTA A/B Slot 부분 
  1. Slot A:  RIL 정보 [42,101]
  2. Slot B:  RIL 정보 [43, 103]
상위와 같이 두개의 Rollback Index를 관리하며, 증가는 하며 이를 관리한다. 


관련 tool은 avbtool 이 존재하며 세부내용은 아래링크참조


  • Recommended Boot Flow
Stored Rollback Index가 Update되는 순간은 아래와 같이 Device Lock 이며, Key  값이 다르면, 이를 Update하는 것으로 보인다. 
Boot Flow이지 OTA Flow가 아니므로 주의 



vbmeta 와 a/b slot 

VBoot 2.0 초기 Mount 


1.2  OTA(On The Air) Update 

OTA를 보면 System Partition 과 Non System Partition으로 볼 수 있으며, Update하는 방법은 서로 다르다. 

  • 1. OTA System Update (A/B Slot)
우선 상위 AVB를 보면 vbmet 부분을 참조하면 될 것 같으며, boot/system/vendor 와 같이 Update되어진다. 



출처 

  • 2. OTA Other Update
A/B Slot이 아니라 Block 기반의 OTA라고 하는데, 관련내용은 아래 참조 


  • OTA 기타 관련정보 및 관련소스 


동적파티션 (Android 10 이후부터 지원가능)
기존까지는 정적파티션기반으로 되어왔는데, Android 10이후로 Partition 의 Size도 변경가능


2. Android의 Partition Tool 기능 

Android에서 GPT 관련설정 Tool 과 관련정보수집 

  • bpt 의 GPT Table 
bpt 의 tool에  json 설정하여 GPT Table을 만드는 방법 

  • GPT Table 정보 
GPT Table의 기본이해 

Android 아키텍처 구조