前言
这是一篇会一直更新的内容,会将我在接下来一个星期做的事情做一些记录和总结,当然也会频繁的更新,希望大家也能跟帖讨论
下载米2s的标准版rom
选择线刷包下载即可
解压和打包boot.img
解压完成后,在aries_images_4.7.4_4.1_cn/images目录下可以得到system.img文件和boot.img文件
tar -zxvf aries_images_4.7.4_4.1_cn_3cb6d39979.tgz
解压boot.img
解压工具地址:http://code.google.com/p/zen-droid/downloads/detail?name=split_bootimg.pl ,我存放在~/bin/目录下
在rom解压出来的images目录下执行如下命令:
~/bin/split_bootimg.pl boot.img
解压完之后会发现多出来两个文件:boot.img-kernel和boot.img-ramdisk.gz,这就是解压出来的boot.img,其中:
- boot.img-kernel : 这就是内核
- boot.img-ramdisk.gz : 是ramdisk,对应的源码编译目录为out/target/product/generic/root/
分解ramdisk
打包boot.img
替换完ramdisk的内容就可以进行打包操作了,打包需要用到三个工具,分别是unpackbootimg、mkbootfs和mkbooting。下载地址可以直接google搜索
unpackbootimg获取boot.img参数
1. 使用方法
usage: unpackbootimg -i | --input boot.img [-o | --output output_directory]
2. 示例
mkbootfs打包ramdisk
mkbootfs ramdisk/ | gzip >ramdisk-new.gz
mkbooting生成boot.img
1. 使用方法
usage: mkbootimg
--kernel <filename>
--ramdisk <filename>
[ --second <2ndbootloader-filename> ]
[ --cmdline <kernel-commandline> ]
[ --board <boardname> ]
[ --base <address> ]
[ --pagesize <pagesize> ]
-o | --output <filename>
2. 示例
解压和打包system.img
接下来,会讲到另一个重要的img文件,system,img
解压system.img
解压system.img使用的是simg2img工具,命令如下:
simg2img system.img system.img.ext4
为system.img.ext4创建挂载目录tmp
mkdir tmp
挂在system.img.ext4到tmp目录
sudo mount -t ext4 -o loop system.img.ext4 tmp/
修改system目录
一般是根据移植rom的init.rc文件进行对比,然后修改system目录
打包system.img
使用如下命令将tmp目录重新打包成system.img文件
make_ext4fs -s -l 1024M -a system system-new.img tmp/
参数注解:
- -s : 生成ext4的s模式
- -l : 指定system的分区大小
- -a : 指定这个img用于android系统,挂载分区为system
解压和打包userdata.img
最后一步,解包和打包userdata.img文件,这个跟解包打包system.img文件是类似的操作
解压userdata.img
解压userdata.img文件也是使用simg2img工具,命令如下:
simg2img userdata.img userdata.img.ext4
为userdata.img创建挂载目录data
mkdir data
挂在userdata.img.ext4到data目录
sudo mount -t ext4 -o loop userdata.img.ext4 data/
打包userdata.img
还是使用make_ext4fs工具,注意挂载点是data分区