首页 > 代码库 > Android Rom移植

Android Rom移植

前言

这是一篇会一直更新的内容,会将我在接下来一个星期做的事情做一些记录和总结,当然也会频繁的更新,希望大家也能跟帖讨论

下载米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分区