買了個本本,准備裝FB,遇到不少難題,現在會將遇到的問題和解決辦法寫下來,供大家參考、備查。
一、安裝
相信不少的朋友在初學FreeBSD的時候都曾想過在電腦上XP和FreeBSD,但並非是每個人的電腦上都是兩塊硬盤,尤其是想在筆記本上安裝FreeBSD的朋友。VM這個東東好,但畢竟有時還是要在真機上進行試驗,比如像內核編譯、make world之類的操作,相信有過在VM下做這些工作的朋友一定會對此過程刻骨銘心,那個等待的過程用兩個字來形容就是:難過。
我安裝雙引導的時候,沒有使用Linux裡廣泛使用的Grub,雖然我也找到了文檔來進行操作。我的觀點是簡單最好,使用是FreeBSDChina上penguin的貼子裡寫的那個內容:
將BSD所在主分區Set Active(可以用PQ,Diskman等工具都可) 默認將引導BSD系統,進入BSD系統可後:
引用: #dd bs=512 count=1 if=/dev/ad0s3 of=bootsect.bsd
紅色文字視你自己硬盤情況修改
將生成一個bootsect.bsd,將這個文件拷貝到XP盤根目錄下(mount_msdos FAT系統拷貝過去,或是任何辦法拷過去就行,再將XP所在主分區Set Active(也可以用FreeBSD自帶的fdisk,不熟練慎用,還是PQ,Diskman吧)
編輯XP的boot.ini文件,加入 C:\bootsect.bsd="FreeBSD"
OK,下次啟動XP將會有啟動菜單選擇
需要單獨說明的是,如果你不想破壞數據的話,可以使用PQ等軟件進行分區調整,因為我的硬盤空間已經不夠,在保存了所需要的文件後,選擇的是將整個硬盤格式化掉後重新安裝的系統。在安裝時,先把XP安裝到了硬盤的前67G,將120G硬盤的其他部分分給了FB。按照正常的程序安裝好XP後,同樣用正常的程序安裝FB,在安裝FB的過程中,有一個界面是選擇安裝FB引導程序的那個對話框,我在這裡犯了不只一次的毛病,看到該界面時,擔心FB寫MBR到硬盤的開始部分,破壞掉XP的引導程序,一直使用的是NONE選項,所以之後的FB一直啟動不起來(需知,WIN修復MBR相當之麻煩)。後來無意間安裝了FB的標准引導程序,再用win98的光盤將WIN分區設置為活動(即可啟動狀態)之後就可以利用WIN的啟動菜單來引導FB了。
將bootsect.bsd和boot.ini保存到一個安全的地方,將來重裝XP的時候將這兩個文件拷貝到C下,然後收工。
階段總結:
1、以前傳說的FB的啟動信息要在1024柱面之內的那個限制似乎不再有用了。
2、萬般無奈的情況下,抱著必死的心情去做,也許會有意外收獲。
二、硬件驅動安裝
按說這個部分對於熟悉於安裝WIN的朋友來說是一件再簡單不過的事情了,但在Unix下這可能是一個噩夢都說不定^_^,不廢話了,馬上開始。
(一)網卡驅動的安裝
我的本本華碩的說法是高性價比系列的機型,有一部分硬件是比較NB的,比如像WLAN,是intel 3945ABG的,網卡用的是RealTek RTL8168/8111 PCI-E Gigabit的以太網卡。麻煩的是FB 5.4不支持這一系列的網卡,還好RealTek公司提供for FreeBSD的驅動下載,FB才能得以進駐我的本本。
Method 1: //方法1:
1.Copy if_rl.ko in "modules" directory to "/modules" directory and overwrite the existing file. //復制 if_rl.ko 到/modules 目錄並覆蓋已存在的文件
3.Reboot.//這個不用說了吧?
很明顯,我們下載到的壓縮包裡並沒有這個模塊,所以第一個方法失敗(其實也是對廣大的Unix用戶負責,從源碼安裝的程序是最適合你的機器的,雖然麻煩了一些^_^),改用第二個方法。
Method 2:
Because the FreeBSD kernel has default drivers to support RTL8139C and RTL8169S. To use the RTL8139C+, RTL8169SB, RTL8169SC, RTL8168B, and RTL8101E, you need to update your NIC driver by recompiling your FreeBSD kernel.
//因為FreeBSD的內核有自帶的驅動來支持RTL8139C和RTL819S。要使用RTL8139C+、 RTL8169SB、RTL8169SC、RTL8168B 和 RTL8101E,你需要通過重新編譯你的FreeBSD內核來升級你的NIC(Network Interface Card,網絡接口卡)驅動。
The main steps you have to do:(FreeBSDSrcDir means the directory of FreeBSD source code and it may be "/usr/src/sys")//有一些主要的步驟你需要做(FreeBSDSrcDir 的是指你的FreeBSD 源代碼的目錄,路徑可能是 /usr/src/sys,默認路徑):
1. keep the orginal driver source code://保留原始驅動源碼
# cd /usr/src/sys/pci
# cd /usr/src/sys/modules
# cd /usr/src/sys/modules/rl
# cd /usr/src/sys/i386/conf/
2. recompile your kernel (you must install your FreeBSD source code first !!) //重新編譯你的內核(你必須要先安裝你的FreeBSD 源代碼)
# vim /usr/src/sys/i386/conf/GENERIC and delete rl and re//rl、re是RTL網卡在FB裡的設備名,下同。
# vim /usr/src/sys/modules/Makefile and delete rl and re //在操作此步驟的時候,用#來注銷含有 re、rl 的兩行會出現編譯錯誤,需要真正從文件中刪除這兩行編譯才得以繼續。
# cd /usr/src/sys/i386/conf
# /usr/sbin/config GENERIC//到這一步重新編譯內核的時候,我參考的是《FreeBSD 技術內幕》P332的
# make kernel KERNCONF=zeroB(zeroB是我的內核的名稱,請根據你的內核文件的名稱及內核文件中的ident字段來確定),並省略了以下的步驟從step 3 開始。當然需要重啟你的系統才能繼續了。
(for FreeBSD 5.x/6.x)
# cd ../compile/GENERIC
(for FreeBSD 4.x)
# cd ../../compile/GENERIC
# make depend
# make
# make install
# reboot
3. update the driver source code: //更新你的驅動源碼
Copy the dirver source code( if_rl.c and if_rlreg.h) into /usr/ src/sys/pci //復制 if_rl.c if_rlreg.h 到 /usr/src/sys/pci目錄中
Copy the Makefile into /usr/src/sys/modules/rl //復制 Makefile 到/usr/src/sys/modules/rl 目錄
4. build the driver: //構建驅動
# cd /usr/src/sys/modules/rl
# make clean
# make
5. install the driver //安裝驅動
# cd /usr/src/sys/modules/rl
# kldload ./if_rl.ko 執行到這一步的時候,就可以使用 /etc/netstart 來重新加載網絡配置和使用 ifconfig -a 來查看FreeBSD 是否識別了你的網卡,我的網卡的設備名是 rl0,顯示使用是的 RTL8139 的芯片,是否支持千兆速率我不得而知,我用的是 10/100 傻瓜交換。接下來就是設置 IP 等信息,比較簡單,我就不翻譯了,請各位根據情況操作。
6. configurate the static IP address
# ifconfig rl0 xxx.xxx.xxx.xxx
7. configurate the IP address by DHCP
# /sbin/dhclient rl0
The user can use the following command to change link speed and duplexmode.
1. For autonegotiation,
#ifconfig rl media autoselect
2. For 1000Mbps full-duplex,
#ifconfig rl media 1000baseTX mediaopt full-duplex
3. For 100Mbps full-duplex,
#ifconfig rl media 100baseTX mediaopt full-duplex
4. For 100Mbps half-duplex,
#ifconfig rl media 100baseTX mediaopt half-duplex
5. For 10Mbps full-duplex,
#ifconfig rl media 10baseT/UTP mediaopt full-duplex
6. For 10Mbps half-duplex,
#ifconfig rl media 10baseT/UTP mediaopt half-duplex
整個網卡驅動的安裝基本上可以說是沒有懸念的,這要感謝 RTL 公司的驅動研發人員和 Readme 文檔的維護者,讓我的本本可以遨游在網絡的世界裡。
PS:其實整個過程是比較簡單的,這所以會加入翻譯,主要是考慮到初學者對FB的不熟悉,論E文水平自然不敢和大蝦們較勁,祝大家在新年身體健康,工作如意,早日小康,嘎嘎。