USB flash 拿來存隨身資料很方便,當然就有人動惱筋把整個作業系統
都灌進去,最近在弄這個,順便把心得報告一下。
網路上相關資料我沒有找很詳細,我想別的地方一定有,但做法應該
和我有些許的差異,有興趣的人就參考一下我的方法。
首先假設你具備有 floppy linux 或是 embedded linux 的基礎,我的方
法比較偏向嵌入式的做法(所以請不要問我怎樣才能把 FC4 ,灌進 1G 的
大姆哥內)。
硬體則需要一隻 USB flash disk,容量 8 MB 以上(現在應該買不到這麼
小的容量的吧!),以及你的主機板要支援USB-HDD開機的選項。
軟體方面,linux系統是必備的,因為我們不打算做太大的系統,busybox
也要先準備好,kernel版本不限,能跟 busybox 合即可,一般來說,直
接 copy 你 PC 上的 kernel 來用即可,再來比較不同的是 syslinux,
這是一隻 bootload,可以去
http://www.syslinux.org/ 去下載回來,
直接 make,然後找裡裡的 syslinux 這隻執行程式來用即可。
第一步,先在你 PC 上插上 USB flash,看可否能掛載,如果不能掛載,
先檢查一下底下的一些 modules 有沒有載入,
USB 方面:usbcore.ko uhci-hcd.ko ohci-hcd.ko ehci-hcd.ko usbhid.ko usb-storage.ko
SCSI 方面:scsi_mod.ko sd_mod.ko
檔案系統:fat.ko vfat.ko nls_cp437.ko nls_iso8859-1.ko
再來,假設你已經正確把 USB flash 放在 /dev/sda1 且 mount 在 /mnt/tmp,
也可以讀寫資料,一切沒問題後,先 umount /dev/sda1,
然後安裝 syslinux,執行
# syslinux /dev/sda1
接著我們要建立一個 syslinux 的設定檔,重新掛載 /dev/sda1 到
/mnt/tmp,
自行建立一個名為 syslinux.cfg 的文字檔,內容類似如下
TIMEOUT 20
DEFAULT linux
LABEL linux
KERNEL bzImage
APPEND root=/dev/ram0 initrd=initrd.img
其中 kernel 檔名為 bzImage,ram disk image的檔名為initrd.img,
這幾個檔皆放在 /mnt/tmp 底下,initrd.img 就是一個 root file
system,你可以使用 gzip 壓縮之,其做法請參考 floopy linux的
製作。
完畢後,在 BIOS 選擇 USB-HDD 重開機就大功告成了。
因為檔案系統的根目錄都放在 ramdisk,這樣比較浪費空間,下一篇我們再
談談 root 不是 ramdisk 的方式。