欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

第四章 編譯核心

4.1 為什么要重新編譯核心

核心 (kernel) 顧名思義是整個(gè)操作系統(tǒng)的核心,系統(tǒng)一開(kāi)機(jī)即加載核心,它控制了整個(gè)系統(tǒng)的運(yùn)作,包含和硬件溝通、系統(tǒng)資源配置、內(nèi)存管理、檔案系統(tǒng)管理等等。傳統(tǒng)上,我們將所有支持的硬件、檔案系統(tǒng)等全部放到核心中,每次有新增的硬件或功能都必須重新編譯核心,并重新啟動(dòng)計(jì)算機(jī)。但隨著支持的功能越來(lái)越多,系統(tǒng)核心變得越來(lái)越肥大,而重新開(kāi)機(jī)以加載新加入的功能也不符合現(xiàn)代操作系統(tǒng)的需求。

目前 FreeBSD 許多可以獨(dú)立出來(lái)的功能都能做成所謂的核心模塊 (kernel module),當(dāng)系統(tǒng)有需要使用該模塊時(shí),才將它加載核心中。這么做的好處就是可以讓我們更快加入硬件驅(qū)動(dòng)程序,更方便地加入我們想要的功能。所有可以獨(dú)立出來(lái)的模塊都可以編譯放入核心中,然而,使用動(dòng)態(tài)加載的方式和直接編入核心中各有優(yōu)缺,直接編入核心中可以減少加載的時(shí)間,而動(dòng)態(tài)加載可以讓我們?cè)诓恍枰玫皆摴δ軙r(shí)立即從系統(tǒng)中移除其所占用的資源。以 DVD 所使用的檔案系統(tǒng)格式為例,我們平??赡芎苌儆玫?DVD,所以并未將它加入核心中。但當(dāng)需要時(shí),我們可以 kldload 這支程序來(lái)動(dòng)態(tài)加載該模塊,使用完畢后,也可以立即使用 kldunload 將它從核心中移除,在使用上方便許多。

我們剛安裝完 FreeBSD 時(shí),所使用的核心是一般性的核心,稱之為 GENERIC kernel。為了要支持常見(jiàn)的軟硬件,因此 GENERIC 核心中可能包含了許多我們用不到的驅(qū)動(dòng)程序,也可能不支持一些特殊的硬件。例如,單單網(wǎng)絡(luò)卡驅(qū)動(dòng)程序就有數(shù)十種被加入 GERERIC 核心中,其實(shí)我們只需要使用其中一種。在硬件方面,核心中包含了太多的東西不僅會(huì)占去內(nèi)存的空間,不同程序間也有可能造成沖突。

在軟件方面,如果要啟動(dòng) FreeBSD 的防火墻功能,或是使用 ADSL 聯(lián)機(jī) (4.4 以前的版本),都需要重新將支持這些功能的參數(shù)加到核心中。另外,如果要改變系統(tǒng)的效率,你必須修改核心中的參數(shù),例如增加同時(shí)上線的人數(shù)、或最大同時(shí)開(kāi)啟的檔案數(shù)等。當(dāng)然,有的功能在 FreeBSD 中可以經(jīng)由 sysctl 這個(gè)指令來(lái)修改,而毋需修改核心,但大部份的功能是一定要修改核心的。過(guò)于肥大的核心,開(kāi)機(jī)需要的時(shí)間較長(zhǎng),所以我們可以將不必要的設(shè)定移除,以加速開(kāi)機(jī)速度。

除此之外,我們常看到 FreeBSD 總部發(fā)布安全性漏洞修補(bǔ)程序,在完成原始碼的修補(bǔ)之后,大多數(shù)的修補(bǔ)都必須重新編譯核心。所以我們還是要來(lái)了解一下如何為自己量身訂做一個(gè)新的核心。

請(qǐng)放心,編譯核心并不難,其實(shí)只有幾個(gè)步驟,只要依下列的方法去做,相信您對(duì)于系統(tǒng)核心將有更深入的了解。

4.2 修改核心

首先,您必須確認(rèn)在安裝 FreeBSD 時(shí),有將所有 FreeBSD 的原始碼 src 裝進(jìn)來(lái)。請(qǐng)先檢查 /usr/src/sys/i386/conf/ 目錄存在,您可以在這個(gè)目錄中看到一個(gè)名為 GENERIC 的文字文件,GENERIC 就是安裝時(shí)用的一般核心。在 FreeBSD 4.x 的版本中,這個(gè)目錄下還有一個(gè) LINT 的檔案,這個(gè)檔案中包含了所有可用的核心參數(shù),您可以參考這個(gè)檔以取出所需的設(shè)定加入自己的核心中。如果您使用的是 FreeBSD 5.x,請(qǐng)參考 NOTES 這個(gè)檔。
如果系統(tǒng)中沒(méi)有 /usr/src/sys 這個(gè)目錄,表示您在安裝時(shí)并未安裝 FreeBSD 的原始碼,您可以使用 /stand/sysinstall 這個(gè)指令來(lái)執(zhí)行安裝的選單工具,并安裝原始碼。執(zhí)行了 sysinstall 后,請(qǐng)選擇 [Configure] -> [Distribution] -> [src] -> [sys],即可安裝核心的原始碼。除了使用 sysinstall 外,您也可以先將本書(shū)所附第一張光盤放入光驅(qū)中,并使用下列指令來(lái)安裝:

# mount /cdrom
# mkdir -p /usr/src/sys
# ln -s /usr/src/sys /sys
# cat /cdrom/src/ssys.[a-d]* | tar -xzvf -

有了核心的原始碼后,我們就可以開(kāi)始進(jìn)行修改。首先,我們要做的就是將 GENERIC 復(fù)制一份,并修改復(fù)制的那一份。

# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL

上面那一行指令就是把 GENERIC 復(fù)制一份叫做 MYKERNEL,新的 KERNEL 要叫什么名字你可以自己取一個(gè)比較有意義的名字。建議您不要將自己所修改的核心設(shè)定放在 /usr/src/sys/i386/conf 目錄下,有時(shí)候我們可能會(huì)因?yàn)橛脖P空間不足而刪除 /usr/src 這個(gè)目錄,或者日后進(jìn)行升級(jí)時(shí)忘了備份我們編輯過(guò)的核心設(shè)定檔。所以建議您將 GENERIC 復(fù)制到其它目錄下,再建立一個(gè) link 到 /usr/src/sys/i386/conf,如此一來(lái),我們可以更方便的備份及保存設(shè)定。例如,我們可以將它復(fù)制到 /root 目錄下:

# cd /usr/src/sys/i386/conf
# cp GENERIC /root/MYKERNEL 
# ln -s /root/MYKERNEL

接著就要來(lái)修改 MYKERNEL 了,請(qǐng)使用文字處理軟件打開(kāi) MYKERNEL 后,再依文件中的說(shuō)明來(lái)修改,把不必要的移除。必須要注意的是,核心中有的參數(shù)是互相依賴的,也就是說(shuō)某些參數(shù)的存在一定要有某一行的支持?,F(xiàn)在使用指令 ee 來(lái)修改剛才復(fù)制的核心:

# ee MYKERNEL

在核心中,如果在一行的開(kāi)頭有"#"表示該行為批注,以下我們針對(duì) GENERIC 核心中每一個(gè)參數(shù)的說(shuō)明。

4.2.1 基本的設(shè)定

machine	i386

這一行是必備的,代表的是使用 i386 的計(jì)算器架構(gòu) (architecture),也就是 IBM 兼容個(gè)人計(jì)算機(jī)。FreeBSD 支持的硬件架構(gòu)包含了 i386、pc98、alpha、sparc64 等。

cpu	I386_CPU
cpu	I486_CPU
cpu	I586_CPU
cpu	I686_CPU

上面這四行指的是 CPU 的類型,最近的 CPU 都是 I686_CPU。有些 CPU 如 Cyrix 233Hz CPU 或 Pentume Pro 也都是 I686。我們可以在開(kāi)機(jī)后使用 dmesg 指令或參考 /var/run/dmesg.boot 來(lái)看 CPU 類型,并移除不必要的類型。

ident	GENERIC

這個(gè)可以說(shuō)是核心的名字,我們?cè)陂_(kāi)機(jī)時(shí)會(huì)看到這個(gè)字符串,建議將它修改成和您核心設(shè)定檔同名,例如,MYKERNEL 或 WEBSERVER 等。

maxusers	0

這是用來(lái)控制系統(tǒng)內(nèi)部表格(internal system tables)大小的參數(shù),它的值大約是您期望系統(tǒng)同一時(shí)間會(huì)上線使用的使用者數(shù)量。如果您使用的是 FreeBSD 4.5 以上的版本,建議您將它設(shè)定 0。如果設(shè)成非 0 的數(shù)字,這個(gè)值一定要設(shè)定大于四,maxusers 的值決定了處理程序所容許的最大值,20+16*maxusers 就是你將得到的所容許處理程序。

系統(tǒng)一開(kāi)機(jī)就必須要有 18 個(gè)處理程序 (process),即便是簡(jiǎn)單的執(zhí)行指令 man 又會(huì)產(chǎn)生 9 個(gè) process,所以將這個(gè)值設(shè)為 64 應(yīng)該是一個(gè)合理的數(shù)目。如果你的系統(tǒng)會(huì)出現(xiàn) proc table full 的訊息的話,可以就把它設(shè)大一點(diǎn),例如 128。不過(guò)現(xiàn)在的 FreeBSD 很聰明,您只要將它設(shè)為 0,F(xiàn)reeBSD 會(huì)動(dòng)態(tài)分配合理的值。

值得注意的是 maxusers 的值和同時(shí)可以上線的最大使用者人數(shù)并無(wú)關(guān)系,它只是決定你的 kernel 中一些數(shù)據(jù)結(jié)構(gòu)的大小,真正影響上線人數(shù)的是 pseudo-device pty。

4.2.2 一般選項(xiàng)

#makeoptions	DEBUG=-g

這個(gè)參數(shù)是用來(lái)將核心編輯成除錯(cuò)模式。加了這個(gè)參數(shù)之后,核心會(huì)包含一些除錯(cuò)用的信息,除非您需要做核心開(kāi)發(fā)或協(xié)助測(cè)試核心程序,否則不需要加入這個(gè)參數(shù)。除錯(cuò)模式的核心會(huì)比一般核心龐大許多,而且也會(huì)影響系統(tǒng)效能。

options	MATH_EMULATE

這個(gè)參數(shù)讓 kernel 用軟件的方式仿真浮點(diǎn)運(yùn)算,如果你的 CPU 不含浮點(diǎn)運(yùn)算器,你就必須打開(kāi)此參數(shù)。486-DX 以上的 CPU 可以不需要這一行。不過(guò) FreeBSD 所提供的一般浮點(diǎn)仿真器并不是十分精準(zhǔn),如果你沒(méi)有浮點(diǎn)運(yùn)算器卻又需要最好的準(zhǔn)確度,建議你把這一行改成 GPL_MATH_EMULATE 來(lái)使用 GNU 浮點(diǎn)模擬。因?yàn)?GNU 版權(quán)的關(guān)系,因此 FreeBSD 不以它來(lái)當(dāng)作內(nèi)定的仿真器。由于目前我們所使用的 CPU 都支持浮點(diǎn)運(yùn)算,所以在 FreeBSD 5.x GENERAL kernel 預(yù)設(shè)并未加入這個(gè)參數(shù)。

