技術討論區 > Embedded 討論版
[教學]用 USB flash disk 開機(一)
thyme:
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 的方式。
netman:
讚!頂一個!
greenapple:
想請教一個問題~
就是syslinux Tool 有支援512M以上的flash嗎?
thyme:
--- 引述: "greenapple" ---想請教一個問題~
就是syslinux Tool 有支援512M以上的flash嗎?
--- 引用結尾 ---
不知道耶,我沒試過,512M 以上有什麼特殊規格不能支援的嗎?
還是你想問有沒有支援 FAT32 ?
greenapple:
不好意思 :oops: ~
這個問題我記不清了..
只知道之前使用256cf製作時,
syslinux制作成bootload是可開機的,
但改成512後,就有問題了....
不是FAT32的問題...
我在想SYSLINUX由支援到512的CF嗎?
P.S.不知是不是我想錯了...
導覽
[0] 文章列表
[#] 下頁
前往完整版本