国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > FreeBSD > 正文

FreeBSD handbook中文版 9 配制FreeBSD 的內(nèi)核

2024-07-26 00:29:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
目錄
9 配制FreeBSD 的內(nèi)核
9.1 概要
第3 頁(yè)9.2 為什么要定制一個(gè)內(nèi)核? 
9.3 建立和安裝一個(gè)定制的內(nèi)核
9.4 配置文件
9.5 建立設(shè)備的節(jié)點(diǎn)
9.6 如果出現(xiàn)問(wèn)題怎么辦
=============================================================


(翻譯中出現(xiàn)的任何問(wèn)題或錯(cuò)誤,請(qǐng)廣大讀者及時(shí)反饋給我:freebsdhandbook@163.com) 
9.1 概要
時(shí)你需要重新配置和編譯你的內(nèi)核。






9.2 為什么要定制一個(gè)的內(nèi)核? 
帶來(lái)很多好處。不象GENERIC 內(nèi)核,它需要支持很廣泛的硬件設(shè)備,而定制的內(nèi)核將只支持
你機(jī)器的硬件設(shè)備,這樣會(huì)帶來(lái)很多好處: 
FreeBSD 使用手冊(cè)
第9章配置FreeBSD 的內(nèi)核
內(nèi)核是FreeBSD 的核心。它用來(lái)管理內(nèi)存,執(zhí)行安全控制,網(wǎng)絡(luò),磁盤(pán)訪問(wèn)等等。而有
讀完這章,你將了解到: 
為什么需要建構(gòu)一個(gè)定制的內(nèi)核。
如何寫(xiě)一個(gè)內(nèi)核配置文件,或修改已存在的配置文件。
如何使用內(nèi)核配置文件創(chuàng)建和建構(gòu)一個(gè)新的內(nèi)核。
如何安裝一個(gè)新內(nèi)核。
如何在/dev 中創(chuàng)建設(shè)備文件的入口。
如何解決一些常見(jiàn)的問(wèn)題。
定制內(nèi)核基本上是每一個(gè)UNIX 用戶必須經(jīng)歷的一關(guān)。這樣做將會(huì)對(duì)你的FreeBSD 系統(tǒng)
1. 快速啟動(dòng)。既然系統(tǒng)內(nèi)核只檢測(cè)你機(jī)器上的硬件,那它所花費(fèi)的啟動(dòng)時(shí)間將大大減
少。
2. 較少的內(nèi)存使用。一個(gè)定制的內(nèi)核會(huì)比GENERIC 內(nèi)核使用較少的內(nèi)存。這一點(diǎn)非常
重要,因?yàn)閮?nèi)核在處理時(shí)必須經(jīng)常使用內(nèi)存。所以,一個(gè)定制的內(nèi)核對(duì)于內(nèi)存較少的機(jī)
器來(lái)說(shuō)是非常有用的。
3. 額外的硬件支持。一個(gè)定制的內(nèi)核允許你加入象聲卡之類設(shè)備的支持,而這恰恰是
GENERIC 內(nèi)核所做不到的。
第1 頁(yè)FreeBSD 使用手冊(cè)
9.3 建立并安裝一個(gè)定制的內(nèi)核
首先,讓我們先來(lái)看一下建立內(nèi)核的目錄。所有提到的目錄都在/usr/src/sys 中,也
可以通過(guò)/sys 訪問(wèn)。有許多子目錄充當(dāng)了內(nèi)核的不同部分。但最重要的是/arch/conf,你
可以在這兒配置內(nèi)核,然后進(jìn)行編譯。這里的arch 也可能是i386,alpha,pc98。在一個(gè)特
殊的架構(gòu)目錄內(nèi),所有的東西都是為這個(gè)架構(gòu)服務(wù)的;其它部分的代碼是與所有平臺(tái)共享的。
注意一下這個(gè)目錄的邏輯結(jié)構(gòu),所有支持的硬件驅(qū)動(dòng)程序、文件系統(tǒng)、參數(shù)選項(xiàng),都放在各
自的目錄下。另外,所有放在i386 目錄下的是只跟PC 硬件有關(guān)的,而i386 目錄之外的其
它目錄,則是FreeBSD 可能移植到的平臺(tái)會(huì)共享到的部分。
注意:如果你的系統(tǒng)沒(méi)有這個(gè)/usr/src/sys 目錄,那么內(nèi)核源代碼就沒(méi)有被安裝。最
快速的安裝方式是以root 登陸, 然后運(yùn)行/stand/sysinstall , 選擇
configure Distributions src sys。
接著,切換到arch/conf 目錄,拷貝GENERIC 配置文件,并給這個(gè)文件起一個(gè)容易辨認(rèn)的名
稱,它就是你的內(nèi)核名稱。例如: 
# cd /usr/src/sys/i386/conf 
# cp GENERIC MYKERNEL 
通常,這個(gè)名稱是大寫(xiě)的,如果正維護(hù)著多臺(tái)不同硬件的FreeBSD 機(jī)器,以你機(jī)器的域
名來(lái)命名是非常好的主意。我們把它命名為MYKERNEL 就是這個(gè)原因。
注意:你必須以root 帳戶登陸再執(zhí)行下面的命令,否則你會(huì)沒(méi)有權(quán)限,而導(dǎo)致錯(cuò)誤。
現(xiàn)在,用你喜歡的文本編輯器編輯MYKERNEL。如果你是初學(xué)者,那唯一能用的編輯器
可能就是vi,它由于太復(fù)雜而不在這兒介紹了,但在參考書(shū)目中有許多書(shū)會(huì)介紹到它。然
而,F(xiàn)reeBSD 中最容易的編輯器是ee,如果你是一個(gè)工程師,它是一個(gè)非常好的選擇。你可
以很自由地改變注釋行來(lái)反映你的配置情況,或你在GERNERIC 中已經(jīng)做的變化。如果你在
Sunos 或其它BSD 系統(tǒng)下定制過(guò)內(nèi)核,那這個(gè)文件中的絕大部分將對(duì)你非常熟悉。如果你使
用的是諸如DOS 這樣的系統(tǒng),那GENERIC 配置文件就看起來(lái)非常困難,所以在下面的配置文
件章節(jié)將慢慢地、仔細(xì)地進(jìn)行介紹。
注意:確信經(jīng)常檢查/usr/src/UPDATING,在你執(zhí)行任何修改之前,記得要用最新發(fā)布
的源代碼來(lái)同步你的源代碼樹(shù)。在這個(gè)文件中所有重要的升級(jí)都要記下來(lái)。
/sur/src/UPDATING 總是符合你的FreeBSD 源代碼版本,而且總是比手冊(cè)所說(shuō)的信息更加精
確。
當(dāng)你完成以上步驟之后,如果你使用的FreeBSD 是4.0 之前的版本的話,就執(zhí)行下面的
第2 頁(yè)FreeBSD 使用手冊(cè)
命令進(jìn)行編譯和安裝內(nèi)核;如果你使用的是4.0 版或是之后的版本,你的/usr/src/目錄可
能已經(jīng)包含了sys/子目錄了。
注意:如果你設(shè)法從一個(gè)舊版本的FreeBSD 升級(jí)你的內(nèi)核,你可能必須從你得到新內(nèi)核
源代碼的地方,找到新版的配制文件,重建并安裝它。
# /usr/sbin/config MYKERNEL 
# cd ../../compile/MYKERNEL 
# make depend 
# make 
# make install 
如果你剛升級(jí)到一個(gè)比較新的版本,確信你已經(jīng)重建了整個(gè)系統(tǒng),然后運(yùn)行下面的命令: 
# cd /usr/src 
# make buildkernel KERNCONF=MYKERNEL 
# make installkernel KERNCONF=MYKERNEL 
如果你還沒(méi)有升級(jí)你的源代碼樹(shù),那你應(yīng)當(dāng)按順序執(zhí)行: 
config,make depend,make,make install 
警告:如果你已經(jīng)升級(jí)了你的源代碼,你必須使用make buildkernel 方法來(lái)定制你的
內(nèi)核。否則,用舊的工具來(lái)定制內(nèi)核,可能會(huì)引起錯(cuò)誤。如果你已經(jīng)升級(jí)了源代碼,不要
使用config/make 來(lái)定制內(nèi)核。
新的內(nèi)核將會(huì)被拷貝到/kernel 目錄下,而舊的內(nèi)核將會(huì)被移到/kernel.old。現(xiàn)在, 
關(guān)閉系統(tǒng),然后重新用你的內(nèi)核啟動(dòng)系統(tǒng)。如果發(fā)生錯(cuò)誤,在這章結(jié)尾會(huì)有一些故障的解決
辦法。一旦你的新內(nèi)核不能啟動(dòng),請(qǐng)務(wù)必讀一下有關(guān)如何恢復(fù)的章節(jié)。
注意:如果你已經(jīng)加入了新的設(shè)備(如聲卡),你可能在使用之前,要先在你的/dev 目
錄下加入這些設(shè)備節(jié)點(diǎn)。
9.4 配置文件
內(nèi)核設(shè)置的格式是很簡(jiǎn)單的,每一行包含了一個(gè)關(guān)鍵詞(keyWord)與一個(gè)或多個(gè)參數(shù), 
而大多數(shù)的設(shè)置都只包含一個(gè)參數(shù)。#號(hào)之后的文字都是注釋,會(huì)被程序忽略掉。下面的每
個(gè)小節(jié),將依次介紹每個(gè)列在GENERIC 中的參數(shù),雖然各相關(guān)主題(如網(wǎng)絡(luò))的關(guān)鍵詞會(huì)放在
同一小節(jié),但是這些關(guān)鍵詞可能位于GENERIC 的很多地方。詳細(xì)地列出各個(gè)選項(xiàng)(option), 
而LINT 列出了絕大部分的選項(xiàng)(options),比起在同一目錄下的GENERIC,有更詳細(xì)的解釋。
第3 頁(yè)FreeBSD 使用手冊(cè)
如果你不能確定某一行設(shè)定的目的是否必要,請(qǐng)先看看LINT。
目前內(nèi)核在處理各個(gè)選項(xiàng)上正轉(zhuǎn)到一個(gè)比較好的模式。一般地,設(shè)置文件中的各個(gè)選項(xiàng)
都轉(zhuǎn)換到內(nèi)核程序的Makefile 中,屬于CFLAGS 的一個(gè)-D 參數(shù)。時(shí)間一長(zhǎng),就造成了一個(gè)
選項(xiàng)處理機(jī)制的問(wèn)題,沒(méi)有人知道在哪個(gè)文件中參考使用了那個(gè)選項(xiàng)。
在新的機(jī)制中,使用#ifdef 來(lái)參考選項(xiàng)的程序代碼是存放在由執(zhí)行config 時(shí)所產(chǎn)生的
opt_foo.h。由config 所產(chǎn)生的有效的選項(xiàng)清單存儲(chǔ)在兩個(gè)文件里:獨(dú)立于系統(tǒng)架構(gòu)的選項(xiàng)
放在/sys/conf/options,與系統(tǒng)架構(gòu)有關(guān)的選項(xiàng)則放在/sys/arch/conf/options.arch,其
中arch 的一個(gè)例子便是i386。
數(shù)字的引號(hào)限制(Quoting numbers): 目前所有FreeBSD 版本,包括3-stable 
版,其內(nèi)核設(shè)置文件中如果有任何屬于文字形式的數(shù)字(如i386),必須用雙引號(hào)引
起來(lái),不然執(zhí)行config 時(shí)會(huì)出錯(cuò)。
如果數(shù)字是表示數(shù)目、個(gè)數(shù),如maxuser 64 這個(gè)設(shè)置,則不要加雙引號(hào)。目
前FreeBSD CURRENT 版本已經(jīng)去掉上述限制,不論是哪種形式的數(shù)字都不需要加雙
引號(hào)。本章的例子,在文字形式的數(shù)字前后仍加了雙引號(hào)(“”),如果你使用FreeBSD 
CURRENT,請(qǐng)自動(dòng)去除雙引號(hào)。
下面是一個(gè)帶有很多額外注釋的GENERIC 內(nèi)核配置文件的例子。這個(gè)例子與
/usr/src/sys/i386/conf/GENERIC 非常相似。有關(guān)內(nèi)核配置的最詳細(xì)的選項(xiàng),請(qǐng)參
看/usr/src/sys/i386/conf/LINT。

