查看: 1991|回复: 0
打印 上一主题 下一主题

Android文件系统的提取方法(一)

[复制链接]
跳转到指定楼层
沙发
发表于 2015-4-28 12:35:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1、Android文件系统的结构

Android源码编译后得到system.img,ramdisk.img,userdata.img映像文件。其中, ramdisk.img是emulator的文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,emulator加载这3个映像文件后,会把 system和 userdata分别加载到 ramdisk文件系统中的system和 userdata目录下。因此,我们可以把ramdisk.img里的所有文件复制出来,system.img和userdata.img分别解压到 ramdisk文件系统中的system和 userdata目录下。

2、分离Android文件系统出来

system.img,ramdisk.img,userdata.img映像文件是采用cpio打包、gzip压缩的,可以通过file命令验证:

root@linux-home:~/kernel/out/target/product/generic# file ramdisk.img
ramdisk.img: gzip compressed data, from Unix

Android源码编译后除了生成system.img,userdata.img之外还生成system和 userdata文件夹,因此不需要解压它们。Android源码编译后还生成root文件夹,其实root下的文件与 ramdisk.img 里的文件是一样的,不过这里还是介绍怎样把 ramdisk.img解压出来:

将ramdisk.img复制一份到任何其他目录下,将其名称改为ramdisk.img.gz,再用gunzip命令将其解压,操作如下


//将ramdisk复制到当前工作目录

root@linux-home:~# cp kernel/out/target/product/generic/ramdisk.img ./
root@linux-home:~# ls
android2.3.6-source.tar.bz2  Documents  overview.png  qt-book-examples.tar.gz
android_fs_rjm.tar.bz2       Downloads  Pictures      ramdisk.img
bin                          kernel     Public        Templates
Desktop                      Music      qt-book       Videos

//将其命名为ramdisk.img.gz
root@linux-home:~# mv ramdisk.img ramdisk.img.gz

//用gunzip解压
root@linux-home:~# gunzip ramdisk.img.gz



接下来,建立一个叫ramdisk的文件夹,进入,输入以下命令

cpio -i -F ../ramdisk.img

然后 ls

过程如下:

root@linux-home:~# cd ramdisk
root@linux-home:~/ramdisk# ls
root@linux-home:~/ramdisk# cpio -i -F ../ramdisk.img
456 blocks
root@linux-home:~/ramdisk# ls
data          dev   init.goldfish.rc  proc  sys     ueventd.goldfish.rc
default.prop  init  init.rc           sbin  system  ueventd.rc


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表