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) 一样处理
本文档详细介绍了如何在Linux系统中解包和打包Android的system.img, boot.img, ramdisk.img以及userdata.img。涉及到的工具包括unpackbootimg、mkbootimg、ext4_utils等,并提供了相关参考资料链接。"
135705633,21624762,CentoS配置Tor网络:解决封禁及浏览器问题,"['centos', '网络', '代理', 'tor网络', '安全']

5518

被折叠的 条评论
为什么被折叠?