# GENERIC -- Generic kernel configuration file for FreeBSD/i386 

# For more information on this file, please read the handbook section on 
# Kernel Configuration Files: 

# http://www.FreeBSD.org/handbook/kernelconfig-config.html 

# The handbook is also available locally in /usr/share/doc/handbook 
# if you've installed the doc distribution, otherwise always see the 
# FreeBSD World Wide Web server (http://www.FreeBSD.ORG/) for the 
第4 頁(yè)FreeBSD 使用手冊(cè)
# latest information. 

# An exhaustive list of options and more detailed explanations of the 
# device lines is also PResent in the ./LINT configuration file. If you are 
# in doubt as to the purpose or necessity of a line, check first in LINT. 

# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.246 2000/03/09 16:32:55 jlemon Exp 

下面這個(gè)選項(xiàng)在每個(gè)內(nèi)核中都要有: 
machine i386 
上面的選項(xiàng)指出了在你的系統(tǒng)中所用的CPU 類型。你可以使用多個(gè)CPU 類型(例如,你
不確信你使用的是I586_CPU 還是I686_CPU),然而,對(duì)于一個(gè)定制的內(nèi)核,最好是只指定
你所擁有的CPU 類型。如果你不能確定你的CPU 類型,你可以使用dmesg 命令來(lái)看看你的啟
動(dòng)信息。
Alpha 結(jié)構(gòu)的機(jī)器使用下面的選項(xiàng): 
cpu EV4 
cpu EV5 
如果你正使用一臺(tái)Alpha 機(jī)器,你應(yīng)當(dāng)使用上面的CPU 類型。
ident GENERIC 
ident 是一個(gè)內(nèi)核的標(biāo)識(shí)符。你應(yīng)該自己命名一個(gè)容易辨認(rèn)的名稱,以有別于GENERIC 
的名稱─GENERIC。放在ident 后的參數(shù),將在你用這個(gè)內(nèi)核啟動(dòng)時(shí)顯示在屏幕上。如果你
同時(shí)設(shè)置了幾個(gè)內(nèi)核,采用不同的名稱是個(gè)不錯(cuò)的主意。
注意,象machine 與cpu 這兩個(gè)設(shè)置。如果你的內(nèi)核名稱包含數(shù)字,請(qǐng)記得用雙引號(hào)把
它括起來(lái)。內(nèi)核名稱將會(huì)使用-D 參數(shù)傳給編譯器,所以不要用像DEBUG 或是其它可能干擾
編譯器的機(jī)器、CPU 名稱,如vax。
maxusers 32 
這個(gè)設(shè)置的大小值定義了重要的system tables。這個(gè)數(shù)值粗略地假設(shè)你的機(jī)器同時(shí)會(huì)
有多少使用者。然而,在一般情況下,你最少要設(shè)置4 個(gè)以上,特別是你要執(zhí)行X Window 
或是編譯程序。原因是maxusers 值決定了系統(tǒng)同時(shí)可有多少個(gè)進(jìn)程( processes),其算法
是20 + 16 * maxusers。如果你設(shè)置maxusers 值是1,則你的系統(tǒng)只能同時(shí)存在36 個(gè)
第5 頁(yè)FreeBSD 使用手冊(cè)
processes,包括18 個(gè)(或更多)系統(tǒng)啟動(dòng)要占去的processes;如果你執(zhí)行了X Window,則
又要用掉15 個(gè)以上。甚至閱讀一個(gè)man page 也會(huì)使用九個(gè)processes 來(lái)過(guò)濾、解壓縮、然
后顯示文件。設(shè)置maxusers=4,則系統(tǒng)可以同時(shí)有84 個(gè)processes,對(duì)任何人應(yīng)該都是足
夠的。當(dāng)你執(zhí)行程序時(shí),得到像是“proc table full”這樣的錯(cuò)誤信息,或者你要建一個(gè)
同時(shí)會(huì)有很多人來(lái)訪問(wèn)的網(wǎng)站(如Walnut Creek CDROM 的FTP)時(shí),你就要增加這個(gè)設(shè)置的
值,然后重新編譯內(nèi)核。
注意: maxuser 這個(gè)參數(shù)并不限制可以登陸你系統(tǒng)的用戶的數(shù)目。它只是系統(tǒng)中使用者
可以最多執(zhí)行的程序的個(gè)數(shù)。有一個(gè)關(guān)鍵詞的值則真的限制了可以同時(shí)遠(yuǎn)程連接(remote 
logins)的人數(shù):pseudo-device pty 16。
# Floating point support - do not disable. 
device npx0 at nexus? port IO_NPX irq 13 
npx0 是連接FreeBSD 中浮點(diǎn)運(yùn)算處理器的一個(gè)接口。不論你有硬件的浮點(diǎn)運(yùn)算處理器
還是使用軟件仿真,都需要這個(gè)設(shè)置。這個(gè)設(shè)置并不是可有可無(wú)的。
# Pseudo devices - the number indicates how many units to allocate. 
pseudo-device loop # Network loopback 
loop 是一個(gè)通用的TCP/ip 接口。如果你用telnet 或ftp 連到localhost(等同于
127.0.0.1),則該連接會(huì)通過(guò)這個(gè)虛擬設(shè)備連回來(lái)。這是一定要有的設(shè)置,請(qǐng)不要去掉。
#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols 
options MATH_EMULATE #Support for x87 emulation 
如果你的計(jì)算機(jī)沒(méi)有浮點(diǎn)運(yùn)算處理器(386 或486SX),你可以加入這行,使得內(nèi)核提供
軟件仿真的浮點(diǎn)運(yùn)算處理器。如果你用的是486DX 或是386SX、486SX(還加裝了387、487 
芯片)或更高的(Pentium、Pentium II 等)則不需要這行設(shè)置。
注意: 這個(gè)仿真的浮點(diǎn)運(yùn)算處理器并不是很精確。如果你沒(méi)有浮點(diǎn)運(yùn)算器,還需要較
高的精度,你可以改用GPL_MATH_EMULATE 參數(shù),這將會(huì)使用GNU 的浮點(diǎn)運(yùn)算仿真器。至于
為什么這個(gè)仿真器不是系統(tǒng)默認(rèn)值,是因?yàn)镚NU 使用許可的關(guān)系。
options INET #InterNETworking 
提供網(wǎng)絡(luò)支持。就算你不打算連上網(wǎng)絡(luò),你還是要留著這個(gè)選項(xiàng)。對(duì)于絕大部分的程序, 
這個(gè)選項(xiàng)是一定要有的。
第6 頁(yè)FreeBSD 使用手冊(cè)
options INET6 #IPv6 communications protocols 
這個(gè)啟用IPv6 通訊協(xié)議。
options FFS #Berkeley Fast Filesystem 
options FFS_ROOT #FFS usable as root device [keep this!] 
最基本的硬盤(pán)文件系統(tǒng)。如果你要從硬盤(pán)啟動(dòng),就留著。
options MFS #Memory Filesystem 
options MD_ROOT #MD is a potential root device 
Memory-mapped 文件系統(tǒng)。提供RAM disk,以供需要快速訪問(wèn)的資料或是暫存資料用。
如果你分了很大的swap 空間,使用這個(gè)選項(xiàng)可以給你不少好處。把/tmp 掛到MFS 分區(qū)是一
個(gè)相當(dāng)好的想法,因?yàn)椴簧俪绦蚨紩?huì)在此暫存資料。要把/tmp 掛到MFS RAM disk,可以修
改/etc/fstab,加入以下一行: 
/dev/ad1s2b /tmp mfs rw 0 0 
現(xiàn)在重啟動(dòng),或是鍵入mount /tmp 命令: 
options NFS #Network Filesystem 
options NFS_ROOT #NFS usable as root device, NFS required 
網(wǎng)絡(luò)文件系統(tǒng)(Network Filesystem, NFS),除非你要從網(wǎng)絡(luò)上的其它機(jī)器加載目錄, 
不然你可以用# 號(hào)注釋掉這行設(shè)置。
options MSDOSFS #MSDOS Filesystem 
MS-DOS 文件系統(tǒng)。除非你要在啟動(dòng)時(shí)掛上一個(gè)DOS 格式的硬盤(pán),不然你可以放心地把
這行注釋掉。如前所述,在你第一次掛上一個(gè)DOS 分區(qū)時(shí),內(nèi)核將會(huì)自動(dòng)加載模塊來(lái)支持它。
此外,mtools 是個(gè)相當(dāng)不錯(cuò)的軟件(可在ports 里面找到),可以讓你在訪問(wèn)DOS 磁盤(pán)時(shí), 
不需要掛入或卸載軟盤(pán)(而且也不需要MSDOSFS 的支持)。
options CD9660 #ISO 9660 Filesystem 
options CD9660_ROOT #CD-ROM usable as root, CD9660 required 
CD-ROM 使用的ISO 9660 文件系統(tǒng)。如果你沒(méi)有光驅(qū),或是很少用光驅(qū),可以注釋掉這
一行(內(nèi)核會(huì)在第一次掛入時(shí)動(dòng)態(tài)加載模塊以支持它)。音樂(lè)CD 則不會(huì)用到這個(gè)文件系統(tǒng)。
options PROCFS #Process filesystem 
第7 頁(yè)FreeBSD 使用手冊(cè)
Process filesystem。這是一個(gè)虛擬的文件系統(tǒng),掛在/proc 下,允許一些程序,像ps 
來(lái)讀取資料,提供你正在執(zhí)行的processes 的信息。
options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!] 
使系統(tǒng)兼容4.3BSD。不要去掉這一行,不然有些程序?qū)o(wú)法正常運(yùn)行。
options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI 
這行設(shè)置告訴內(nèi)核等待15 秒鐘,以供SCSI 控制器掃描你計(jì)算機(jī)上的SCSI 設(shè)備。如果
你只有IDE 硬盤(pán),你可以不理會(huì)這個(gè)設(shè)置,不然你可能會(huì)想要降低這個(gè)值,也許會(huì)降到五秒, 
以增加啟動(dòng)的速度。如果你發(fā)現(xiàn)降低后,F(xiàn)reeBSD 無(wú)法正確辨認(rèn)你的SCSI 設(shè)備,那么你該
提高這個(gè)值,延長(zhǎng)等待時(shí)間。
options UCONSOLE #Allow users to grab the console 
允許使用者找到console 信息,對(duì)X Window 很有用。舉例來(lái)說(shuō),你可以輸入xterm -C 
來(lái)打開(kāi)一個(gè)console xterm,這個(gè)窗口將顯示任何write、talk 等命令的信息,以及你發(fā)出
去的信息。當(dāng)然,kernel 產(chǎn)生的信息也會(huì)在這里出現(xiàn)。
options USERCONFIG #boot -c editor 
這個(gè)選項(xiàng)允許你從啟動(dòng)菜單啟動(dòng)配置編輯器。
options VISUAL_USERCONFIG #visual boot -c editor 
這個(gè)選項(xiàng)允許你從啟動(dòng)菜單啟動(dòng)虛擬配置編輯器。
options KTRACE #ktrace support 
這個(gè)選項(xiàng)啟用內(nèi)核進(jìn)程跟蹤,在調(diào)試時(shí)很有用。
options SYSVSHM #SYSV-style shared memory 
提供System V Shared memory(SHM)的支持,最常用到SHM 的應(yīng)該是X Window 的XSHM 
延伸,不少繪圖相關(guān)程序(像影片播放程序XAnim 與linux DOOM 游戲)會(huì)自動(dòng)使用SHM 來(lái)提
供額外的速度。如果你要使用X Window,你最好加入這個(gè)選項(xiàng)。
options SYSVSEM #SYSV-style semaphores 
支持System V semaphores,不常用到,只在kernel 中占用幾百個(gè)字節(jié)的空間。
options SYSVMSG #SYSV-style message queues 
支持System V messages,一樣的,只占用kernel 幾百字節(jié)的空間。
第8 頁(yè)FreeBSD 使用手冊(cè)
注意: ipcs 命令可以顯示出任何使用到上述三個(gè)System V 功能的processes。
options P1003_1B #Posix P1003_1B real-time extensions 
options _KPOSIX_PRIORITY_SCHEDULING 
在1993 POSIX 中添加的實(shí)時(shí)擴(kuò)展。在ports collection 中某些應(yīng)用程序會(huì)用到這些(如
Star Office)。
options ICMP_BANDLIM #Rate limit bad replies 
這個(gè)選項(xiàng)啟用ICMP 的帶寬限制的錯(cuò)誤響應(yīng)。你使用這個(gè)選項(xiàng)可以幫助你保護(hù)你的機(jī)器
免受拒絕式服務(wù)攻擊。
# To make an SMP kernel, the next two are needed 
#options SMP # Symmetric MultiProcessor Kernel 
#options APIC_IO # Symmetric (APIC) I/O 
上面兩個(gè)選項(xiàng)都支持SMP。
device isa 
所有FreeBSD 支持的PC 都需要這行設(shè)置。如果你使用IBM PS/2 (微信道架構(gòu))計(jì)算機(jī), 
則你無(wú)法在該機(jī)器上執(zhí)行FreeBSD。
device eisa 
如果你的主機(jī)板上有EISA 總線,加入這個(gè)設(shè)置。使用這個(gè)選項(xiàng)可以自動(dòng)掃描并設(shè)置所
有連接在EISA 總線上的設(shè)備。
device pci 
如果你的主板有PCI 總線,就加入這個(gè)選項(xiàng)。使用這個(gè)選項(xiàng)可以自動(dòng)掃描PCI 卡,并在
PCI 到ISA 之間建立通路。
# Floppy drives 
device fdc0 at isa? port IO_FD1 irq 6 drq 2 
device fd0 at fdc0 drive 0 
device fd1 at fdc0 drive 1 
軟盤(pán)控制器:fd0 是A: 盤(pán),fd1 是B: 盤(pán)。ft0 則是連接到軟盤(pán)的QIC-80 磁帶機(jī)。如
果你沒(méi)有上述設(shè)備,就注釋掉這幾行設(shè)置。
device ata 
第9 頁(yè)FreeBSD 使用手冊(cè)
這個(gè)驅(qū)動(dòng)器支持所有ATA 和ATAPI 設(shè)備。你只要在內(nèi)核中加入ata 選項(xiàng),就可以讓內(nèi)核
支持現(xiàn)代計(jì)算機(jī)上的所有PCI ATA/ATAPI 設(shè)備。
device atadisk # ATA disk drives 
這個(gè)是ATAPI 磁盤(pán)驅(qū)動(dòng)器所必須的。
device atapicd # ATAPI CDROM drives 
這個(gè)是ATAPI CDROM 驅(qū)動(dòng)器所必須的。
device atapifd # ATAPI floppy drives 
這個(gè)是ATAPI 軟盤(pán)驅(qū)動(dòng)器所必須的。
device atapist # ATAPI tape drives 
這個(gè)是ATAPI 磁帶機(jī)驅(qū)動(dòng)器所必須的。
options ATA_STATIC_ID #Static device numbering 
這個(gè)可以靜態(tài)分配控制器的編號(hào),也可以動(dòng)態(tài)分配設(shè)備的編號(hào)。
# ATA and ATAPI devices 
device ata0 at isa? port IO_WD1 irq 14 
device ata1 at isa? port IO_WD2 irq 15 
上面的選項(xiàng)用在比較老的,非PCI 的系統(tǒng)中。
# SCSI Controllers 
device ahb # EISA AHA1742 family 
device ahc # AHA2940 and onboard AIC7xxx devices 
device amd # AMD 53C974 (Teckram DC-390(T)) 
device dpt # DPT Smartcache - See LINT for options! 
device isp # Qlogic family 
device ncr # NCR/Symbios Logic 
device sym # NCR/Symbios Logic (newer chipsets) 
device adv0 at isa? 
device adw 
device bt0 at isa? 
device aha0 at isa? 
第10 頁(yè)FreeBSD 使用手冊(cè)
device aic0 at isa? 
SCSI 控制器。可以注釋掉你系統(tǒng)中沒(méi)有的設(shè)備。如果你只有IDE 設(shè)備,你可以把這些
一起刪掉。
# SCSI peripherals 
device scbus # SCSI bus (required) 
device da # Direct access (disks) 
device sa # Sequential Access (tape etc) 
device cd # CD 
device pass # Passthrough device (direct SCSI 
access) 
SCSI 外圍設(shè)備。也可以象上面一樣操作。
# RAID controllers 
device ida # Compaq Smart RAID 
device amr # AMI MegaRAID 
device mlx # Mylex DAC960 family 
支持RAID 控制器。如果你沒(méi)有這些,可以把它們注釋掉或是刪掉。
# atkbdc0 controls both the keyboard and the PS/2 mouse 
device atkbdc0 at isa? port IO_KBD 
鍵盤(pán)控制器atkbdc 提供AT 鍵盤(pán)輸入以及PS/2 指針設(shè)備的I/O 服務(wù)。鍵盤(pán)驅(qū)動(dòng)程序
atkbd 與PS/2 鼠標(biāo)驅(qū)動(dòng)程序psm 需要這個(gè)控制器,所以不要?jiǎng)h除它。
device atkbd0 at atkbdc? irq 1 
atkbd 驅(qū)動(dòng)程序,與atkbdc 控制器一起作用,提供連接到AT 鍵盤(pán)控制器的AT 84 鍵盤(pán)
與AT 加強(qiáng)型鍵盤(pán)的訪問(wèn)服務(wù)。
device psm0 at atkbdc? irq 12 
如果你的鼠標(biāo)連接到PS/2 鼠標(biāo)端口,就使用這個(gè)設(shè)備驅(qū)動(dòng)程序。
device vga0 at isa? 
顯卡驅(qū)動(dòng)。
# splash screen/screen saver 
第11 頁(yè)FreeBSD 使用手冊(cè)
pseudo-device splash 
在啟動(dòng)時(shí)的啟動(dòng)畫(huà)面!屏幕保護(hù)也需要這個(gè)。
# syscons is the default console driver, resembling an SCO console 
device sc0 at isa? 
sc0 是默認(rèn)的console 驅(qū)動(dòng)程序,絕大部分全屏幕程序都通過(guò)termcap 這類terminal 
database library 來(lái)訪問(wèn)console,因此不論你用這個(gè)驅(qū)動(dòng)程序或是VT220 兼容console 
驅(qū)動(dòng)程序vt0,這中間并沒(méi)有太大差別。如果使用sc0,且你在登陸系統(tǒng)后,執(zhí)行全屏幕程
序時(shí)遇到問(wèn)題,請(qǐng)將你的TERM 設(shè)置成“scoansi”。
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver 
#device vt0 at isa? 
#options XSERVER # support for X server on a vt console 
#options FAT_CURSOR # start with block cursor 
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines 
#options PCVT_SCANSET=2 # IBM keyboards are non-std 
這是一個(gè)兼容VT220 的console 驅(qū)動(dòng)程序,并向下兼容VT100/102。在部分與sc0 相沖
突的筆記本計(jì)算機(jī)上,這個(gè)驅(qū)動(dòng)程序運(yùn)作良好。當(dāng)然,當(dāng)你登陸系統(tǒng)時(shí),記得設(shè)置TERM 參
數(shù)為vt100 或是vt220。當(dāng)連接到網(wǎng)絡(luò)上許多計(jì)算機(jī)時(shí),這個(gè)驅(qū)動(dòng)程序也常是很有用的,這
是因?yàn)樵S多的計(jì)算機(jī)上的termcap 或是terminfo 并沒(méi)有sc0 的資料—而vt100 的資料幾乎
所有的平臺(tái)上都支持。
# Power management support (see LINT for more options) 
device apm0 at nexus? disable flags 0x20 # Advanced Power 
Management 
高級(jí)電源管理支持。使用在膝上型電腦上。
# PCCARD (PCMCIA) support 
device card 
device pcic0 at isa? irq 10 port 0x3e0 iomem 0xd0000 
device pcic1 at isa? irq 11 port 0x3e2 iomem 0xd4000 disable 
PCMCIA 支持。如果你使用膝上型電腦,你需要這個(gè)。
第12 頁(yè)FreeBSD 使用手冊(cè)
# Serial (COM) ports 
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 
sio0 到sio3 可看作是MS-DOS 系統(tǒng)中的COM1 到COM4。如果你使用內(nèi)置式的數(shù)據(jù)機(jī),且
占用COM4,而你的系統(tǒng)又有COM2,則你必須修改調(diào)制解調(diào)器的IRQ 為2(IRQ 2 跟IRQ 9 是
一樣的),這樣你才能正常使用調(diào)制解調(diào)器。部分顯示卡(特別是使用S3 芯片的卡),用到
0x*2e8 這個(gè)I/O 地址,而一些便宜的串行卡,沒(méi)辦法正確譯碼16 位的I/O 尋址空間,因此
兩張卡會(huì)沖突,導(dǎo)致COM4 無(wú)法正常使用。每個(gè)串行口都要有一個(gè)唯一的IRQ,所以COM3 與
COM4 默認(rèn)的IRQ 將無(wú)法使用。
# Parallel port 
device ppc0 at isa? irq 7 
ISA-bus 并行接口
device ppbus # Parallel port bus (required) 
提供并行總線的支持。
device lpt # Printer 
提供并口打印機(jī)的支持。
注意: 要使用并口打印機(jī),就必須同時(shí)加入上面三行設(shè)置。
device plip # TCP/IP over parallel 
這是針對(duì)并行網(wǎng)絡(luò)接口的驅(qū)動(dòng)器。
device ppi # Parallel port interface device 
普通用途的I/O (“geek port”) + IEEE1284 I/O。
#device vpo # Requires scbus and da 
這是針對(duì)Iomega Zip 驅(qū)動(dòng)器的。它要求scbus 和da 的支持。最好的執(zhí)行效果是工作在
EPP 1.9 模式。
# PCI Ethernet NICs. 
第13 頁(yè)FreeBSD 使用手冊(cè)
device de # DEC/Intel DC21x4x (``Tulip'') 
device fxp # Intel EtherExpress PRO/100B (82557, 82558) 
device tx # SMC 9432TX (83c170 ``EPIC'') 
device vx # 3Com 3c590, 3c595 (``Vortex'') 
device wx # Intel Gigabit Ethernet Card (``Wiseman'') 
多種PCI 網(wǎng)卡驅(qū)動(dòng)器。注釋或刪除在你系統(tǒng)中沒(méi)有的設(shè)備。
# PCI Ethernet NICs that use the common MII bus controller code. 
device miibus # MII bus support 
MII 總線支持對(duì)于一些PCI 10/100 Ethernet NICs 來(lái)說(shuō)是必需的。
device dc # DEC/Intel 21143 and various workalikes 
device rl # RealTek 8129/8139 
device sf # Adaptec AIC-6915 (``Starfire'') 
device sis # Silicon Integrated Systems SiS 900/SiS 7016 
device ste # Sundance ST201 (D-Link DFE-550TX) 
device tl # Texas Instruments ThunderLAN 
device vr # VIA Rhine, Rhine II 
device wb # Winbond W89C840F 
device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'') 
使用MII 總線控制器代碼的驅(qū)動(dòng)器。
# ISA Ethernet NICs. 
device ed0 at isa? port 0x280 irq 10 iomem 0xd8000 
device ex 
device ep 
# WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really 
# exists only as a PCMCIA device, so there is no ISA attachment needed 
# and resources will always be dynamically assigned by the pccard code. 
device wi 
# Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will 
第14 頁(yè)FreeBSD 使用手冊(cè)
# work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP 
# mode (the factory default). If you set the switches on your ISA 
# card for a manually chosen I/O address and IRQ, you must specify 
# those parameters here. 
device an 
# The probe order of these is presently determined by i386/isa/isa_compat.c. 
device ie0 at isa? port 0x300 irq 10 iomem 0xd0000 
device fe0 at isa? port 0x300 
device le0 at isa? port 0x300 irq 5 iomem 0xd0000 
device lnc0 at isa? port 0x280 irq 10 drq 0 
device cs0 at isa? port 0x300 
device sn0 at isa? port 0x300 irq 10 
# requires PCCARD (PCMCIA) support to be activated 
#device xe0 at isa? 
ISA 以太網(wǎng)驅(qū)動(dòng)器。看看/usr/src/sys/i386/conf/LINT 了解一下哪個(gè)卡被哪個(gè)驅(qū)動(dòng)器
支持。
pseudo-device ether # Ethernet support 
如果你有一個(gè)以太網(wǎng)卡,ether 是必需的。它包含了通用的以太網(wǎng)協(xié)議代碼。
pseudo-device sl 1 # Kernel SLIP 
Sl 是針對(duì)SLIP 支持的。這已經(jīng)完全被PPP 所代替,它是早期使用的協(xié)議。
pseudo-device ppp 1 # Kernel PPP 
ppp 提供內(nèi)核模式(kernel-mode)的PPP 撥號(hào)支持。另外有一個(gè)tun 則是用戶模式
(user-mode)的PPP 支持,tun 較有彈性且功能較多。如果你要使用這個(gè)PPP 驅(qū)動(dòng)程序,請(qǐng)
參考內(nèi)核模式PPP 這一章節(jié)。如同sl,number 設(shè)置系統(tǒng)最多同時(shí)能支持幾個(gè)PPP 連接。
pseudo-device tun # Packet tunnel. 
tun 是使用者模式的PPP 軟件。這個(gè)程序設(shè)置相當(dāng)方便,且速度很快。它有一些特殊的
功能,像是在需要連接時(shí)自動(dòng)撥號(hào)(dial-on-demand)。tun 后面接的數(shù)字設(shè)置系統(tǒng)同時(shí)能支
持幾個(gè)PPP 連接。參看使用者模式PPP 以獲得更多信息。
第15 頁(yè)FreeBSD 使用手冊(cè)
pseudo-device pty # Pseudo-ttys (telnet etc) 
pty 是虛擬的終端機(jī),或仿真的login port。Ctelnet 或rlogin 連接、xterm 以及其它
應(yīng)用程序如emacs 會(huì)用到pty。number 設(shè)置系統(tǒng)的pty 個(gè)數(shù)。系統(tǒng)默認(rèn)值是16,如果你要
提高同時(shí)連接數(shù),可以適當(dāng)增加這個(gè)數(shù)值,最高可達(dá)256 個(gè)。
pseudo-device md # Memory “disks” 
Memory disk pseudo-devices. 
pseudo-device gif 4 # IPv6 and IPv4 tunneling 
這個(gè)執(zhí)行IPv6 與IPv4,IPv4 與IPv6, IPv4 與IPv4, IPv6 與IPv6 之間的轉(zhuǎn)換. 
pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation) 
這個(gè)偽設(shè)備能檢測(cè)到接收到的數(shù)據(jù)包,然后把它們發(fā)送給IPv4/IPv6 翻譯程序。
# The `bpf' pseudo-device enables the Berkeley Packet Filter. 
# Be aware of the administrative consequences of enabling this! 
pseudo-device bpf # Berkeley packet filter 
這是Berkeley 的封包過(guò)濾器。這個(gè)偽設(shè)備允許網(wǎng)絡(luò)接口被放在復(fù)雜的模式上,在網(wǎng)絡(luò)
上捕獲每個(gè)封包。這些封包能被磁盤(pán)捕獲或被tcpdump 程序檢查。
注意:bpf pseudo-device 也可以被dhclient 用來(lái)獲得默認(rèn)路由的IP 地址。如果你使
用DHCP,不要注釋掉這行。
# USB support 
#device uhci # UHCI PCI->USB interface 
#device ohci # OHCI PCI->USB interface 
#device usb # USB Bus (required) 
#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 
第16 頁(yè)FreeBSD 使用手冊(cè)
# USB Ethernet, requires mii 
#device aue # ADMtek USB ethernet 
#device cue # CATC USB ethernet 
#device kue # Kawasaki LSI USB ethernet 
支持多種USB 設(shè)備。更多有關(guān)FreeBSD 支持的設(shè)備請(qǐng)參考
/usr/src/sys/i386/conf/LINT。
9.5 建立設(shè)備的節(jié)點(diǎn)
幾乎內(nèi)核中的每個(gè)設(shè)備在/dev 目錄下都有對(duì)應(yīng)的節(jié)點(diǎn)。這些節(jié)點(diǎn)看上去是些規(guī)則文件, 
但事實(shí)上是程序在使用對(duì)應(yīng)的設(shè)備時(shí),與內(nèi)核聯(lián)系的進(jìn)入點(diǎn)。當(dāng)你一開(kāi)始安裝操作系統(tǒng)時(shí), 
那些可執(zhí)行的外殼腳本/dev/MAKEDEV 就創(chuàng)建了幾乎所有支持的設(shè)備。然而,它并不是建立
所有設(shè)備,所以當(dāng)你加入對(duì)新設(shè)備的支持時(shí),注意確信對(duì)應(yīng)的節(jié)點(diǎn)在這個(gè)目錄下。如果不是, 
就加入它們。這兒是一個(gè)簡(jiǎn)單的例子: 
確信在內(nèi)核中加入了IDE CD-ROM 的支持。可以這樣加入:device acd0 
這意味著你應(yīng)當(dāng)在/dev 目錄下找一些以acd0 為起點(diǎn)的入口,通常后面有一個(gè)字母,象
c 或以r 開(kāi)頭表示這是一個(gè)raw 設(shè)備。那些文件不在那兒,必須改變/dev 目錄然后鍵入: 
# sh MAKEDEV acd0 
當(dāng)這些腳本完成后,你要找一下在/dev 目錄下有acd0c 和racd0c 等幾個(gè)入口,表示程
序已經(jīng)正確執(zhí)行。
以下是加入聲卡節(jié)點(diǎn)的例子: 
# sh MAKEDEV snd0 
注意:當(dāng)創(chuàng)建完諸如聲卡這樣的設(shè)備節(jié)點(diǎn)時(shí),如果其它人有權(quán)訪問(wèn)你的機(jī)器,可能有
必要在/etc/fbtab 文件中添加這些節(jié)點(diǎn)來(lái)保護(hù)系統(tǒng)安全。可看一下fstab 的聯(lián)機(jī)手冊(cè)以了
解更多信息。
依上述的簡(jiǎn)單程序,建立任何不在GENERIC 里的硬件設(shè)備節(jié)點(diǎn)。
注意: 所有的SCSI 控制器都使用一樣的設(shè)備節(jié)點(diǎn),所以你無(wú)須重新建立節(jié)點(diǎn)。另外, 
網(wǎng)卡與SLIP/PPP 虛擬設(shè)備并沒(méi)有任何設(shè)備節(jié)點(diǎn),所以你不必?fù)?dān)心怎么建立節(jié)點(diǎn)。
9.6 如果出現(xiàn)問(wèn)題怎么辦? 
在定制一個(gè)內(nèi)核時(shí),可能會(huì)出現(xiàn)四種問(wèn)題。它們是: 
配置失敗
第17 頁(yè)FreeBSD 使用手冊(cè)
當(dāng)你在你的內(nèi)核描述中看到config 命令失敗,你可能在某個(gè)地方發(fā)生了一個(gè)小錯(cuò)誤。
幸運(yùn)的是,config 會(huì)顯示出錯(cuò)的那一行的行號(hào),你可以用vi 編輯器做修改。例如, 
如果你看到:config:line 17:syntax error 
你可以在vi 中用命令模式輸入17G 來(lái)跳到17 行。比較GENERIC 內(nèi)核或其它參考資料, 
以確定你打?qū)﹃P(guān)鍵字。
編譯錯(cuò)誤
如果編譯失敗,通常會(huì)在你的內(nèi)核描述中提示一個(gè)錯(cuò)誤,但config 并沒(méi)有找出錯(cuò)誤。
另外,查看一下你的配置信息,如果你仍然無(wú)法解決這個(gè)問(wèn)題,可以把你的內(nèi)核配置
信息發(fā)郵件到FreeBSD 普通問(wèn)題郵件列表<freebsd-questions@FreeBSD.org>,它將很快
地被解決。
內(nèi)核無(wú)法啟動(dòng)
如果你的新內(nèi)核無(wú)法啟動(dòng),或無(wú)法識(shí)別你的硬件,不要擔(dān)心!幸運(yùn)的是,BSD 有一個(gè)
解決復(fù)雜內(nèi)核錯(cuò)誤的很好機(jī)制。從FreeBSD 的啟動(dòng)loader 中,選擇一個(gè)你要啟動(dòng)的
內(nèi)核。當(dāng)配置一個(gè)內(nèi)核時(shí),記得在手頭保留一個(gè)能正常啟動(dòng)的內(nèi)核是個(gè)好主意。
在用一個(gè)好的內(nèi)核啟動(dòng)后,你可以檢查一下你的配置文件,再設(shè)法重新建立一個(gè)內(nèi)核。
一個(gè)有幫助的文件是/var/log/messages 文件,它記載了每個(gè)成功啟動(dòng)的所有內(nèi)核信
息。同樣,dmesg 命令會(huì)列出當(dāng)前啟動(dòng)中的內(nèi)核信息。
注意:你在編譯內(nèi)核時(shí),確信保留著一個(gè)GENERIC 或以其它名字命名的內(nèi)核。你不能
僅依靠kernel.old,因?yàn)楫?dāng)你安裝一個(gè)新內(nèi)核時(shí),kernel.old 會(huì)被最后一次安裝的內(nèi)
核所覆蓋。所以,盡快將當(dāng)前正常工作的內(nèi)核移到不能正常工作的內(nèi)核,你可以用ps 
命令查一下。解開(kāi)編譯安裝內(nèi)核文件的正確命令是: 
#chflags noschg /kernel 
另外,如果你要設(shè)定內(nèi)核或其它文件的訪問(wèn)限制,以至它不能被移動(dòng)或修改,可以用
下面的命令: 
#chflags schg /kernel 
內(nèi)核工作,但ps 根本就不工作! 
如果你安裝了一個(gè)不同版本的內(nèi)核到系統(tǒng),例如,在3.x 系統(tǒng)中安裝了4.x 內(nèi)核,許
多系統(tǒng)內(nèi)建的命令象ps 和vmstat 會(huì)根本不工作。你必須重編譯libkvm 庫(kù)以及這些
程序。千萬(wàn)不要隨意從其它系統(tǒng)拷貝不同版本的內(nèi)核來(lái)使用。
第18 頁(yè)
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 慈溪市| 澎湖县| 蕲春县| 汝南县| 高台县| 荥经县| 澄迈县| 辛集市| 三江| 香格里拉县| 河源市| 北票市| 徐闻县| 剑阁县| 峡江县| 闸北区| 毕节市| 连平县| 凤山市| 禄丰县| 石楼县| 兴业县| 云阳县| 石景山区| 苏尼特右旗| 全椒县| 灵宝市| 苍梧县| 西充县| 朝阳县| 太仆寺旗| 儋州市| 塔城市| 丰台区| 高州市| 绩溪县| 平乐县| 郸城县| 渭南市| 宽城| 游戏|