[컴][안드로이드] .img 압축 풀기 / .img 에서 내용 추출하기
img 추출/ img unpack
ref. 1 에 따르면 simg2img 는 compressed ext4 img 에 쓰인다고 한다. Bad magic 이라고 뜨는 이유는 simg2img 를 이용해서 yaffs2 를 읽으려고 해서 발생한다고 한다.
하지만 아래 두 글에서 추출한 system.img 를 simg2img 를 이용해서 raw 포맷으로 변환했다.
추출한 system.img 와 sdk 의 img 가 다를 가능성이 충분히 있다.
여하튼, 여기서는 sdk 에 존재하는 .img 를 extract 하기로 한다.
windows 용은
sdk/system-images/android-18/armeabi-v7a/안에 들어있는 .img 를 추출(extract) 해 봤다.
- system.img
- ramdisk.img
- userdata.img
userdata.img / system.img
simg2img
system.img 는 simg2img 로 extract 할 수 있다고 해서 시도 해 봤다. 하지만 Bad magic number 만 보여주고 풀리지 않았다.ref. 1 에 따르면 simg2img 는 compressed ext4 img 에 쓰인다고 한다. Bad magic 이라고 뜨는 이유는 simg2img 를 이용해서 yaffs2 를 읽으려고 해서 발생한다고 한다.
하지만 아래 두 글에서 추출한 system.img 를 simg2img 를 이용해서 raw 포맷으로 변환했다.
- http://ismaakit.com/blog/archives/148 : How to create your own ROM part 1
- http://tody.egloos.com/5734050 : 루팅 펌웨어 제작방법
추출한 system.img 와 sdk 의 img 가 다를 가능성이 충분히 있다.
build simg2img
- 4.1.1_r1 이전버전
simg2img 를 만들고 나서 img 를 다음과 같이 풀 수 있다.
- 이후버전
- simg2img system.img system.raw.img
여하튼, 여기서는 sdk 에 존재하는 .img 를 extract 하기로 한다.
unyaffs2
그래서 userdata.img 와 system.img 는 yaffs file system 을 사용하기 때문에 unyaffs2 를 사용하면 된다.(unyaffs2(yaffs2utils) 홈페이지)unyaffs2 --yaffs-ecclayout ./userdata.img ./out_directory참고로 linux 용이다. linux 에서 samba 로 fat32 filesystem 을 mount 하고, 그곳에 out_directory 를 설정했는데, symbolic link 때문에 정상적으로 압축이 풀리지 않았다. 그래서 local 에 풀었다.
windows 용은
https://code.google.com/p/yaffey/에서 찾을 수 있다.
ramdisk.img
rmadisk.img 를 unpack 하는 방법은 ref.2 , ref. 3 에 나와있는 설명을 정리한다. gzip 으로 되어 있어서 압축을 풀고, cpio 를 사용해서 다시 한번 unpack 하면 된다. 방법은 아래와 같다.- gunzip ramdisk.img
- cpio -i -F ramdisk.img
See Also
- http://blog.naver.com/xodlftm/140180258121 : 폰에서 system.img 추출하기, adb 이용
References
- Mount Android emulator images
- http://wongfei.blog.me/10102676556
- ANDROID’S PARTITION IMAGES, Lindus Embedded, Embedding Open Source