options	INET		#InterNETworking
options	INET6		#IPv6 communications protocols

上述這二行是因特網(wǎng)溝通協(xié)議,就算您不打算連上網(wǎng)絡(luò),至少必需保留第一個(gè) INET 的設(shè)定,因?yàn)榇蠖鄶?shù)的程序都會(huì)要求使用 lookback 網(wǎng)絡(luò) (就是自己的機(jī)器和自己的機(jī)器溝通)。INET6 指的是 IPv6 協(xié)議,如果您要使用 IPv6 則必需加入該參數(shù)。

4.2.3 各種檔案系統(tǒng)的支持

options	FFS		#Berkeley Fast Filesystem
options	FFS_ROOT		#FFS usable as root device [請(qǐng)勿刪除]

這是最基本的檔案系統(tǒng)支持,如果你是從硬盤開(kāi)機(jī)的,你一定需要它。FreeBSD 5.x 已經(jīng)不再需要 FFS_ROOT 這個(gè)選項(xiàng)了,所以如果您使用 5.x 并不會(huì)看到這一行。

options	SOFTUPDATES	#Enable FFS soft updates support

使用 soft update 可以加速對(duì)硬盤的在取速度,我們必須先再核心中加入對(duì)于 soft update 的支持,再針對(duì)不同的檔案分割區(qū)啟動(dòng)此功能。您可以打指令 mount 來(lái)查看各個(gè)分割區(qū)是否已啟動(dòng) soft update,如果沒(méi)有,tunefs 這個(gè)指令來(lái)啟動(dòng)它。我們?cè)诎惭b FreeBSD 時(shí),預(yù)設(shè)除了根目錄的分割區(qū)外,其它的磁盤分割區(qū)都會(huì)將此功能打開(kāi)。

options	UFS_ACL		#Support for access control lists

FreeBSD 5.x 才加入這個(gè)選項(xiàng),它是一種權(quán)限控制的功能,預(yù)設(shè)是開(kāi)啟的狀態(tài)。一旦這個(gè)選項(xiàng)打開(kāi)始,并開(kāi)始使用檔案系統(tǒng)之后,最好不要將它關(guān)閉,以避免奇怪的問(wèn)題產(chǎn)生。

options	UFS_DIRHASH	#Improve performance on big directories

這個(gè)選項(xiàng)可以加快 FreeBSD 對(duì)于大型目錄的處理速度,但將需要很大的內(nèi)存空間。如果此核心是供大型服務(wù)器使用,加入這個(gè)參數(shù)可以有比較好的效能。

4.2.3 各種檔案系統(tǒng)的支持

options	MFS		#Memory Filesystem
options	MD_ROOT		#MD is a potential root device

內(nèi)存映對(duì)檔案系統(tǒng) (Memory-mapped Filesystem)。基本上它容許我們將一塊內(nèi)存空間當(dāng)做檔案系統(tǒng)來(lái)使用,以達(dá)到快速存取暫存盤的功能。例如,我們可以分割出一個(gè) MFS 供 /tmp 使用,因?yàn)樵S多程序會(huì)利用 /tmp 建立暫時(shí)檔案,而 MFS 是將檔案系統(tǒng)掛在內(nèi)存中,對(duì)于數(shù)據(jù)的存取會(huì)快很多。不過(guò) FreeBSD 5.x 已經(jīng)不再使用 MFS 而改由 md-backed 檔案系統(tǒng)所取代。

options	NFSCLIENT		#Network Filesystem Client
options	NFSSERVER		#Network Filesystem Server
options	NFS		#Network Filesystem
options	NFS_ROOT		#NFS usable as /, requires NFSCLIENT

這些選項(xiàng)是傳統(tǒng)的 UNIX 都支持的網(wǎng)絡(luò)檔案系統(tǒng),在 FreeBSD 4.x 中,只有 NFS 及 NFS_ROOT 這二個(gè)選項(xiàng)。而 FreeBSD 5.x 將 NFS 分成 NFS 客戶端及服務(wù)器二個(gè)選項(xiàng)。傳統(tǒng)的 NFS 是使用 UDP 的方式傳輸。但 FreeBSD 的 NFS 支持 TCP 模式,如果您不打算使用 TCP 模式,您可以將這些選項(xiàng)移除。

options	MSDOSFS		#MSDOS Filesystem

支持 MS-DOS 檔案系統(tǒng)。除非你每次開(kāi)機(jī)都要使用 MS-DOS 檔案系統(tǒng),否則您可以將它移除,系統(tǒng)會(huì)在你使用到 MSDOS 檔案系統(tǒng)時(shí)自動(dòng)加載核心模塊。除此之外,你也可以使用 mtools來(lái)存取 DOS 的軟盤,這并不需要有 MSDOS 檔案系統(tǒng)的支持。

options	CD9660		#ISO 9660 Filesystem
options	CD9660_ROOT	#CD-ROM usable as root, CD9660 required

ISO 9660 是 CD-ROM 的檔案系統(tǒng),如果你只是偶爾用到 CD-ROM,你可以此功能移除,同樣的,系統(tǒng)會(huì)在使用到 CD-ROM 時(shí)自動(dòng)加載核心模塊。此外,當(dāng)我們使用 CD-ROM 聽(tīng)音樂(lè)時(shí)并不需要 CD9660 的支持。CD9660_ROOT 只有當(dāng)我們要拿 ISO 9660 檔案系統(tǒng)做根目錄時(shí)才需要,F(xiàn)reeBSD 5.x 預(yù)設(shè)已將它移除。

