一: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 rdimg2.創建一個ramdisk文件,大小32768 X 1k。dd if=/dev/zero of=rdimg/ramdisk bs=1k count=327683.使用ext2方式格式該文件mke2fs -F -v -m0 rdimg/ramdisk4.將該ramdisk文件和rdmnt掛載 mount -o loop rdimg/ramdisk rdmnt/5.拷貝文件到掛載目錄中。文件系統目錄在:/home/xrqun/workdir/filesys/ cp –av /home/xrqun/workdir/filesys/* rdmnt6.卸載ramdisk umount rdmnt7壓縮 ramdisk文件 gzip –c -9 <rdimg/ramdisk > rdimg/ramdisk.gz8.拷貝該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/