一: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