options	PROCFS		#Process filesystem

處理程序檔案系統(tǒng),它是將一些系統(tǒng)信息偽裝成檔案系統(tǒng)并掛入 /proc 目錄下,讓一些系統(tǒng)監(jiān)控軟件 (如 ps 這個(gè)指令) 可以從中得到執(zhí)行中的處理程序的信息。在 FreeBSD 5.0 以后的版本預(yù)設(shè)不再使用 /proc,大多數(shù)的監(jiān)控程序也都改成不必使用 /proc 來(lái)得到系統(tǒng)信息。如果您使用的是 FreeBSD 5.x,要使用 PROCFS 還必須加入下列這一個(gè)參數(shù):

options	PSEUDOFS		#Pseudo-filesystem framework

這個(gè)參數(shù)只出現(xiàn)在 FreeBSD 5.x,F(xiàn)reeBSD 4.x 并無(wú)此參數(shù)。

4.2.4 軟硬件兼容性設(shè)定

options	COMPAT_43		#Compatible with BSD 4.3 [KEEP THIS!]

這是為了要和 4.3 BSD 兼容所使用的參數(shù),請(qǐng)不要將它移除,否則有些應(yīng)用程序可能會(huì)出現(xiàn)奇怪的影響。

options	COMPAT_FREEBSD4	#Compatible with FreeBSD4

FreeBSD 5.x 做了許多修改,為了兼容于 FreeBSD 4.x 的系統(tǒng)呼叫 (system call),建議您保參這個(gè)設(shè)定。

options	SCSI_DELAY=15000	#Delay (in ms) before probing SCSI

這個(gè)選項(xiàng)控制了開(kāi)機(jī)時(shí)尋找 SCSI 設(shè)備時(shí)要延遲多久 (MILLISECONDS),預(yù)設(shè)是 15 秒。有的 SCSI 需要一段時(shí)間來(lái)進(jìn)行被始化的動(dòng)作,當(dāng)使用 IDE 的硬盤開(kāi)機(jī)時(shí),我們可以忽略這一行。如果您是以 SCSI 硬盤開(kāi)機(jī),您可以把這一行的數(shù)字調(diào)小一點(diǎn)以加快開(kāi)機(jī)的速度。當(dāng)然,如果因此抓不到硬盤,您就必須再把這個(gè)值調(diào)高一點(diǎn)。

options	UCONSOLE		#Allow users to grab the console

允許使用者抓取console 所印出的訊息。這個(gè)選項(xiàng)對(duì)于 X window 使用者尤其有用。例如,我們可以使用 xterm -C 來(lái)模擬 console,以得到 talk、write (一種在 UNIX 網(wǎng)絡(luò)聊天的功能) 所傳來(lái)的訊息,或是任何從系統(tǒng)發(fā)出的訊息。不過(guò) FreeBSD 5.x 已不再需要這個(gè)選項(xiàng)。

options	USERCONFIG		#boot -c editor
options VISUAL_USERCONFIG	#visual boot -c editor

這個(gè)選項(xiàng)可以讓我們?cè)陂_(kāi)機(jī)時(shí)編輯開(kāi)機(jī)選項(xiàng)。FreeBSD 5.x 已不再支持這二個(gè)選項(xiàng),而改用 device.hints,請(qǐng) man device.hints。

options	KTRACE		#ktrace(1) support

允許使用核心除錯(cuò)追蹤,通常只有對(duì)于核心開(kāi)發(fā)者比較有用。

options	SYSVSHM		#SYSV-style shared memory

這個(gè)參數(shù)提供 System V 共享內(nèi)存的支持。最常使用 SYSVSHM 的是 X Windows 的 XSHM 功能,有些圖形化的程序用使用它來(lái)提高執(zhí)行速度。如果你使用 X Windows 或是 BBS,你一定要打開(kāi)此參數(shù)。

options	SYSVMSG		#SYSV-style message queues

提供 System V messages 的支持,雖然不常用到,但是它只占一點(diǎn)點(diǎn) kernel 的空間。如果你架 bbs 站,這是一定要的啦。

options	SYSVSEM		#SYSV-style semaphores

提供 System V semaphores 的支持,雖然不常用到,但是它只占一點(diǎn)點(diǎn) kernel 的空間。您可以使用 ipcs 這個(gè)指令來(lái)查看是否有應(yīng)用程序使用 System V 的這些選項(xiàng),例如 Postsgre SQL 就必須用到。

options	P1003_1B		#Posix P1003_1B real-time extensions
options	_KPOSIX_PRIORITY_SCHEDULING

Real-time extensions added in the 1993 POSIX。有些程序 (如 star office) 會(huì)用到它。FreeBSD 5.x 不再需要 P1003_1B 這個(gè)選項(xiàng)。

options	ICMP_BANDLIM	#Rate limit bad replies

這個(gè)選項(xiàng)限制 ICMP 封包錯(cuò)誤回應(yīng)所使用的頻寬,它可以降低我們被阻斷式攻擊 (denial of service packet) 的危險(xiǎn)。如果您使用 FreeBSD 4.x,建議您保留該選項(xiàng)。FreeBSD 5.x 預(yù)設(shè)已將此功能打開(kāi),所以這個(gè)選項(xiàng)在 5.x 已經(jīng)不需要了。

# To make an SMP kernel, the next two are needed
options	SMP		# Symmetric MultiProcessor Kernel
device	apic		# I/O APIC

這二個(gè)選項(xiàng)可以使用多顆 CPU,F(xiàn)reeBSD 5.x 對(duì)于多顆 CPU 的支持有更好的效率,如果您只使用單顆 CPU,可以將此選項(xiàng)關(guān)閉。

