(範例程式所表示的目錄或device,僅供參考,可能不存在,
也不保証一定可執行)
「EXT2」
再來要熟悉一下怎麼做 ext2 的檔案系統
# mke2fs /dev/hdax
# mount -t ext2 /dev/hdax /mnt/tmp
咦,這好像太簡單了,沒錯,的確太簡單了,我們要談的不是這個。
#!/bin/sh
echo "create 4,096KB "
dd if=/dev/zero of=/tmp/tmp_loop bs=1k count=4096
losetup /dev/loop0 /tmp/tmp_loop
mke2fs -m 0 /dev/loop0
mount -t ext2 /dev/loop0 /mnt/tmp
這時候,你會發覺,在 /mnt/tmp 有 4MB 的空間可以寫入唷!
這有什麼用途呢?當然很有用,如果你有看過如何製作軟碟開機片,
一定會覺得很熟悉!
再來,把後面的尾巴完成
#!/bin/sh
#先把一些你需要的檔案copy進入 /mnt/tmp
umount /mnt/tmp
losetup -d /dev/loop0
echo "建立 ramdisk image : initrd.img"
dd conv=sync if=/tmp/tmp_loop | gzip -9 > /tmp/initrd.img.gz
如果你有把整個開機需要的檔放進去,那這個 image 就是可開機的
linux檔了。
要看內容怎麼辦?
# gunzip /tmp/initrd.img.gz
# mount -t ext2 -o loop /tmp/initrd.img /mnt/tmp
上面程式有看到 gzip ,好像有談到縮壓了,沒錯,這是很普通嵌入
式所應用的縮壓方式,但是,我們不用這個方式,因為,要應用時,
要先做一個 ramdisk ,然後把檔案 gunzip 到 ramdisk 上,才能使
用,有什麼缺點呢?舉個例子來說明,假設總共要8MB,縮壓後只要
4MB,你 flash 有 4MB 剛好放得下,記憶體有 16MB ,那開機後
要劃 8MB 的 ramdisk 給解開的檔案系統用,記憶體就憑空少了
8MB,所以這並不是一個很好的方法。當然,也有好處,一切唯讀,
隨便重開機也不會掛,重開機一切恢復正常。