可能是剛剛過完年的原故,也可能是因為家裡剛剛添了一個小寶寶的原因。過完年的這一個多月,我怎麼也沒有辦法剎下心來寫程序。每天坐在計算機前不是看電影就是在網上毫無目地的閒逛。一天在 www.Linuxsir.com 的bbs上看到一個關於FreeBSD啟動Gnome速度神速的帖子。這引起了我極大的興趣,頓感手癢難奈。 我以前聽說過FreeBSD,但從來沒玩過。在我以前的感覺中,FreeBSD是專門運行在服務器上,用命令行操作的專用操作系統。哈哈,純粹一個 FreeBSD菜鳥。這篇文章記錄了我安裝、配置FreeBSD的過程。寫這篇文章的目的一方面是為了防止我過一段時間忘記了安裝的細節;另一方面是為了 同FreeBSD迷們分享經驗,對於像我一樣的初學者可以少走一些彎路。 1、安裝哪個版本的FreeBSD 由於我對FreeBSD一無所知,因此像這麼簡單的問題都成了大問題。為了找到答案,我翻遍了linuxsir的bbs。在那裡有很多FreeBSD大蝦關於版本問題的介紹,大致情況如下: a)4.7。它是FreeBSD-4的當前穩定發行版。 b)4.8。它當前的版本是RC2。 c)5.0。它是FreeBSD的一個新分支,據說對中文支持不是太好。 我選擇了4.7版。呵呵,我這人就是落後。當別人都在裝RedHat 8.0的時候,我卻裝7.3。呵呵,比較省心嘛。 2、如何獲取FreeBSD 這對我來說,也是一個大問題。我在網上找了半天,也沒找到一個比較快的下載FreeBSD的FTP站點。最後沒辦法了,就去FreeBSD的老家 ftp.freebsd.org 試試,居然下載速度是150k/s,爽。如果使用wget訪問 ftp.freebsd.org ,需要附加參數--passive-ftp。 wget --passive-ftp -r ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/4.7/ FreeBSD 4.7一共有5張光盤: -rw-r--r-- 1 ftpuser ftpusers 639729664 Oct 10 00:11 4.7-disc1.iso -rw-r--r-- 1 ftpuser ftpusers 666075136 Oct 9 09:17 4.7-disc2.iso -rw-r--r-- 1 ftpuser ftpusers 654835712 Oct 8 12:13 4.7-disc3.iso -rw-r--r-- 1 ftpuser ftpusers 648937472 Oct 8 12:47 4.7-disc4.iso -rw-r--r-- 1 ftpuser ftpusers 198672384 Oct 10 01:07 4.7-mini.iso 我後來才知道,其實只需要下載4.7-mini.iso這張光盤就行了。在FreeBSD中,安裝軟件基本上都是通過Ports完成的。 3、安裝FreeBSD 在寫安裝系統這部分前,我現介紹一下我的機器配置: CPU PIII 733 Memory 512M IDE0 60G Dos IDE1 15G IDE2 15G Linux IDE3 CDROM Sound cs4281 Video Radeon7500 Mouse ps/2 Network VIA VT6102 Rhine II 10/100BaseTX + ADSL 我使用FreeBSD的硬盤安裝方式安裝FreeBSD。把FreeBSD的光盤鏡像拷到一個FAT32分區裡。制作了兩張安裝啟動軟盤。這兩張軟盤的鏡像分別是floppies/kern.flp和floppies/mfsroot.flp。 DOS/Windows下執行: TOOLS\RAWRITE FLOPPIES\KERN.FLP A: TOOLS\RAWRITE FLOPPIES\MFSROOT.FLP A: Linux下執行: dd if=kern.flp of=/dev/fd0 dd if=mfsroot.flp of=/dev/fd0 用 軟盤引導機器,終於看到了FreeBSD的安裝界面了。呵呵,真是出奇的簡陋,甚至還比不上早期SCO UNIX的安裝界面。在安裝界面裡我選擇硬盤安裝,結果提示我找不到FreeBSD安裝文件,什麼原因?切換到Windows下,上網查了半天資料才知道 FreeBSD的安裝文件必需方在一個Dos主分區裡,而且存放文件的目錄必需是分區根目錄下的FREEBSD目錄。這安裝程序真是夠弱智的了,遠遠比不 上現在RedHat的安裝程序。一頓翻箱倒櫃後,終於找到了一塊4年前的2G硬盤。把FreeBSD安裝文件拷這塊硬盤上,並把它掛到IDE0上。這回 FreeBSD的安裝程序終於找到的安裝文件。 在網上看到FreeBSD的分區概念與Windows和Linux有所不同。下面這段話是我摘錄自 http://www.powerba.com/develop/os/unix/article/20010601003.htm 。 在FreeBSD中,分區的概念略有不同。FreeBSD將硬盤分成最多四個slice(片段),每一個slice上又可以分成最多8個 partition(分區)。也就是說FreeBSD將DOS/Windows裡的一個分區看作一個slice。在以後的敘述中,將采用FreeBSD的 概念,即slice和partition的硬盤分區術語。 我個人感覺slice的作用應該等同於windows的擴展分區。我打算在IDE1上的硬盤上安裝FreeBSD。由於沒有經驗,一切采取默認設置: a)在整塊硬盤上建立一個slice。 b)在slice建立FreeBSD分區,默認分區方式。 c)安裝Boot Manager到IDE1的MBR(ad1)。 d)安裝軟件種類選擇All,安裝Ports。呵呵,當時我根本就不知道Ports是什麼。反正,讓安裝就先裝上。 很快,安裝就結束了。這可不是FreeBSD有多快,而是安裝程序根本就沒裝多少Package。修改Bios,令IDE1為引導硬盤。於是,我就進入了FreeBSD。 3、Boot Manager 在進行其他配置之前,我想先解決多重引導問題。畢竟來回切換BIOS太麻煩了。當把Windows和Unix類操作系統安裝在一台機器上時,安裝各 種Boot Mananger的時候一定要小心。以前,在使用RedHat 6.2的時候就曾經吃過大虧。那時候,胡裡胡都地把lilo安裝在Windows所在硬盤的MBR上,結果Windows引導不起來了。後來,為了避免出 錯,我都是每種操作系統單獨使用一塊硬盤,並在各自的MBR上安裝Boot Manager。在以前,我甚至把Lilo安裝在軟盤上,反正啟動的時候只是讀一個sector,慢也慢不到哪裡。後來,我用Windows NT的OS Loader進行多重引導。 像以前在Linux下作的那樣,我進行了一下操作: a)dd if=/dev/ad1 of=bootsect.bsd bs=512 count=1 b)把bootsect.bsd拷貝到Windows的c:\下。 c)編輯boot.ini,添加一行c:\bootsect.bsd="FreeBSD 4.7"。 d)重新引導系統。 這時候,我看到了NT OS Loader的Boot選擇菜單。我想測試一下FreeBSD是否能夠正常引導,於是我選擇了FreeBSD 4.7菜單項。OK,顯示出來FreeBSD的Boot Manager菜單。我按鍵F1,想引導FreeBSD。這時候: ..........................災難發生了!!! ..........................別攔這我,我要跳樓!!! 發生什麼事情了?FreeBSD的Boot Manager居然又跳回了Windows OS Loader菜單了。怎麼回事?不清楚。我選擇了windows 2000,想進入Windows後,上網查查是怎麼回事。但.........Windows啟動不起來了。我重新啟動,再次嘗試進入Windows結果 還是一樣。暈。我趕緊跑到Linux下,用FDisk看看Windows的分區。..........發現,IDE0上的Windows分區變成了 IDE1上的FreeBSD分區了。也就是說IDE0上的硬盤的分區和IDE1上的硬盤的分區完全一樣了。暈斃。 怎麼會這樣呢?Windows完蛋了,上不了網,我只好跑到FreeBSD裡去查閱FreeBSD的HandBook。HandBook關於FreeBSD和NT OS Loader是這樣描述的: a)如果FreeBSD和Windows安裝在同一塊硬盤上,可以把/boot/boot1直接拷貝到windows下當做引導文件。 b)如果不是安裝在同一塊硬盤上,/boot/boot1不能引導FreeBSD。這時候就需要/boot/boot0。但是不能簡單的把boot0拷貝 到Windows下。boot0相當於FreeBSD的Boot Manager。該Manager每次運行的時候讀取分區表,通過分區的active標志判斷上次啟動的操作系統。當用Manager啟動某個操作系統 時,該Manager重寫分區表。 現在我知道了,剛才我執行的操作相當於(其實就是)把boot0拷貝到windows裡了。這是我見過的最缺德的一種Boot Manager了。你見過更缺德的麼? 至於說如何把Windows NT OS Loader和boot0聯合到一起使用,我就不知道了。因為,我再也沒敢嘗試。畢竟重新安裝Windows需要很長的時間。在安裝FreeBSD前,為 了安全起見,我把我現在正在做的項目Looking備份到我的數碼相機中。但我的硬盤中的大量的資料全都丟失了,特別是我們家寶寶從出生到現在的400多 張相片。真是心疼呀! 於是安裝FreeBSD變成了安裝Windows 2000。在安裝Windows 2000的過程中,我在想:如果Looking也沒了,我該怎麼辦?改行,去開小買店。 經過這次沉重的打擊後,我真想放棄FreeBSD。呵呵,但那不是我的風格。不僅要FreeBSD,而且一定要解決多重啟動問題。FreeBSD的Boot Mannager不敢使了,就換一個更好的Boot Mananger。我選擇了Grub。 cd /usr/ports/sysutils/grub make install clean OK,grub安裝好了。FreeBSD的Ports真是個好東西。 mkdir /boot/grub cp /usr/local/share/grub/i386-freebsd/* /boot/grub 為了安全起見,我制作了一個grub啟動軟盤。 dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1 dd if=/boot/stage2 of=/dev/fd0 bs=512 seek=1 用軟盤啟動進入grub交互界面。 進入FreeBSD: root (hd1,0,a) kernel /boot/loader 進入Windows 2000 rootnoverify (hd0,0) chainloader +1 統統OK,Grub真是個好東東。根據上面的Grub命令編輯/boot/grub/menu.lst。我要把GRUB安裝到IDE1上,也就是FreeBSD所在硬盤的MBR上。在GRUB中執行以下GRUB命令。 find /boot/grub/stage1 root (hd1,0,a) setup (hd1) OK,GRUB成功安裝在IDE1的MBR上。reboot。但是,在GRUB中FreeBSD和Window