android镜像制作方法

update.zip包的制作

1.新建一个目标,在此目录下准备好需要的文件,如system目录文件、boot.img、recoveryimg等

    mkdir testupdate
    cp system/ testupdate/ -tf
    注:如果文件是system.img镜像可以用unyaffs解压出来得到system

1.用make-update-script工具生成update-script脚本,如下

    cp make-update-script testupdate/
    cp android-info.txt testupdate/
    cd testupdate
    ./make-update-script system android-info.txt > update-script
    rm make-update-script android-info.txt
    vi update-script //根据需要适当修改些脚本
    说明:system是要更新的目录,android-info.txt是板的版本信息,update-script是输出文件名

1.建立一个目录名称为META-INF/com/google/android,把上面生成的脚本放进去

    mkdir -p META-INF/com/google/android
    mv update-script META-INF/com/google/android/

1.zip压缩

    zip -r update.zip system META-INF

1.给压缩文件添加sign

    mv update.zip ../signapk/
    cd ../signapk/
    java -jar signapk.jar testkey.x509.pem testkey.pk8 update.zip signed-update.zip

1.删除多余的文件,并把生成的包rename

    rm update.zip
    mv signed-update.zip ../update.zip
    cd ../

1.大功告成,把更新包update.zip拷到sdcard根目录下去验证吧!

注意:

1)如果文件里有连接,应该在获取update-script之后在原文件里删除链接文件,再打包,否则symlink将出错;
2)如果原文件里有空目录,所获的签名将失去此记录,所以如果空目录必须存在,更新之后的文件将与原文件不同(少了空目录)

ramdisk.img 制作

boot.img的制作

1:android正常做法

1):连接

    mkbootimg –kernel your-kernel-file –ramdisk newramdisk.cpio.gz –cmdline “mem=128 console=ttymxc0,115200n8 init=/init rw” –output mynewimage.img
    或
    mkbootimg –kernel your-kernel-file –ramdisk newramdisk.cpio.gz –cmdline –output mynewimage.img

2):提取img中的kernel和ramdisk

    ./split_bootimg.pl mynewimage.img

2:uboot

直接把uImage重命名为boot.img即可

3:system.img的制作(只为 yaffs2格式)

1)压制:

    ./mkyaffs2image system/ system.img

2)解压:

    ./unyaffs system.img

4:system.img的制作(只为yaffs2格式)

1)压制:

    ./mkyaffs2image system/ system.img

2)解压:

    ./unyaffs system.img

5:recovery.img的制作 1:如果recovery的镜像是只有文件系统部分时候可以如第四所示范 2:如果recovery为ramdisk形式

制 作ramdisk的过程。

1.在/mnt下创建rdmnt 和 rdimg 目录

    mkdir rdmnt
    mkdir rdimg

2.创建一个ramdisk文件,大小32768 X 1k。

    dd if=/dev/zero of=rdimg/ramdisk bs=1k count=32768

3.使用ext2方式格式该文件

    mke2fs -F -v -m0 rdimg/ramdisk

4.将该ramdisk文件和rdmnt挂载

    mount -o loop rdimg/ramdisk rdmnt/

5.拷贝文件到挂载目录中。

    文件系统目录在:/home/xrqun/workdir/filesys/
    cp –av /home/xrqun/workdir/filesys/* rdmnt

6.卸载ramdisk

    umount rdmnt

7压缩 ramdisk文件

    gzip –c -9 rdimg/ramdisk.gz

8.拷贝该ramdisk.gz映像到tftpboot目录下

    cp rdimg/ramdisk.gz /tftpboot/
  1. 使用mkimage工具

     mkimage -n “uboot.ramdisk.filesys” -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz uboot.ramdisk.gz