본문 바로가기
3. 개발 관련/정리 :: issue 와 resovle

Using UbiFS, Android

by kyuho.choi 2010. 11. 8.
728x90
반응형

YAFFS2 파일 시스템으로 Root Filesystem 을 퓨징시에 퍼미션 에러가 발생하는 경우가 있네요..

이솝 프로젝트 중 S5PC100 프로젝트의 UBIFS 파일 시스템 퓨징 방법을 사용해보니 퍼미션 에러 없이 잘 동작하는 것 같네요...


UbiFS 타입으로 파일시스템을 작성하는 법을 간단히 정리해봤습니다.


준비사항

 - 안드로이드 RFS

 - X-windows 또는 타겟용 파일 시스템

 - 타겟 시스템 및 개발 환경


수행 내용

1) 우선 퓨징할 안드로이드 RFS 를  만들겠습니다.

   "이솝 프로젝트" -> "aESOP S5PV210 Board" -> "다운로드 " 페이지에서

   Android(Froyo) Root File System 의  RootFS-Froyo.tar.gz 파일을 다운로드 받습니다.


  다운로드 한 RootFS-Froyo.tar.gz 파일을 퓨징 용도로 구성을 조금 변경합니다.

#] tar RootFS-Froyo.tar.gz       

#] cd RootFS-Froyo

#] tar cf RootFS-Froyo.tar ./*


cf) 위에서 tar 로 재압축한 RootFS-Froyo.tar 파일은 압축을 풀면 형태가 됩니다.

    (퓨징 시, 낸드 파티션에  루트 파일시스템의 구조로 압축이 풀어지도록 구성한 것이라 보시면 됩니다)


#} ls -l

합계 50252

drwxr-xr-x  3 root root     4096 2010-09-05 16:41 acct

drwxrwx---  3 root root     4096 2010-09-05 16:41 cache

dr-x------  2 root root     4096 2010-09-05 16:41 config

lrwxrwxrwx  1 root root       17 2010-11-05 11:11 d -> /sys/kernel/debug

drwxrwx--x  2 root root     4096 2010-11-05 11:14 data

-rw-r--r--  1 root root      118 2010-09-04 21:21 default.prop

drwxr-xr-x  2 root root     4096 2010-09-04 21:20 dev

lrwxrwxrwx  1 root root       11 2010-11-05 11:11 etc -> /system/etc

-rwx------  1 root root 51176492 2010-05-25 18:51 g.wav

-rwx------  1 root root     9704 2010-09-05 21:03 gwav

-rwxr-xr-x  1 root root   107920 2010-09-04 21:43 init

-rw-r--r--  1 root root     1677 2010-07-29 11:15 init.goldfish.rc

-rwxr-xr-x  1 root root    13058 2010-09-05 16:38 init.rc

-rwxr-xr-x  1 root root    13051 2010-07-29 11:15 init.rc~

-rwxr-xr-x  1 root root      379 2010-09-05 16:38 init.smdkv210.rc

-rwxr-xr-x  1 root root      379 2010-07-29 11:15 init.smdkv210.rc~

drwxrwxr-x  5 root root     4096 2010-09-05 16:41 mnt

drwxr-xr-x  2 root root     4096 2010-09-04 21:33 modules

drwxr-xr-x  2 root root     4096 2010-09-04 21:20 proc

drwxr-xr-x  2 root root     4096 2010-09-04 21:44 sbin

lrwxrwxrwx  1 root root       11 2010-11-05 11:11 sdcard -> /mnt/sdcard

drwxr-xr-x  2 root root     4096 2010-09-04 21:20 sys

drwxr-xr-x 11 root root     4096 2010-09-04 21:44 system


2) 일반 루트 파일시스템 환경을 구성하고 타겟 시스템을 부팅합니다.


- 일반 루트 파일시스템도 프로젝트 페이지에서 다운로드 받도록 하겠습니다.

   "이솝 프로젝트" -> "aESOP S5PV210 Board" -> "다운로드 " 페이지에서

  GPE X-Windows Root File System 의   RootFS-S5PV210-Xwindows-1010.tar.gz 파일을 다운로드 받습니다.


- 다운로드 받은 루트 파일 시스템을 NFS를 이용하여 부팅이 가능하도록 환경 설정을 해줍니다.

#] gedit /etc/exports

/nfsroot/RootFS-S5PV210-Xwindows *(rw,no_root_squash)


#] /etc/init.d/nfs-kernel-server restart


- "1)"에서 만든 RootFS-Froyo.tar 파일을 "2)"에서 NFS 부팅을 설정한 디렉토리 복사합니다.

#] cp -a RootFS-Froyo.tar /nfsroot/RootFS-S5PV210-Xwindows/


