FreeBSD 4.X 的話,需要兩個 image 檔: floppies/kernel.flp 及 floppies/mfsroot.flp。image 檔必須用工具像是 fdimage 或 dd(1) 來傳送到磁片上。 若是在 FreeBSD 5.3 (及之後版本)有重新規劃開機片架構,所以要抓的是 floppies/boot.flp 以及 floppies/kernX 檔案(目前 X 為 1 跟 2 兩個,加上 floppies/boot.flp,總共是 3 個檔案)。
若想自己下載 distributions 的話(比如以 MS-DOS® 檔案系統格式安裝), 以下是建議要抓的 distributions :
base/ (4.X 版本則為 bin/)
manpages/
compat*/
doc/
src/ssys.*
完整安裝步驟以及大部分的安裝問題,請參閱 FreeBSD 使用手冊的 安裝 FreeBSD 章節
一張 3.5 英吋(1.44MB) 的磁碟片是可以裝上 1474560 bytes 的資料 ,而開機片的 image 檔案大小實際上也是 1474560 bytes。
在製作開機片時,常見錯誤有:
使用 FTP 來下載檔案時, 未選擇 binary 傳輸模式來下載。
有些 FTP client端程式,是預設將傳輸模式設定為 ascii 模式,而且會修改接收到的檔案行尾字串為 client 端的作業系統方式 ,比如 newline(UNIX®格式) 到了作業系統為 Windows® 的 client 端會被改為 CR-LF(MS-DOS格式), 這會使得 image 檔本身遭到修改而無法正常使用。因此,如果下載的 image 檔案大小若與 FTP 主機上面的檔案『不一致』 的話,請重新使用 binary 傳輸模式下載即可。
FTP 指令: 進入 FTP 之後,打 binary 指令,即可切換到 binary 傳輸模式,然後再下載相關 image 檔案。
直接用 MS-DOS 的 copy 指令(或類似 的 GUI 程式、或是視窗上直接複製)來複製開機用的 image 檔到磁片上。
不可以用像是 copy 這類程式直接將 image 檔複製到磁片上,因為 image 檔本身包含了完整的磁軌資料,所以不能單純用複製方式, 而必須使用低階工具程式(像是 fdimage 或 rawrite), 以 “raw” 方式傳送到磁片上。(這部分可參閱 FreeBSD 使用手冊上的 安裝 FreeBSD)
安裝步驟的解說,請參閱 FreeBSD 使用手冊上的 安裝 FreeBSD 章節部分。
FreeBSD 4.X 之前的版本,硬體需求為 386 或更高級的 PC ,記憶體(RAM)至少要 5 MB 或更多,硬碟空間至少要 60 MB 或更多。 不過,FreeBSD 『系統安裝程式』的記憶體(RAM)需求為至少 16 MB。
從 FreeBSD 5.X 起,硬體需求為 486 或更高級的 PC ,記憶體(RAM)至少要 24 MB 或更多,硬碟空間至少要 150 MB 或更多。
FreeBSD 的所有版本都可以只用低階的 MDA 規格顯示卡,不過...要跑 X11R6 視窗的話, 還是至少用 VGA 或更好規格的顯示卡來用吧。
這部分也可參閱 µÚ 4 章。
安裝 FreeBSD 4.X 的記憶體需求為至少 5 MB ,而 安裝 FreeBSD 5.X (含之後版本) 則是至少要 8 MB 。
在 5.X 之前的所有 FreeBSD 版本,都可以只用 4 MB 的記憶體來 『運作』,不過,前面那節我們說過了『系統安裝程式』的話, 則無法只用 4 MB 的記憶體來執行。因此,你可以先在『系統安裝程式』這步驟之前, 先將記憶體加到 16 MB 以上,安裝完 FreeBSD 之後,就可以把多餘的記憶體拿下來。 或者是,先把要安裝的硬碟拿到有足夠記憶體的機器上先裝好, 然後再把硬碟放回原機器。
此外,只用 4 MB 的記憶體來運作的話,必須要自製 kernel(拿掉不必要的以及犧牲一些東西)。 也有人成功只用 2 MB 的記憶體以 FreeBSD 開機(雖然這樣的系統幾乎等於廢了..)
目前,還沒有辦法『只』自製專用的開機、安裝磁片。 必須透過自行打造完整作業系統的 release(發行),這樣裡面才會包括自己的開機、安裝磁片。
若想自行打造、發行(release)一個完整的作業系統,請參閱這篇 Release Engineering 文章。
先裝 Windows 再裝 FreeBSD。 那麼 FreeBSD 多重開機管理員(boot manager)就會出現選單讓你選擇要以 Windows 或 FreeBSD 來開機。不過,若你是先裝 FreeBSD 再裝 Windows 的話, 那麼 Windows 將會不問先宰,把 FreeBSD 的多重開機管理員(boot manager)蓋掉, 當你遇上這種情況時,請參考下一節說明。
可以用以下三種方式之一,來救回你的 FreeBSD 多重開機管理員(boot manager):
可以從各 FreeBSD FTP 站的 /pub/FreeBSD/tools/ 找到 bootinst.exe 及 boot.bin 這兩個檔, 以 binary 傳輸模式下載後,複製到磁片上,再用 DOS 開機片開機, 接著打類似下面的指令:
> bootinst.exe boot.bin
這樣,多重開機管理員(boot manager)就會重裝完畢了。
用 FreeBSD 開機片開機,然後選單那邊選 Custom installation(自訂安裝), 再選 Partition,接著選擇你要裝多重開機管理員(boot manager)的硬碟(通常是第一顆), 然後會出現 partition editor 的畫面,這時請不要做任何修改,直接按 W 儲存, 這時程式就會問是否要確定 Write ,最後出現 Boot Manager 選擇畫面, 記得要選 “Boot Manager” ,這樣就會重新將多重開機管理員(boot manager) 安裝到硬碟上。現在,就大功告成可以離開安裝選單並重開機了。
用 FreeBSD 開機片或是開機光碟開機,然後選單那邊選 “Fixit” ,或是以 Fixit 開機片或是光碟安裝的第二片(選擇 “live” filesystem 選項)然後就會進入 fixit shell 了,接著打下列指令:
Fixit# fdisk -B -b /boot/boot0 bootdevice
請將上面的 bootdevice 修改為您實際的開機硬碟代號 比如 ad0 (第一顆 IDE 硬碟) ,或是ad4 (first IDE disk on auxiliary controller), da0 (第一顆 SCSI 硬碟)等等。
(本問題主要是發生在 2000 ~ 2001 四月間時)這些 IBM 機器上的 BIOS 早期版本有個臭蟲(bug)會把 FreeBSD 分割區誤認為是 FAT 格式分割區,然後當 BIOS 試著偵測 FreeBSD 分割區時,就會當了。
根據 IBM 方面的說法[1] ,以下型號/BIOS版本的機種,已經都有修正:
型號 | BIOS 版本 |
---|---|
T20 | IYET49WW(含之後) |
T21 | KZET22WW(含之後) |
A20p | IVET62WW(含之後) |
A20m | IWET54WW(含之後) |
A21p | KYET27WW(含之後) |
A21m | KXET24WW(含之後) |
A21e | KUET30WW |
這些後期的 IBM BIOS 修訂版大多已經修正此一臭蟲。Jacques Vidrine 寫給 FreeBSD laptop computer 郵遞論壇 的 這封信 上面說明了若你新的 IBM 筆記型電腦無法順利以 FreeBSD 開機的解法步驟 (假設可以升級或降級 BIOS 版本的話)。
如果機器用的是較古早版本的 BIOS,而且不適合更新 BIOS 的話,那麼以下我們會介紹暫時解法, 教你如何修改 FreeBSD 分割區所使用的 ID ,並安裝相關修補程式。
First, you will need to restore the machine to a state where it can get through its self-test screen. Doing this requires powering up the machine without letting it find a FreeBSD partition on its primary disk. One way is to remove the hard disk and temporarily move it to an older ThinkPad (such as a ThinkPad 600) or a desktop PC with an appropriate conversion cable. Once it is there, you can delete the FreeBSD partition and move the hard disk back. The ThinkPad should now be in a bootable state again.
With the machine functional again, you can use the workaround procedure described here to get a working FreeBSD installation.
從 http://people.FreeBSD.org/~bmah/ThinkPad/ 來下載 boot1 及 boot2 這兩個檔。 把這兩個檔案放在磁片、光碟或其他硬碟上。
以一般安裝 FreeBSD 裝到 ThinkPad 上,記得 『不要用』 Dangerously Dedicated 模式。 此外,『不要』 在完成安裝之後就重開機。
進入 shell:(按 ALT+F4) 切換到“Emergency Holographic Shell” 或是選單上面選擇 “fixit” shell。
用 fdisk(8) 把 FreeBSD 分割區 ID 由 165 改為 166(OpenBSD所使用的ID)。
把剛剛提的 boot1 跟 boot2 這兩個檔案放到目前的硬碟檔案系統上。
以 disklabel(8) 把 boot1 及 boot2 存到你的 FreeBSD slice 上面。
# disklabel -B -b boot1 -s boot2 ad0sn
「n」 是你裝 FreeBSD 的 slice, 請將 「n」 改為符合你系統現況的 slice。
重開機,在 boot prompt 會看到有 OpenBSD 的選項, 選它,這樣就會以 FreeBSD 開機。
另外,至於如何讓 OpenBSD 及 FreeBSD 並存在同一台 IBM ThinkPad 上... 這個問題就交給各位看倌們去嘗試了 :p
(如果很堅持的話)也是可以,不過這想法顯然不太明智。:(
如果在一般較新的 IDE 硬碟上看到有壞軌,很有可能代表:這顆硬碟即將掛點了。 (因為目前所有較新的 IDE 硬碟,內部都有自動 remapping 壞軌的能力。 如果看到有壞軌,則表示它內部自動 remapping 功能失效,無法處理壞軌, 也就是說這顆硬碟已經是嚴重損壞程度了。)我們建議買顆新硬碟比較乾脆些唷。
如果是 SCSI 硬碟有壞軌的話,請試著參考這個 解法。
若看到一些怪異現象,像是開機片開機開到一半就當了,磁碟機完全沒任何動作、 或是不斷反覆重開機,請先檢查以下幾個線索:
請確定是否為全新、沒有磁軌錯誤的磁片? (最好使用新買的,而非雜誌、書本附贈的,甚至還放在床底下三年了...=_="")
請確定是否有用 binary(或image)傳輸模式來下載 image 檔? (不用覺得不好意思,即使是我們也曾意外以 ASCII 傳輸模式來下載 binary 檔案!)
若你是 Windows 95/98/ME/NT/2000/XP/2003 來下載、製作開機磁片的話, 請確定是否有在 DOS 模式使用 fdimage 或 rawrite 這兩個工具程式?剛講的這些作業系統, 都會影響程式去直接寫入硬體,像是製作開機片之類的動作。 有時候,在 GUI 介面上的 DOS shell 也可能會發生這樣的問題。
此外,直接透過 Netscape® 瀏覽器下載 image 檔的話,也有類似現象。 所以,如果可以的話,請改用其他可以調整設定的 FTP client端程式來進行下載。 (當然,要記得調 binary 傳輸模式)
通常問題在於光碟機設定錯誤。目前很多電腦的出廠標準配備都有光碟機,並且 會預先設定為 IDE 通道上面 Secondary 的 Slave 設備,而 Secondary 上面的 卻沒有 Master 設備。以 ATAPI 的規格而言,這是錯誤的設定,然而 Windows 的作法 是不理會這些規格上的設定問題,而且開機時 BIOS 偵測也會略過這點。 這也就是為什麼 BIOS 可以看到光碟,並且可用光碟開機,但 FreeBSD 無法正常抓到光碟以順利進行安裝。
解法:重新設定系統,讓光碟成為它所連接那條 IDE 通道的 Master, 或者只有一條 IDE 通道的話,那就讓光碟機成為 Slave ,當然該 IDE 通道上至少要有 Master 設備。
可以,用一條普通的 Laplink 線就可以囉。若有這方面需求的話,請參閱 FreeBSD 使用手冊中的 PLIP 章節 的細部設定
注: 這裡的『硬碟設定參數(geometry)』,指的是硬碟上的 「cylinders」、「heads」、「sectors/track」 這三個設定參數。 接下來的文章內,為了方便介紹,將簡稱為『C/H/S』。 這些設定參數是讓 PC 上的 BIOS 能順利地正常判別硬碟, 與硬碟本身讀寫的重要因素。
對剛接手的系統管理者新手而言,這些設定參數常造成一些困擾。 首先,SCSI 硬碟上的 physical geometry 跟 FreeBSD 上的 disk blocks 是完全無關的。事實上, 就硬碟上磁區密度的變化而言,並沒有所謂『physical geometry』這種東西。 硬碟製造商所說的『physical geometry』通常是指: 硬碟上所使用最小空間來存放資料的設定參數(geometry)。 以 IDE 硬碟而言,FreeBSD 用以存取硬碟設定的方式是 C/H/S , 然而,目前市面上的硬碟早就在內部運作時,就自動轉換為 block 方式 了。
真正關鍵的地方,其實是在於 『logical geometry』— 這是 BIOS 偵測硬碟時所得到的設定,並且用來決定硬碟存取方式。 由於 FreeBSD 是採用 BIOS 的偵測設定值,所以如何來讓 BIOS 偵測到的設定值保持正確, 是十分重要。尤其是同一顆硬碟上有多個作業系統的情況, 它們都必須採用一致的硬碟設定參數(geometry), 否則就會有開機進不去作業系統的嚴重問題了。
以 SCSI 硬碟而言,硬碟設定參數(geometry)是由 SCSI 卡上的 extended translation(通常指的是有標示 “support >1GB”(支援 1GB 以上容量,或類似名詞) 支援與否來作決定。 如果不支援,那麼就會採用 N cylinders、 64 heads、 32 sectors/track 作為硬碟設定參數(geometry),這裡講的『N』 是指硬碟的容量(單位:MB)。舉個例子來說,一顆 2GB 硬碟應該是 2048 cylinders、64 heads、32 sectors/track。
如果該 SCSI 有支援使用 extended translation 的話, (通常這個方式在 MS-DOS 使用上有某些限制),並且硬碟容量大於 1GB, 那麼硬碟設定參數(geometry)就會使用像是: M cylinders、255 heads、每磁軌 63 sectors(請注意:不是『64』哦), 這裡講的『M』是指硬碟的容量(單位:MB)再除以 7.844238 所得出的數值喔!所以,這個例子的話,同樣是 2GB 硬碟應該是 261 cylinders、255 heads、每磁軌 63 sectors。
若對上面講的不瞭解,或是 FreeBSD 在安裝時所偵測到的硬碟設定參數(geometry) 有問題的話,最簡單的解法通常是在硬碟上建立一塊小小的 DOS 分割區(partition)。 這樣一來,就可以偵測到正確的硬碟設定參數了,而且, 如果不想繼續留著那小塊 DOS 分割區的話,可以隨時用 partition editor 來拿掉它。或者把它留著當作網路卡驅動程式使用,或隨你高興怎麼用它。
此外呢,有個免費好用的工具程式叫做『pfdisk.exe』, 這個程式放在各 FreeBSD FTP 站或光碟的 tools 目錄下, 它可以用來找出硬碟上其他作業系統所使用的硬碟設定參數, 然後就可以在 partition editor 內輸入剛剛找到的那些設定參數就可以了。
有,你必須確認你的 root 分割區是在 1024 cylinders 之內,讓 BIOS 可以從其中啟動核心。(注意:這是 PC 的 BIOS 功能限制,而不 是 FreeBSD 的)
以 SCSI 硬碟而言,通常是把 root (/) 分割區放到硬碟最前面的 1024MB (如果有支援 extended translation 的話, 那麼是最前面的 4096MB — 這點請參考上一小節)。而 IDE 硬碟的話,相對應的則是 504MB。
FreeBSD 可以用 Ontrack Disk Manager 並且運作正常, 至於其他的 disk manager 則不在正式支援之列。
若整顆硬碟只裝 FreeBSD ,那麼就不用再裝 disk manager 了。 只要把硬碟設定為 BIOS 所能抓到的最大空間,那麼 FreeBSD 就可算出實際上可使用的空間了。 如果,正在使用的是古早 MFM 控制卡的舊式硬碟, 那麼就需要在 FreeBSD內作 cylinders 相關設定了。
如果想在磁碟上使用 FreeBSD 和另外的作業系統,也可以不裝 disk manager, 只要確定 FreeBSD 的啟動分割區跟其他作業系統的 slice 都位於開始的 1024 cylinders 內就可以了。如果你相當地高明的話,一個 20MB 的啟動分割區應該就夠用了。
通常原因出在 FreeBSD 及 DOS 或其他作業系統在硬碟的 設定參數(geometry)上的規劃有相衝。解法是重裝,但是請照 上述的相關章節步驟來做。
這個症狀是本文上面所提的另外一個問題了,原因在於 BIOS 上跟 FreeBSD 上面兩邊的硬碟的 設定參數(geometry) 並不一致。 若你硬碟或 BIOS 支援 cylinder translation (通常會被標為 “support >1GB(支援 1 GB以上容量)”的話, 試試看更改相關設定,並重裝 FreeBSD。
一般來說,這是用不著的。然而,我們強烈建議您的 source 至少要裝 base(包含了本文中所提的一些檔案)、以及 sys (kernel 的 source 檔)。 雖然,作業系統本身運是不需要裝 source 檔,但是 config(8) 這個 kernel設定程式則需要 src 。 若沒裝 kernel 的 source 檔,仍然可以用其他地方透過 NFS 掛載的唯讀檔案系統, 來編譯程式。 但由於 kernel-source 本身的限制,我們建議不要直接 mount 在 /usr/src, 最好是用 symbolic link(參閱 ln(1)) 將掛載的路徑,設定連結到/usr/src 目錄。
在機器上直接裝有 source 並且瞭解相關編譯過程,這樣子日後升級 FreeBSD 會來得方便多。
若忘了裝相關 source 的話,可以事後用 sysinstalll (FreeBSD 5.2 之前版本則是 /stand/sysinstall) 來補裝,選單:Configure → Distributions → src。
在很久很久以前,原本重新 build kernel 在 FreeBSD 安裝過程中,
是絕對必需的步驟之一。但目前早就不用這麼麻煩了, 目前主要常見的版本都使用更友善的
kernel 設定指令。 FreeBSD 4.X(含之前版本),在 FreeBSD 啟動提示號(boot:)時,使用
"-c"
flag 就會進入設定畫面,來對 kernel 作常見的 ISA
卡細節設定。 而 FreeBSD 5.X(含之後版本)的話,則是以更具彈性的 "hints"
設定方式。
如果想更節省 RAM 的使用、縮短開機流程,那麼建議:新的 kernel 設定檔只要包含你需要的驅動程式, 然後重新編譯、安裝 kernel 並重開機。然而呢,這點對大多數的系統來說, 這不一定是必要的。
FreeBSD 預設的密碼編碼方式是採 MD5。 就密碼編碼方式而言,MD5 方式一般被視為比傳統 UNIX 的 DES 方式較為安全。 然而,若有需要在使用舊環境(較不安全的密碼編碼方式的),DES 密碼編碼方式一樣可以使用。 (若使用 sysinstall 時有選擇 “crypto” 套件,或是從 source 內編譯安裝) 有裝 crypto 的話,crypto libraries 也支援更安全的 Blowfish 編碼方式。
密碼編碼的方式是由 /etc/login.conf 內的 “passwd_format” 欄位來決定的。該欄設定值,(若有裝 crypto 的話)可以是 “des” 或 “blf” 或是原本的 “md5”。 詳情請參閱 login.conf(5) 說明。
若機器上有裝 IDE 介面的 Iomega Zip® 或是 Jaz® 的話, 因為這些設備可能跟開機片有相衝,請先拿掉這些設備再重試。 當整個作業系統裝好後,就可以把這些設備接回去使用了。 希望這點在日後 release 的 FreeBSD 可以獲得徹底解決。
這個錯誤是因為啟動磁區跟 kernel 兩者對磁碟裝置的認知不相同。 通常這問題會發生在有兩顆 IDE 硬碟的系統,比如:硬碟 Jumper 設定為 Master、 或是兩條 IDE 排線各只連接一顆硬碟,但是裝 FreeBSD 那顆開機硬碟, 卻接在 Secondary IDE 排線上。 如此一來,在開機時當 kernel 指定第二個 IDE 控制器的第一個磁碟機 ad2, 啟動磁區卻認為系統是裝在 ad0(BIOS偵測的第二顆硬碟)! 偵測完裝置後,kernel 試著把啟動磁區所認為的開機硬碟(ad0) mount 起來,事實上應該是 ad2 才對,所以就會出現上面的錯誤訊息了。
解法如下,請選擇其中一種方式就好:
重開機並在出現『Booting kernel in 10 seconds; hit [Enter] to interrupt』 提示的時候,按下 Enter鍵。 這樣子就會進入 boot loader 畫面:
請輸入 set root_disk_unit="disk_number" 這裡的『disk_number』請依據情況換成相關代號: 若 FreeBSD 硬碟是設定裝在 Primary IDE 接線的 Master,就設為 0 ; 若是 Primary IDE 接線的 Slave,就設為 1; 若是 Secondary IDE 接線的 Master,就設為 2; 若是 Secondary IDE 接線的 Slave,就設為 3。
接著請再輸入 boot,然後系統應該就可以正常開機了。
若要每次開機都自動設定,而不必每次都打一次,那麼就在 /boot/loader.conf.local 檔案內加上 root_disk_unit="disk_number" 這行 (當然,『disk_number』要改成相關代號)
把 FreeBSD 硬碟改接到 Primary IDE 接線上,如此一來就可順利使用。
一般 i386™ 機器上最多可支援到 4 GB(gigabytes)。 而自 FreeBSD 4.9 及 5.1 可以開始使用 pae(4) 來支援更多的記憶體。 有關這點,需要在 kernel 設定檔內加入下列內容並重新編譯 kernel,才能使用 PAE。
options PAE
FreeBSD 在 pc98 機器上最多則只支援 4 GB ,而且不能使用 PAE。 在 Alpha 機器上,記憶體限制方面要視所使用的型號支援程度而定,這點請參閱 所使用的 Alpha 硬體規格表。至於其他架構的 FreeBSD 理論上最多可使用的記憶體,有較多的限制。
就檔案系統方面,理論上的限制是最多到 8TB(2G blocks), 或是使用內定 8K block 大小時,限制是 16TB。 實際上,目前軟體使用上限制只能用到 1 TB, 然而如果是有另行改造過檔案系統,那麼達到 4TB 的目標是可行的 (也有人成功過)。
單一檔案的大小方面,假如 block 以 4K 作規劃的話, 則最大是趨近 1G blocks(4TB)。
表格 3-1. 檔案大小的最大限制
檔案系統 block 大小 | works | should work |
---|---|---|
4K | 4T-1 | >4T |
8K | >32G | 32T-1 |
16K | >128G | 32T-1 |
32K | >512G | 64T-1 |
64K | >2048G | 128T-1 |
When the fs block size is 4K, triple indirect blocks work and everything should be limited by the maximum fs block number that can be represented using triple indirect blocks (approx. 1K^3 + 1K^2 + 1K), but everything is limited by a (wrong) limit of 1G-1 on fs block numbers. The limit on fs block numbers should be 2G-1. There are some bugs for fs block numbers near 2G-1, but such block numbers are unreachable when the fs block size is 4K.
block 大小如果是 8K 或更大,檔案系統 block 數目會被限制在 2G-1 ,但實際上應該說限制是 1G-1 才對,因為採用 2G-1 block 的檔案系統會導致一些問題。
原因出在你的 world 以及 kernel 並不同步,舉例:kernel 用 4.11, 而 world 卻是 4.8,這樣是會有問題的。 請再次確認,是否有以 make buildworld 及 make buildkernel 來正常更新 kernel。
在啟動 loader 之前,會看到 "|" 這個符號在轉動,這時可以按任何鍵中斷, 然後再指定要載入哪個 kernel 來開機。
A “security profile” is a set of configuration options that attempts to achieve the desired ratio of security to convenience by enabling and disabling certain programs and other settings. For full details, see the Security Profile section of the Handbook's post-install chapter.
[1] |
一封來自 Keith Frechette 的 e-mail |
本文及其他文件,可由此下載:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢 <doc@FreeBSD.org>。