製作的 tools是 mkbootfs:
android 的 system/core/cpio 是 mkbootfs 的 source code。
mkbootfs 跟 cpio 很像,但是..好像不需要給 file list,只要給 folder,他就會把folder 所有的內容 archive 起來 (以 cpio 的格式)。
在 build/core/Makefile 中,有 invoke mkbootfs
$(hide) $(MKBOOTFS) $(TARGET_ROOT_OUT) | $(MINIGZIP) > $@
其中 TARGET_ROOT_OUT 就是先建好的 root folder 。mkbootfs archive 完後,再交給 gzip 壓縮。
簡單的說,要做出 ramdisk.img,就是..
mkbootfs root | minigzip > ramdisk.img
然後給u-boot 用要..
mkimage -A arm -O linux -T ramdisk -C none -a 0x90308000 -n "Android Root Filesystem" -d ramdisk.img ./uramdisk.img
要解刊 ramdisk 的話..
mv ramdisk.img ramdisk.img.gz
gunzip ramdisk.img.gz
mkdir worktmp; cd worktmp
cpio -i -F ../ramdisk.img
如果是已經用 mkimage 處理過的 uramdisk.img,就要先把 ramdisk.img.gz 抓出來:
$dd if=uramdisk.img of=ramdisk.img.gz bs=1 skip=64
..據說 mkimage 用 開頭的 64 byte 塞u-boot 資訊。這樣dd出 ramdisk.img.gz 後,就可以用
ref: http://qustion1234.blogspot.com/2009/09/how-to-extract-ramdisk-content-from.html
沒有留言:
張貼留言