4.2.5 總線及軟盤機(jī)

device	isa
device	eisa
device	pci

所有 FreeBSD 支持的硬件一定有上述其中之一的總線,isa 總線在現(xiàn)在的 i386 機(jī)器上已經(jīng)很少見(jiàn)了。而 eisa 在 586 以后的主機(jī)板已經(jīng)沒(méi)見(jiàn)過(guò)了。pci 應(yīng)該是目前的主流,只要您有 pci 適配卡就必須打開(kāi)此選項(xiàng)。

device	agp		# support several AGP chipsets

這個(gè)選項(xiàng)是用來(lái)支持 AGP 適配卡,大多數(shù)的顯示卡都是 AGP 接口。

#FreeBSD 4.x
device	fdc0 at isa? port IO_FD1 irq 6 drq 2
device	fd0 at fdc0 drive 0
device	fd1 at fdc0 drive 1
# FreeBSD 5.x
device	fdc

以上幾個(gè)選項(xiàng)用以支持軟盤機(jī),在 FreeBSD 5.x 只需要一個(gè) fdc 即可。而使用 FreeBSD 4.x 時(shí),如果您只有一個(gè)軟盤機(jī),您可以將 fd1 移除。

4.2.6 IDE 接口裝置

device	ata

這是 ATA 及 ATAPI 的驅(qū)動(dòng)程序,如果您有 ATA 硬盤或光驅(qū),一定要打開(kāi)這個(gè)選項(xiàng)。如果要支持以下任何 IDE 接口裝置都必須將這個(gè)選項(xiàng)打開(kāi)。

device	atadisk		# ATA disk drives
device	ataraid		# ATA RAID drives
device	atapicd		# ATAPI CDROM drives
device	atapifd		# ATAPI floppy drives
device	atapist		# ATAPI tape drives

以上裝置分別是 ATA 硬盤、ATA 磁盤陣列裝置、IDE 光驅(qū)、IDE 軟盤機(jī)、及 IDE 磁帶機(jī)。您可以將不必要的裝置移除,例如 IDE 軟盤機(jī)等。

options	ATA_STATIC_ID	#Static device numbering

這個(gè)選項(xiàng)用來(lái)將 ATA 控置單元設(shè)定為固定的控制編號(hào),通常用在一些比較舊的設(shè)備上。

4.2.7 SCSI 裝置

device	ahb		# EISA AHA1742 family
device	ahc		# AHA2940 and onboard AIC7xxx devices
device	ahd		# AHA39320/29320 and onboard AIC79xx devices
device	amd		# AMD 53C974 (Tekram DC-390(T))
device	isp		# Qlogic family
device	mpt		# LSI-Logic MPT-Fusion
#device	ncr		# NCR/Symbios Logic
device	sym		# NCR/Symbios Logic (newer chipsets + those of `ncr')
device	trm		# Tekram DC395U/UW/F DC315U adapters

device	adv		# Advansys SCSI adapters
device	adw		# Advansys wide SCSI adapters
device	aha		# Adaptec 154x SCSI adapters
device	aic		# Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device	bt		# Buslogic/Mylex MultiMaster SCSI adapters

device	ncv		# NCR 53C500
device	nsp		# Workbit Ninja SCSI-3
device	stg		# TMC 18C30/18C50
device	adv0	at isa?
device	adw
device	bt0	at isa?
device	aha0	at isa?
device	aic0	at isa?
device	ncv		# NCR 53C500
device	nsp		# Workbit Ninja SCSI-3
device	stg		# TMC 18C30/18C50

以上這些項(xiàng)目都是 SCSI 適配卡的驅(qū)動(dòng)程序,如果您有 SCSI 適配卡,您可以使用 dmesg 去查看您的適配卡型號(hào),并留下所需的驅(qū)動(dòng)程序即可。如果您只有 IDE 設(shè)備,您可以將所有項(xiàng)目移除。

device	scbus # SCSI bus (required for SCSI)
device	ch		# SCSI media changers
device	da		# Direct Access (disks)
device	sa		# Sequential Access (tape etc)
device	cd		# CD
device	pass		# Passthrough device (direct SCSI access)
device	ses		# SCSI Environmental Services (and SAF-TE)

這些是 SCSI 接口的設(shè)備,如果您有任何 SCSI 接口的設(shè)備或是 USB 硬盤、大姆哥,一定要保留 scbus 這個(gè) SCSI 總線的選項(xiàng)。ch 是 SCSI media changer (一種備份用的設(shè)備)。如果您有 SCSI 硬盤或是 USB 硬盤,請(qǐng)保留 da 這個(gè)選項(xiàng)。而 sa 及 cd 分別是 SCSI 磁帶機(jī)及光驅(qū)。

# RAID controllers interfaced to the SCSI subsystem
device	amr		# AMI MegaRAID
device	asr		# DPT SmartRAID V, VI and Adaptec SCSI RAID
device	ciss		# Compaq Smart RAID 5*
device	dpt		# DPT Smartcache III, IV - See NOTES for options
device	iir		# Intel Integrated RAID
device	ips		# IBM (Adaptec) ServeRAID
device	mly		# Mylex AcceleRAID/eXtremeRAID

# RAID controllers
device	aac		# Adaptec FSA RAID
device	aacp		# SCSI passthrough for aac (requires CAM)
device	ida		# Compaq Smart RAID
device	mlx		# Mylex DAC960 family
device	pst		# Promise Supertrak SX6000
device	twe		# 3ware ATA RAID

以上是磁盤陣列裝置,如果您沒(méi)有任何磁盤陣列,可以將它們?nèi)恳瞥?/p>