3) 타겟 보드가 NFS 로 부팅하도록 U-boot 에서 bootargs 를 변경해줍니다.


- 타겟 보드 재부팅 후 커맨드 모드(autoboot 타임아웃되기전에 아무키나 입력하면 됩니다)로 진입합니다


- nfs 부팅이 가능하도록 bootargs 설정 ( IP, nfsroot 관련 설정 내용은 위" 1) ~ 2)" 에서 설정한 내용과 사용하시는 개발 환경을 고려하여 작성해 주시면 되겠네요...)


aESOP-S5PV210 # setenv bootargs init=/init console=ttySAC1,115200 root=/dev/nfs rw nfsroot=192.168.1.148:/nfsroot/RootFS-S5PV210-Xwindows ip=192.168.1.15:192.168.1.148:192.168.1.148:255.255.255.0::usb0:off ethaddr=00:40:5c:26:0a:5b;


aESOP-S5PV210 # boot


타겟 시스템의 로그인 아이디는 root 입니다.


root@S5PC1xx:~# cd /


로그인 후 탑 디렉토리로 이동 하면 다음과 같을 겁니다...RootFS-Froyo.tar 파일을 확인해보시면 되겠네요...


root@S5PC1xx:/# ls -l

-rw-r--r--    1 root     root     85022720 Nov  5  2010 RootFS-Froyo.tar

drwxr-xr-x    2 1000     1000         4096 Sep 16 04:03 bin

drwxr-xr-x    2 1000     1000         4096 Sep 16 04:03 boot

-rw-r--r--    1 root     root           12 Aug 30  2010 brightness

drwxr-xr-x    6 root     root        13760 Sep 16 12:03 dev

drwxr-xr-x   39 1000     1000         4096 Oct 18  2010 etc

drwxr-xr-x    4 1000     1000         4096 Sep 18  2009 home

drwxr-xr-x    4 1000     1000         4096 Sep 22  2009 lib

lrwxrwxrwx    1 1000     1000           17 Oct 17  2010 linuxrc -> ../../bin/busybox

drwxr-xr-x   14 1000     1000         4096 Oct 19  2010 media

drwxr-xr-x    3 1000     1000         4096 Mar 22  2010 mnt

-rw-r--r--    1 root     root            2 Aug 30  2010 power

dr-xr-xr-x   53 root     root            0 Jan  1  1970 proc

drwxr-xr-x    2 1000     1000         4096 Oct 18  2010 sbin

drwxr-xr-x   12 root     root            0 Jan  1  1970 sys

drwxr-xr-x    3 root     root         4096 Nov  5  2010 test

lrwxrwxrwx    1 root     root            8 Oct 17  2010 tmp -> /var/tmp

drwxr-xr-x   11 1000     1000         4096 May 12  2010 usr

drwxr-xr-x    8 1000     1000         4096 Sep 16 03:47 var


이제 루트파일시스템을 퓨징하도록 합니다.

수행하는 명령어들의 간단한 설명은 다음과 같습니다..


- 루트 파일시스템용 mtd 파티션을 클리어하고...

- ubifs 를사용하도록 설정합니다...

- 볼륨 정보를 생성해주고...

- mount 한 후,

- RootFS-Froyo.tar 를 풀어줍니다...

- sync 커맨드를 이용하여 버퍼에 내용이 남지 않도록 합니다....이 부분은 중요합니다...



root@S5PC1xx:~#  flash_eraseall /dev/mtd2

root@S5PC1xx:~#  ubiattach /dev/ubi_ctrl -m 2 -O 2048

root@S5PC1xx:~#  ubimkvol /dev/ubi0 -N rootfs -s 256MiB

root@S5PC1xx:~#  mount -t ubifs ubi0_0 /mnt

root@S5PC1xx:~#  tar -C /mnt -xf /RootFS-Froyo.tar

root@S5PC1xx:~#  sync

root@S5PC1xx:~#  umount /mnt



sync 까지 수행하면 타겟 시스템을 재부팅합니다....UBIFS 파일 시스템을 이용하여 부팅 가능하도록 설정해야겠지요...?


aESOP-S5PV210 # ssetenv bootargs init=/init root=ubi0:rootfs rootfstype=ubifs console=ttySAC1,115200n81 ubi.mtd=2,2048 ip=192.168.10.85:192.168.10.15:192.168.10.1:255.255.255.0::eth0:off ethaddr=00:40:5c:26:0a:5b;


aESOP-S5PV210 # saveenv

aESOP-S5PV210 # boot


부팅 확인...


이제 끝났습니다... 말로 풀어 써보려니 내용이 너무 긴 감이 있네요...;;


그럼 도움이 되시면 좋겠네요...

728x90
반응형

댓글