안드로이드 개발환경(Android SDK / Eclipde ADT)에는 AVD 라는 것이 존재해서
가상 안드로이드 기기를 구동은 할수 있는데 시스템을 구성하는 rootFS가 존재하지 않고 있다.
그래서 디렉토리를 뒤져보다 보니
platforms 아래의 안드로이드 버전별 디렉토리에 images 라는 녀석이 존재하고
리눅스로 옮겨서 파일종류를 보니, 다음과 같은 내용이 나왔다.
이름이나 사이즈를 봐서는 system.img가 RootFS일 가능성이 높아 보인다.
안드로이드 시스템에서 /system은 퍼미션이 되지만
/data는 안되므로 userdata.img를 분석해 보는게 이득이고, 마운트 해야할 파일의 방향이 잡혔다.
그리고 안드로이드는 YAFFS2를 rootFS용 filesystem으로 사용하기 때문에,
일반 PC에서 이러한 rootFS를 열어보기 위해서는 해당 파일 시스템을 지원하는지 봐야 하는데
리눅스에서 /proc/filesystem에 지원하는 파일 시스템이 목록이 나온다.
yaffs2는 없으니 아마도.. 커널을 재 컴파일 하는 무시무시한 작업을 해야 할것 같다.
날려도 되는 시스템이지만.. 재구축하기 귀찮아서 두렵다 -_-
음.. UML(User Mode Linux) 란걸로 대체해서 해볼까? 메인 리눅스 날리면 귀찮은디 ㅠ.ㅠ
[링크 : http://user-mode-linux.sourceforge.net/]
아래는 ubuntu 에서 커널 컴파일을 통한 yaffs2 추가하기
[링크 : http://seulkom.tistory.com/34]
아래는 qemu 라는 것으로 AVD 없이 안드로이드를 구동시킨 화면
[링크 : http://www.kandroid.org/board/board.php?board=androidsource&command=body&no=24]
[링크 : http://cs.sch.ac.kr/cs_homepage/seminar/android/Android.htm]
ramdisk.img는 ramfs 이지만 mount로는 보이지않고 cpio로 원래대로 추출(extract) 시켜주어야 나온다.
가상 안드로이드 기기를 구동은 할수 있는데 시스템을 구성하는 rootFS가 존재하지 않고 있다.
그래서 디렉토리를 뒤져보다 보니
platforms 아래의 안드로이드 버전별 디렉토리에 images 라는 녀석이 존재하고
리눅스로 옮겨서 파일종류를 보니, 다음과 같은 내용이 나왔다.
$ file * NOTICE.txt: ISO-8859 English text kernel-qemu: data ramdisk.img: gzip compressed data, from Unix system.img: VMS Alpha executable userdata.img: VMS Alpha executable $ ll -h 합계 84M drwxr-xr-x 2 morpheuz morpheuz 4.0K 2010-09-11 10:01 ./ drwxr-xr-x 5 morpheuz morpheuz 4.0K 2010-09-11 10:01 ../ -rwxr--r-- 1 morpheuz morpheuz 307K 2010-09-11 01:04 NOTICE.txt* -rwxr--r-- 1 morpheuz morpheuz 1.4M 2010-09-11 01:04 kernel-qemu* -rwxr--r-- 1 morpheuz morpheuz 161K 2010-09-11 01:04 ramdisk.img* -rwxr--r-- 1 morpheuz morpheuz 78M 2010-09-11 01:04 system.img* -rwxr--r-- 1 morpheuz morpheuz 3.9M 2010-09-11 01:04 userdata.img* |
이름이나 사이즈를 봐서는 system.img가 RootFS일 가능성이 높아 보인다.
Android emulator has 3 basic images on tools/lib/images directory. * ramdisk.img * system.img * userdata.img system.img and userdata.img have the contents of /system and /data directory on root file system. [링크 : http://wiki.kldp.org/wiki.php/AndroidPortingOnRealTarget] |
안드로이드 시스템에서 /system은 퍼미션이 되지만
/data는 안되므로 userdata.img를 분석해 보는게 이득이고, 마운트 해야할 파일의 방향이 잡혔다.
그리고 안드로이드는 YAFFS2를 rootFS용 filesystem으로 사용하기 때문에,
일반 PC에서 이러한 rootFS를 열어보기 위해서는 해당 파일 시스템을 지원하는지 봐야 하는데
리눅스에서 /proc/filesystem에 지원하는 파일 시스템이 목록이 나온다.
$ cat /proc/filesystems nodev sysfs nodev rootfs nodev bdev nodev proc nodev cgroup nodev cpuset nodev tmpfs nodev devtmpfs nodev debugfs nodev securityfs nodev sockfs nodev pipefs nodev anon_inodefs nodev inotifyfs nodev devpts ext3 ext2 ext4 nodev ramfs nodev hugetlbfs nodev ecryptfs nodev fuse fuseblk nodev fusectl nodev mqueue nodev rpc_pipefs nodev nfsd nodev binfmt_misc |
yaffs2는 없으니 아마도.. 커널을 재 컴파일 하는 무시무시한 작업을 해야 할것 같다.
날려도 되는 시스템이지만.. 재구축하기 귀찮아서 두렵다 -_-
음.. UML(User Mode Linux) 란걸로 대체해서 해볼까? 메인 리눅스 날리면 귀찮은디 ㅠ.ㅠ
[링크 : http://user-mode-linux.sourceforge.net/]
아래는 ubuntu 에서 커널 컴파일을 통한 yaffs2 추가하기
[링크 : http://seulkom.tistory.com/34]
아래는 qemu 라는 것으로 AVD 없이 안드로이드를 구동시킨 화면
[링크 : http://www.kandroid.org/board/board.php?board=androidsource&command=body&no=24]
[링크 : http://cs.sch.ac.kr/cs_homepage/seminar/android/Android.htm]
ramdisk.img는 ramfs 이지만 mount로는 보이지않고 cpio로 원래대로 추출(extract) 시켜주어야 나온다.
$ gzip -cd ramdisk.img > ramdisk $ cpio -iv -F ramdisk [링크 : http://wiki.kldp.org/wiki.php/AndroidPortingOnRealTarget]
|
'Programming > android' 카테고리의 다른 글
ADT plugin 설치시 requires 'org.eclipse.ui 3.6.2' 에러 발생 (0) | 2012.02.04 |
---|---|
안드로이드 플랫폼 다운로드 / 구축 (2) | 2010.09.11 |
안드로이드 개발환경 업그레이드는 가급적이면 eclipse 에서! (0) | 2010.09.11 |
apk - Android PacKage (3) | 2010.09.05 |
안드로이드에서 apk 빼내기 (0) | 2010.09.05 |