现在的位置: 首页 > 综合 > 正文

android 镜像制作方法(待整理)

2012年09月17日 ⁄ 综合 ⁄ 共 3013字 ⁄ 字号 评论关闭

一:update.zip包的制作
  
1:新建一个目标,在此目录下准备好需要的文件,如system目录文件、boot.img、recovery.img等.
     mkdir
testupdate
     cp system/ testupdate/ -tf
    
注:如果文件是system.img镜像可以用unyaffs解压出来得到system
  
2:用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是输出文件名
  
3:建立一个目录名称为META-INF/com/google/android,把上面生成的脚本放进去
      mkdir -p
META-INF/com/google/android
      mv update-script
META-INF/com/google/android/
   4:压缩文件
     zip -r update.zip
system META-INF
   5:给压缩文件添加签名
     mv update.zip ../signapk/
    
cd ../signapk/
     java -jar signapk.jar testkey.x509.pem
testkey.pk8 update.zip signed-update.zip
   6:删除多余的文件,并把生成的包重命名
    
rm update.zip
     mv signed-update.zip ../update.zip
     cd ../
  
7:大功告成,把更新包update.zip拷到sdcard根目录下去验证吧!

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

二:ramdisk.img
制作
   方法1:
     解压:
        1) mv ramdisk.img ramdisk.img.gz
       
2) gunzip ramdisk,img.gz
        3) mkdir ramdisk;cd ramdisk
       
4) cpio -i -F ../ramdisk.img
     压缩:
        1)
产生要pack的目录list,也可以自己列
           cpio -i -t -F ../ramdisk.img >
list
        2) 利用刚生成的list文件列表,cpio归档
           cpio -o -H newc
-O new.img < list
        3) gzip new.img
   方法2:
      
解压:  gunzip -c ../your-ramdisk-file | cpio -i
       压缩:  find . |
cpio -o -H newc | gzip > ../newramdisk.cpio.gz

  
注意:在android里的做法是
       1)先得到ramdisk所需要的文件,比如root目录
      
2)用mkbootfs制作ramdisk.img,用法如下
          mkbootfs root | gzip >
ramdisk.img
       这里需要验证哪个能用android写下去

三: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即可

四:system.img的制作(只为
yaffs2格式)
        1)压制:./mkyaffs2image system/ system.img
       
2)解压:./unyaffs system.img

四:system.img的制作(只为yaffs2格式)
       
1)压制:./mkyaffs2image system/ system.img
        2)解压:./unyaffs
system.img

五: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 > rdimg/ramdisk.gz
8.拷贝该ramdisk.gz映像到tftpboot目录下
  cp rdimg/ramdisk.gz /tftpboot/
9. 使用mkimage工具
    mkimage  -n "uboot.ramdisk.filesys" -A arm -O linux -T ramdisk -C
gzip  -d ramdisk.gz  uboot.ramdisk.gz

参考:http://liaowb1234.blog.163.com/blog/static/771555472010027104534626/

抱歉!评论已关闭.