img-linux
刷机    2016-12-20 20:07:43    15    0    0
tianwaifeixian   刷机

Linux下解包/打包Android映像文件 system.img, boot.img, ramdisk.img, userdata.img.
http://blog.csdn.net/yulix/article/details/12968705

Android源码编译成功后会输出映像文件:system.img,boot.img, ramdisk.img,userdata.img等等。有时我们需要修改里面的内容,下面列出在Linux下如何解包/打包这些映像文件。
---------------------------------------------------------
ramdisk.img
ramdisk.img是经cpio打包、并用gzip压缩的文件。

解包: 新建一个工作目录,把当前目录更改为该工作目录,执行下面命令(注意: img文件位置可能不同).
gunzip -c $HOME/img/ramdisk.img | cpio -i

打包:在工作目录下,把该目录下的所有内容打包
find . | cpio -o -H newc | gzip > ../newramdisk.img
参考文档: http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack%2C_Edit%2C_and_Re-Pack_Boot_Images

-------------------------------------
boot.img
boot.img包含2K字节头部,后面跟着的是zImage格式内核和和ramdisk格式的根文件系统。

解包工具: Android自带的unpackbootimg,以及一些脚本工具比如split_bootimg.pl

打包工具: Android自带的mkbootimg。

参考资料 :

中文请看: http://blog.csdn.net/wh_19910525/article/details/8200372

英文请看: http://android-dls.com/wiki/index.php?title=HOWTO:_Unpack%2C_Edit%2C_and_Re-Pack_Boot_Images

-------------------------------------------

system.img (EXT4)
system.img 是 sparse image格式文件,现有的mount命令无法直接处理。

我们得把sparse image格式转变为普通的img格式,Android源码中带的ext4_utils可以做这个,没有Android源码也不用担心,该工具的源代码已被剥离出来,可以自行下载编译,地址是:http://forum.xda-developers.com/showthread.PHP?t=1081239

我们得到工具有: simg2img,make_ext4fs等等:

解包:
simg2img system.img system.img.ext4
mkdir mnt_dir
sudo mount -t ext4 -o loop system.img.ext4 mnt_dir

打包:
sudo make_ext4fs -s -l 512M -a system system_new.img mnt_dir
注意:在我的机器上必须用root权限执行make_ext4fs,否则新生成的image文件无法使用。
----------------------------------------
userdata.img (EXT4)

和system.img(EXT4) 一样处理


上一篇: 解决:failed to start load kernel modules see systemctl status systemd-modules-load.service for details

下一篇: 解包纽曼纽扣cm810的boot.img

15 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航