4.2.8 基本外圍設(shè)備

# atkbdc0 controls both the keyboard and the PS/2 mouse
device	atkbdc		# AT keyboard controller
device	atkbd		# AT keyboard
device	psm		# PS/2 mouse

atkbdc 這個(gè)選項(xiàng)用來(lái)控制鍵盤及鼠標(biāo)。而 atkbd 及 psm 分別為 AT 鍵盤及 PS/2 鼠標(biāo)的驅(qū)動(dòng)程序。

device	vga		# VGA video card driver

這是顯示卡的驅(qū)動(dòng)程序。

# FreeBSD 4.x
pseudo-device	splash
# FreeBSD 5.x
device	splash		# Splash screen and screen saver support

啟動(dòng)時(shí)更新屏幕,屏幕保護(hù)程序會(huì)使用到它。FreeBSD 4.x 及 5.x 所使用的選項(xiàng)不太一樣喔。

# syscons is the default console driver, resembling an SCO console
# FreeBSD 4.x
device	sc0 at isa? flags 0x100
# FreeBSD 5.x
device	sc

這是預(yù)設(shè)的 console 驅(qū)動(dòng)程序,如果有屏幕一定要保留這個(gè)選項(xiàng)。

# Enable this for the pcvt (VT220 compatible) console driver
#device		vt
#options 	XSERVER		# support for X server on a
			# vt console
#options 	FAT_CURSOR	# start with block cursor

支持 vt 200 及 vt100 等兼容終端機(jī)。

# Floating point support - do not disable.
device	npx

這是支持 FreeBSD 浮點(diǎn)運(yùn)算,請(qǐng)勿移除。

# Power management support (see NOTES for more options)
# FreeBSD 4.x
device	apm0	at nexus? disable flags 0x20
# FreeBSD 5.x
#device	apm

支持 APM 電源管理,在 FreeBSD 4.x 下,如果您想要在打指令 shutdown -p 時(shí)能自動(dòng)關(guān)機(jī),請(qǐng)將 disable 字樣移除。FreeBSD 5.x 請(qǐng)將 apm 該行的井字號(hào)移除。接著必須在 /etc/rc.conf 中加入下列二行:

apm_enable="YES"
apmd_enable="YES"

 

# Add suspend/resume support for the i8254.
device	pmtimer

這是用來(lái)支持 i82454 休眠待命模式。

# PCCARD (PCMCIA) support
# FreeBSD 4.x
device	card
device	pcic0	at isa? irq 0 port 0x3e0 iomem 0xd0000
device	pcic1	at isa? irq 0 port 0x3e2 iomem 0xd4000 disable

# FreeBSD 5.x
# Pcmcia and cardbus bridge support
device	cbb		# cardbus (yenta) bridge
#device	pcic		# ExCA ISA and PCI bridges
device	pccard		# PC Card (16-bit) bus
device	cardbus		# CardBus (32-bit) bus

這些是 PCMCIA 適配卡的驅(qū)動(dòng)程序,如果您使用的是筆記型計(jì)算機(jī),請(qǐng)保留這些項(xiàng)目。FreeBSD 5.x 支持 32 bit 的 PCMCIA 接口,但 FreeBSD 4.x 不支援喔。

# Serial (COM) ports
# FreeBSD 4.x
device	sio0	at isa? port IO_COM1 flags 0x10 irq 4
device	sio1	at isa? port IO_COM2 irq 3
device	sio2	at isa? disable port IO_COM3 irq 5
device	sio3	at isa? disable port IO_COM4 irq 9
# FreeBSD 5.x
device	sio		# 8250, 16[45]50 based serial ports

支持串行端口 Serial (COM) ports。在 FreeBSD 4.x 下,sio0、sio1 等分別代表著 COM1、COM2、COM3、COM4。而 FreeBSD 5.x 只要一個(gè) sio 即可。通常我們只有 COM1 及 COM2,如果您有內(nèi)接式的調(diào)制解調(diào)器,您可能要保留 COM3 或 COM4。

# Parallel port
device	ppc
device	ppbus		# Parallel port bus (required)
device	lpt		# Printer
device	plip		# TCP/IP over parallel
device	ppi		# Parallel port interface device
#device	vpo		# Requires scbus and da
這些是并列端口及其它并列端口裝置 (如列表機(jī)) 的驅(qū)動(dòng)程序。

4.2.9 網(wǎng)絡(luò)卡設(shè)定

device	de		# DEC/Intel DC21x4x (``Tulip'')
device	em		# Intel PRO/1000 adapter Gigabit
# Ethernet Card
device	txp		# 3Com 3cR990 (``Typhoon'')
device	vx		# 3Com 3c590, 3c595 (``Vortex'')

這些是網(wǎng)絡(luò)卡的驅(qū)動(dòng)程序,您可以使用 dmesg 去查看自己的網(wǎng)絡(luò)卡型號(hào),并保留所需要的型號(hào)設(shè)定即可。

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device	miibus		# MII bus support

如果您使用的是下列這些 PCI 10/100 的網(wǎng)絡(luò)卡,請(qǐng)保留 MII bus 這個(gè)選項(xiàng)。

