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
부팅 확인...
이제 끝났습니다... 말로 풀어 써보려니 내용이 너무 긴 감이 있네요...;;
그럼 도움이 되시면 좋겠네요...
댓글