嘗試在我的X40 上安裝FreeBSD 8.0 的時候遇到了個不大不小的問題。
IBM的原裝USB式CD-ROM支持從光盤啟動,但是當進入sysinstall,選擇安裝介質時,卻無法發現安裝光盤。
能夠通過光驅啟動並執行上面的程序,卻無法在該程序中識別同一個光驅,真是咄咄怪事。
原本打算通過另外的機器架設FTP,無奈驅動不全,連無線網卡都無法在sysinstall 裡啟用。
好在FreeBSD 從版本8.0開始,提供了專為USB盤安裝准備的8.0-RELEASE-i386-memstick.img 這樣的封裝格式。於是就動起了從U盤安裝的腦筋。
我准備的是Sony 高速8G U盤,編號USM8GLX。
寫入U盤的系統是位於同一台X40 上的Linux Mint 8。
將U盤插入系統,進入Linux 的控制台,輸入sudo fdisk -l 查看加載信息(僅摘錄相關段落):
Disk /dev/sdb: 8019 MB, 8019509248 bytes
175 heads, 32 sectors/track, 2796 cylinders
Units = cylinders of 5600 * 512 = 2867200 bytes
Disk identifier: 0xc3072e18
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 2797 7831535+ b W95 FAT32
由此看來,U盤上原本的分區在Linux 系統中被識別為/dev/sdb1,那麼U盤這個設備就是/dev/sdb了。
接下來就是把下載好的img 文件用dd 寫入U盤了。
dd if=~/8.0-RELEASE-i386-memstick.img of=/dev/sdb bs=10240 conv=sync
90157+0 records in
90157+0 records out
923207680 bytes (923 MB) copied, 114.977 s, 8.0 MB/s
等待大約2分鐘做後,安裝FreeBSD 的U盤制作好了,現在可以用來啟動機器了。
注意,要恢復U盤的初始狀態最好是用/dev/zero 重寫整個U盤。例如:
dd if=/dev/zero of=/dev/sdb bs=4096
這一步視整個U盤尺寸大小而定,8G的盤基本上要15分鐘左右了。
完成以上步驟之後,可以用Linux 對U盤進行格式化,就又恢復成普通盤了。
追加一下萬一在Linux 下不能自動mount U盤時,對U盤進行格式化的方法。
先用sudo fdisk -l找出U盤的設備名稱。假設識/dev/sdb.並且此時fdisk應該報告在/dev/sdb 上沒有找到任何分區。例如:
Disk /dev/sdb: 8019 MB, 8019509248 bytes
247 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 15314 * 512 = 7840768 bytes
Disk identifier: 0x8f0bd969
Device Boot Start End Blocks Id System
然後對/dev/sdb 進行分區:
sudo fdisk /dev/sdf
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1022, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1022, default 1022):
Using default value 1022
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
用n 建立新分區,並選擇p 建立第1個主分區,至於cylinder 直接回車選默認值即可。完了之後輸入w 保存。
然後就是格式化U盤了。
sudo fdisk -l
Disk /dev/sdf: 8019 MB, 8019509248 bytes
247 heads, 62 sectors/track, 1022 cylinders
Units = cylinders of 15314 * 512 = 7840768 bytes
Disk identifier: 0x8f0bd969
Device Boot Start End Blocks Id System
/dev/sdf1 1 1022 7825423 83 Linux
sudo mkfs.vfat /dev/sdf1
mkfs.vfat 3.0.3 (18 May 2009)
用mkfs.vfat 對U盤格式化之後,重新插入U盤,應該就能自動mount 出來了。