device	bfe		# Broadcom BCM440x 10/100 ethernet
device	bge		# Broadcom BCM570xx Gigabit Ethernet
device	dc		# DEC/Intel 21143 and various workalikes
device	fxp		# Intel EtherExpress PRO/100B (82557, 82558)
device	pcn		# AMD Am79C97x PCI 10/100 (precedence over 'lnc')
device	re		# RealTek 8139C+/8169/8169S/8110S
device	rl		# RealTek 8129/8139
device	sf		# Adaptec AIC-6915 (``Starfire'')
device	sis		# Silicon Integrated Systems SiS 900/SiS 7016
device	sk		# SysKonnect SK-984x and SK-982x gigabit ethernet
device	ste		# Sundance ST201 (D-Link DFE-550TX)
device	ti		# Alteon Networks Tigon I/II gigabit ethernet
device	tl		# Texas Instruments ThunderLAN
device	tx		# SMC EtherPower II (83c170 ``EPIC'')
device	vr		# VIA Rhine, Rhine II
device	wb		# Winbond W89C840F
device	xl		# 3Com 3c90x (``Boomerang'', ``Cyclone'')

上列為 PCI 的網(wǎng)絡(luò)卡,請(qǐng)使用 dmesg 查看您的網(wǎng)絡(luò)卡型號(hào),并保留所需的型號(hào)即可。請(qǐng)注意上列網(wǎng)絡(luò)卡都必須要有 MII bus 的支持。

# ISA Ethernet NICs.  pccard nics included.
device	cs		# Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device	ed		# NE[12]000, SMC Ultra, 3c503, DS8390 cards
device	ex		# Intel EtherExpress Pro/10 and Pro/10+
device	ep		# Etherlink III based cards
device	fe		# Fujitsu MB8696x based cards
device	ie		# EtherExpress 8/16, 3C507, StarLAN 10 etc.
device	lnc		# NE2100, NE32-VL Lance Ethernet cards
device	sn		# SMC's 9000 series of ethernet chips
device	xe		# Xircom pccard ethernet

ISA接口的網(wǎng)絡(luò)卡。如果很不幸的你的網(wǎng)絡(luò)卡是 ISA 接口,建議你換成 PCI 的適配卡,否則你應(yīng)該要先知道你使用的 irq 及 port。如果你的型號(hào)是 ed0 ,則請(qǐng)勿移除上述的 miibus。

# Wireless NIC cards
device	wlan		# 802.11 support
device	an		# Aironet 4500/4800 802.11 wireless NICs.
device	awi		# BayStack 660 and others
device	wi		# WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device	wl		# Older non 802.11 Wavelan wireless NIC.

這些是無(wú)線網(wǎng)絡(luò)卡。

4.2.10 虛擬裝置

device random # Entropy device
# FreeBSD 4.x
pseudo-device	loop	# Network loopback
# FreeBSD 5.x
device	loop		# Network loopback

這二個(gè)虛擬的裝置分別用來(lái)做隨機(jī)運(yùn)算及 loopback 網(wǎng)絡(luò),請(qǐng)保留這二個(gè)選項(xiàng)。

# FreeBSD 4.x
pseudo-device	ether	# Ethernet support
# FreeBSD 5.x
device	ether		# Ethernet support

這是用來(lái)支持以太網(wǎng)絡(luò),只要您有網(wǎng)絡(luò)卡都必須保留這個(gè)項(xiàng)目。

# FreeBSD 4.x
pseudo-device	sl 1
# FreeBSD 5.x
device	sl		# Kernel SLIP

sl 用以支持 SLIP,SLIP已經(jīng)幾乎被 PPP 所取代,ppp 可以更簡(jiǎn)單、快速的建立 modem-to-modem 聯(lián)機(jī)。在 sl 后面的數(shù)字是要仿真多少條 SLIP。

# FreeBSD 4.x
pseudo-device	ppp 1	# Kernel PPP
# FreeBSD 5.x
device	ppp		# Kernel PPP

支持 ppp 撥接連線。

# FreeBSD 4.x
pseudo-device	tun	# Packet tunnel.
# FreeBSD 5.x
device	tun		# Packet tunnel.

tun 會(huì)被 ppp 所使用,如果您有撥接網(wǎng)絡(luò) (含 ADSL 撥號(hào)) 一定要保留這個(gè)選項(xiàng)。

# FreeBSD 4.x
pseudo-device	pty	# Pseudo-ttys (telnet etc)
# FreeBSD 5.x
device	pty		# Pseudo-ttys (telnet etc)

最大的 ttys,如 telnet 同時(shí)上線最大人數(shù),在 FreeBSD 4.x 預(yù)設(shè)是 16。你可以在 pty 的后面加上數(shù)字來(lái)提高人數(shù),最大是 256。FreeBSD 5.x 則毋需擔(dān)心這個(gè)問(wèn)題。

# FreeBSD 4.x
pseudo-device	md	# Memory "disks"
# FreeBSD 5.x
device	md		# Memory "disks"

用來(lái)支持虛擬的 Memory disk,這是一種將某塊內(nèi)存拿來(lái)當(dāng)成磁盤驅(qū)動(dòng)器使用的虛擬裝置。

# FreeBSD 4.x
pseudo-device	gif	# IPv6 and IPv4 tunneling
# FreeBSD 5.x
device	gif		# IPv6 and IPv4 tunneling

支持 IPv6 和 IPv4 之間的溝通。

# FreeBSD 4.x
pseudo-device	faith 1	# IPv6-to-IPv4 relaying (translation)
# FreeBSD 5.x
device	faith		# IPv6-to-IPv4 relaying (translation)

用以支持 IPv6 和 IPv4 之間的轉(zhuǎn)換。

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# FreeBSD 4.x
pseudo-device	bpf	# Berkeley packet filter
# FreeBSD 5.x
device	bpf		# Berkeley packet filter

這是 Berkeley Packet Filter,可以讓我們的網(wǎng)絡(luò)卡支持 promiscuous mode,一些網(wǎng)絡(luò)監(jiān)控程序會(huì)需要使用這個(gè)裝置,例如 tcpdump、ethereal 等。

4.2.11 USB 裝置

