본문 바로가기
카테고리 없음

ext4 fs for android/u-boot

by kyuho.choi 2011. 8. 27.
728x90
반응형
예전 xda-develop 스레드 중 하나는 파일 시스템을 ext4 로 바꾸어 시스템을
빠르고 안정적으로 구동하는 내용으로 기존 제품을 가지고 테스트하는 이슈들이 있었다.

nexus s 레퍼런스는 ext4 파일시스템을 기본으로 사용하고 있는데...

재밌는 점은 일반적으로 bootloader 는 제조사나 개발사나 또는 개발자마다 취향대로 사용하면 되는 것이긴 하나, 몇몇 칩벤더와 안드로이드 기본 플랫폼은 u-boot bootloader 를  support하고 있다는 점이다.
뭐가 재밌는 점이라면, u-boot 에는 ext4 를 support 하지 않는 점이랄까...

물론 android 플랫폼이나 커널에서 다루는 ext4 fs 관련 내용을 u-boot 에 포팅해서 사용해도 가능하지만,
번거롭거나 고된 일이 될 것이다...개발하는 입장에서는 u-boot 를 이용하여 fastboot 등을 사용해야 하며, 이는 사전에 ext4 포맷으로 디스크 파티션이 포맷되어 있어야 사용 가능하다.

커널이나 안드로이드 사이드에서는  ext4를 지원하지만, bootloader 에서는 지원하지 않는다? 가 전제이긴한데..

이걸 어쩌란 말잉냐!!!의 문제임미다...물론 해답은 항상 간단한 곳에 있는 것 같다.

첫번째 방법은 다음과 같다.

1. sd를 리눅스머신에 리더기등을 이용하여 삽입한다.
   fdisk 커맨드를 이용하여 파티셔닝 및 fs 타입을 ext4 등으로 포맷한다.
2. bootloader 에서 sd_fuse 와 같은 커맨드를 지원한다면, 해당 커맨드를 이용하여 타겟에서 퓨징을 수행하고, 
    별도 커맨드가 없다면 리눅스 머신에서 해당 파티션을 mount 및 각 data/img 등을 cp/dd 등을 이용하여 적절히 퓨징해준다.

이 때의 문제는 이 방법은 너무 매뉴얼한 부분이라는 것과 개발용 유틸티리와 환경을 셋업한 linux 머신을 내가 갖고있어야 한다는 것.

보다 현명한 방법은 다음과 같다.

1. 우선 bootlaoder 에서는 ext2 와 같은 일반적인 fs 를 support 하고 있으므로,
fastboot 과 같은  command 를 ext2 fs 로 동작하도록 수정한다(실제로 ext2 나 ext4 나 같은 sd관련 커맨드를 이용하여 fusing 하므로 문제가 없을 것이다).

2. 커널에서는 ext2/ext4 fs를 모두 지원하도록 configuration 을 구성한다. 

3. android 내부의 유틸리티를 사용한다.(setup_fs)
   setup_fs 바이너리는 단순하게 동작하는 데, 부팅 타임에 디스크 파일시스템이 ext4 fs 인지/아닌지 를 확인 후
   해당 파티션들을 ext4 타입으로 포맷시키는 기능을 지원한다.

이 떄의 문제는 문제는 아직 발견 못했다 ㅡㅡ; 괜찮은득? 희희

가장 간단한 방법은 다음과 같다.
 
1. u-boot 에 ext4 fs 를 포팅한다. 

 
728x90
반응형

댓글