device	uhci		# UHCI PCI->USB interface
device	ohci		# OHCI PCI->USB interface
device	usb		# USB Bus (required)
#device	udbp		# USB Double Bulk Pipe devices
device	ugen		# Generic
device	uhid		# "Human Interface Devices"
device	ukbd		# Keyboard
device	ulpt		# Printer
device	umass		# Disks/Mass storage - Requires scbus and da
device	ums		# Mouse
device	urio		# Diamond Rio 500 MP3 player
device	uscanner		# Scanners

以上為 USB 裝置的驅(qū)動(dòng)程序,請(qǐng)參考井字號(hào)之后的批注。

# USB Ethernet, requires mii
device	aue		# ADMtek USB ethernet
device	axe		# ASIX Electronics USB ethernet
device	cue		# CATC USB ethernet
device	kue		# Kawasaki LSI USB ethernet

這些是 USB 接口的網(wǎng)絡(luò)卡,如果您要支持任何一種,都必須將 miisub 的選項(xiàng)打開(kāi)。

4.3 編譯與安裝

4.3.1 編譯新的核心

修改完核心之后,記得要先存盤,接著可以開(kāi)始編譯了。編譯核心有二種方式,大部份的時(shí)候,我們可以任意使用這二種方法其中之一,使用第二種方式所需要的時(shí)間稍微長(zhǎng)一點(diǎn),以下是一些參考的法則:

FreeBSD 支持一種名為 CVSup 更新所有原始碼的方式,更新完原始碼后,要執(zhí)行 make world 來(lái)重新編譯所有程序,這時(shí)候就要使用方式二。

方式一:

第一種是使用傳統(tǒng)的編譯方式,以下范例所使用的核心設(shè)定檔名為 MYKERNEL,請(qǐng)改成您所使用的檔名。首先我們先使用 config 這個(gè)指令會(huì)依照我們所修改的設(shè)定檔成出編譯核心所需要的檔案。

# cd /usr/src/sys/conf
# config MYKERNEL

config 這個(gè)指令會(huì)產(chǎn)生一個(gè)編譯所使用的目錄,如果您在執(zhí)行 config 后發(fā)現(xiàn)錯(cuò)誤訊息,請(qǐng)檢查您所修改的檔案是否有問(wèn)題,例如語(yǔ)法錯(cuò)誤等。接下來(lái)就要到編譯用的目錄下。FreeBSD 5.0 以前的目錄和 5.x 目錄不一樣哦:

FreeBSD 4.x:

# cd ../../compile/MYKERNEL/

FreeBSD 5.x:

# cd ../compile/MYKERNEL/

接下來(lái)就可以開(kāi)始進(jìn)行編譯了:

# make depend
# make

上面的指令完成后,應(yīng)該就完成了核心的編譯。如果在過(guò)程中出現(xiàn)錯(cuò)誤的訊息,注意一下錯(cuò)誤是什么,并再次修改核心設(shè)定檔。一般常見(jiàn)的錯(cuò)誤可能是某一個(gè)設(shè)備的設(shè)定需要另一個(gè)設(shè)定,例如網(wǎng)絡(luò)卡驅(qū)動(dòng)程序要求 miibus,而卻將它移除了。

完成了上述的步驟確定沒(méi)問(wèn)題時(shí),就要安裝新的核心了。使用下列指令加以安裝:

# make install

完成安裝后,我們就可以移除編譯過(guò)程所產(chǎn)生的檔案了:

如果是 FreeBSD 4.x:

# cd / ; rm -rf /usr/src/sys/compile/MYKERNEL

如果是 FreeBSD 5.x:

# cd / ; rm -rf /usr/src/sys/i386/compile/MYKERNEL

方式二:

在 FreeBSD 4.2-STABLE 2001年2月以后的版本,我們可以使用新的方式來(lái)編譯及安裝新的核心:

# cd /usr/src
# # make buildkernel KERNCONF=MYKERNEL
# # make installkernel KERNCONF=MYKERNEL

安裝完成后,將編譯過(guò)程中使用的檔案刪除:

# rm -rf /usr/obj/usr/src/sys/MYKERNEL

最后我們就可以重新開(kāi)機(jī)了,在重新開(kāi)機(jī)之前,我們多下了幾個(gè) sync 這個(gè)指令。這個(gè)指令的用意是要求系統(tǒng)將所有暫存在內(nèi)存內(nèi)的數(shù)據(jù)都寫入硬盤。

# sync;sync;sync;reboot

4.3.2 新的核心有問(wèn)題

萬(wàn)一很不幸的,你發(fā)現(xiàn)編完核心后,無(wú)法開(kāi)機(jī)進(jìn)入 FreeBSD,這時(shí)候就要使用舊的核心來(lái)開(kāi)機(jī)了。在開(kāi)機(jī)時(shí)看到倒數(shù)計(jì)時(shí)的時(shí)候,按 Enter 以外的鍵,會(huì)出現(xiàn) boot: 這時(shí)候就先打 unload 來(lái)將已加載的數(shù)據(jù)移除,再打 /kernel.old 以使用舊的核心。

boot: unload
boot: /kernel.old

萬(wàn)一連舊的核心也無(wú)法使用時(shí),就使用安裝時(shí)的核心。

boot: /kernel.GENERIC

在 FreeBSD 4.x 下,如果你想要?jiǎng)h除壞的核心,由于 kernel 文件有特殊的檔案屬性,因此必須先使用下列指令修改屬性,之后才可以刪除。

# chflags noschg /kernel
# rm -rf /kernel

值得注意的是FreeBSD 5.x 的 kernel 放在 /boot/kernel 目錄下,而舊的核心在 /boot/kernel.old。