9.4 配置文件
內核設置的格式是很簡單的,每一行包含了一個關鍵詞(keyword) 與一個或多個參數, 而大多數的設置都只包含一個參數。#號之后的文字都是注釋,會被程序忽略掉。下面的幾個小節,將依次介紹每個列在GENERIC 中的關鍵詞(keyword),雖然有些相關主題(如網絡)的關鍵詞會放在同一小節,但是這些關鍵詞可能位于GENERIC 的很多地方。詳細的各個選項(option)列表,可以看和GENERIC文件同一目錄下的LINT文件;它列出了絕大部分可能的設備及其選項(options),且有更詳細的注釋。如果你不能確定某一行設定的目的是否必要,請先看LINT。
注意:在5。x及其以后的版本里,LINT文件將不復存在。在NOTES文件中有和體系結構相關的參數說明。一 些不依賴于特定體系結構的參數可以在/usr/src/sys/conf/NOTES文件中查看。在這里回顧一下這些參數也許 比較明智。
下面是一個帶有很多額外注釋的GENERIC 內核配置文件的例子。這個例子與/usr/src/sys/i386/conf/GENERIC 非常相似。有關內核配置的***詳細的選項,請參看/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/doc/en_US ... onfig-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# latest information.## An exhaustive list of options and more detailed explanations of the# device lines is also present in the ../../conf/NOTES and NOTES files.# If you are in doubt as to the purpose or necessity of a line, check first# in NOTES.## $FreeBSD: src/sys/i386/conf/GENERIC,v 1.380 2003/03/29 13:36:41 mdodd Exp $
下面這個選項在每個內核中都要有:
machine i386
它指明了機器的硬件體系結構。它必須是i386, pc98, sparc64, alpha, ia64, amd64,和powerpc當中的一 種。
cpu I486_CPUcpu I586_CPUcpu I686_CPU
上面的選項指出了在你的系統中所用的CPU 類型。你可以使用多個CPU 類型(例如, 你不確信你使用的是I586_CPU 還是I686_CPU), 然而,對于一個定制的內核,******是只指定你所擁有的CPU 類型。如果你不能確定你的CPU 類型,你可以通過/var/run/dmesg.boot文件中的你的啟動信 息來確定。
freebsd對386級別的cpu的支持代碼仍然存在于內核源代碼中,但默認情況下它并未啟用(STABLE 和CURRENT 版都是)。這意味著要在一386機器上安裝freebsd,有以下方式可行:
* 先安裝一個舊版的freebsd,然后從源代碼進行系統重建,具體方法見第9章第3節.
* 通過使用預編譯的/usr/obj,在新機型上編譯userland和內核,而安裝在386機器上。(具體方法21章5節).
* 創建你自己的包含對386cpu支持的FreeBSD安裝光盤這幾種方法中,******種是***簡單的,但是它需要你的386上有比較大的空閑磁盤空間,而這一點比較難滿足。
The first of these options is probably the easiest of all, but you willneed a lot of disk space on a 386-class machine which may be difficult tofind.
ident GENERIC
ident 是一個內核的標識符。你應該把它改成想給內核取的名字,例如,如果一直是按照以上的說明做的,那 么該改為MYKERNEL。放在ident 后的參數,將在你用這個內核啟動時顯示在屏幕上。給新內核起個和通常核( 比如你想建實驗性質的kernel)不同的名稱是個不錯的做法。注意:象machine 與cpu 這兩個設置。如果你的內核名稱包含數字,請記得用雙引號把它括起來。內核名稱將會使用-D 參數傳給編譯器,所以不要用像DEBUG 或是其它可能干擾編譯器的機器、CPU 名稱,如vax 。
maxusers n
maxusers值的大小定義了重要的系統表的大小。這個數值大概地和你機器的同時使用者的數量相等。
從freebsd4。5起,如果它被設置為0,那么系統會自動進行調整。在5。x中,如果這個值沒有指定,那么它默 認是0。如果你使用的4。5之前的版本,或者你想自己定義它的大小,那么它起碼要設置為4 個以上,特別是 你要執行X Window 或是編譯程序。因為maxusers 值決定了系統******可同時運行的進程數(processes),算 法是20 + 16 * maxusers 。如果你設置maxusers 值是1,則你的系統只能同時存在36 個進程 ,包括18 個(或更多)系統啟動要占去的進程數; 如果你使用了X Window ,則又要用至少15 個進程。甚至閱讀一個man page 也會使用九個processes 來進行過濾、解壓縮、然后顯示文件。設置maxusers=64 ,則系統可以同時有1044 個processes ,這樣差不多對所有應用都足夠的了 。當你執行程序時,出現“proc table full ”這樣的錯誤信息,或者你要建一個同時會有很多人來訪問的網站(如ftp.freebsd.org) 時,你就要增加這個設置的值,然后重新編譯內核。
注意: maxuser 這個參數并不限制可以登陸你系統的用戶的數目。它只是設置一些表的大小來合理的評估系統 可能的******用戶數,以及它們每個人所能有的***多的進程數。有一個關鍵詞(pseudo-device)的值則真的限 制了可以同時遠程連接(remote logins) 的人數,如:pseudo-device pty 16 。
# Floating point support - do not disable.device npx0 at nexus? port IO_NPX irq 13
npx0 是連接FreeBSD 中浮點運算處理器的一個接口。不論你有硬件的浮點運算處理器還是使用軟件進行仿真,都需要這個設置。這個設置是不可選的。
# Pseudo devices - the number indicates how many units to allocate.pseudo-device loop # Network loopback
這是一個通用的TCP/IP 接口。如果你用telnet 或ftp 連到localhost( 等同于127.0.0.1) ,則該連接會通過這個虛擬設備連回來。這是一個必需的設置。
以下內容或多或少都有選項。它們下面或之后的信息可供參考。
#To statically compile in device wiring instead of /boot/device.hints#hints "GENERIC.hints" #Default places to look for devices.
在freebsd5。x及其更新版本中,文件device.hints用于設置設備驅動程序參數。默認情況下 loader將字系統 啟動時檢查/boot/device.hints文件。如果直接把這些隱含參數內容編譯到內核中,那么就沒有必要在/boot 中創建一個device.hints。
#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols
為節約所需空間,通常freebsd內核構建進程并不產生從編譯到鏈接產生目標內核過程中的調試信息。如果你 正測試 -CURRENT 分支的內核或者你想開發屬于自己的freebsd內核,那你就不該注銷掉這行。它使用 -g選 項,使得代碼在被gcc處理時產生調試信息。如果你在使用傳統的方法構建內核,那么config -g 選項也可實現該功能 (具體情況參考9章3小節).
options MATH_EMULATE #Support for x87 emulation
如果你的計算機沒有浮點運算處理器(386 或486SX) ,這行將使得內核提供軟件仿真的浮點運算處理器。如果 你用的是486DX 或是386SX 、486SX( 還加裝了387 、487芯片)或更高的(Pentium 、Pentium II 等)則不需 要這行設置。
注意: 這個仿真的運算處理器并不是很******。如果你沒有浮點運算器,但需要較高的精度,你可以改用GPL_MATH_EMULATE 參數,這將會使用GNU 的浮點運算仿真器。因為GNU 使用許可的關 系,這個仿真器不是系統默認值。
在5.x中,運算模擬器默認并不被支持,因為在舊的cpu中,沒有實際浮點運算器的是相當少見的。在許多情 況下,并不被GENERIC 內核支持,除非使用了附加選項。
options INET #InterNETworking
網絡支持。即使你不打算連上網絡,也要留著這個選項。對于大量的程序,需要至少有個loopback網絡(例如 :用pc創建網絡鏈接)。所以這個選項基本上是強制的。
options INET6 #IPv6 communications protocols
這個啟用IPv6 通訊協議
options FFS #Berkeley Fast Filesystemoptions FFS_ROOT #FFS usable as root device [keep this!]
***基本的硬盤文件系統。要從硬盤啟動,就得留著它。
注意: 在FreeBSD 5.X中, FFS_ROOT 已不是必須的了。
options UFS_ACL #Support for access control lists
這個選項目前只在5。x中可以使用,它使內核支持訪問控制。這依賴于使用于使用UFS2 及其附加特性;具體 特性在節 10.13有詳細敘述。默認支持訪問控制列表(ACLs), 如果以前在文件系統上使用了訪問控制列表, 那么******不要去除該它,因為去除,很可能出現無法預知的問題。
options UFS_DIRHASH #Improve performance on big directories
這個選項可以在有大量目錄文件時,加快磁盤操作速度,而代價就時使用更大的內存。它對大型服務器,或 交互式工作站比較有用,而如果是個小型的系統,如一個防火墻,則沒必要使用它,因為額外的內存使用換來 的是磁盤速度的一點點提升。
options SOFTUPDATES #Enable FFS Soft Updates support
使內核支持Soft Updates, 以加快磁盤的寫入速度。要真正使用該功能,還得打開分區的相應參數。通過 mount命令的輸出,可以看到磁盤的 soft-updates 是否已經打開。如果沒打開,則可通過tunefs(對現有的 文件系統)或newfs(對新文件系統)命令進行調整以實現對soft-updates的支持。
options MFS #Memory Filesystemoptions MD_ROOT #MD is a potential root device
Memory-mapped 文件系統。RAM disk ,用于存放臨時文件以提高速度。有很大的swap 空間,使用這個選項會比較有用。/tmp是 掛MFS 分區比較好的地方,因為很多程序都會在此存 放臨時文件。要把/tmp掛到MFS RAM disk,可以修改/etc/fstab,加入以下一行::
/dev/ad1s2b /tmp mfs rw 0 0
現在重啟動,或是運行mount /tmp 命令:
注意: 在5.X中, 使用md-backed UFS 文件系統 替代MFS(配置memory-backed 文件系統的有關資料在 mdconfig 和mdmfs的手冊頁里,在12章10節也有)。 因此MFS選項在5。x中已經沒有了。
options NFS #Network Filesystemoptions NFS_ROOT #NFS usable as root device, NFS required
網絡文件系統,若不需要通過TCP/IP掛載其它UNIX機器的文件系統,可以用 # 號注釋掉這行設置。
options MSDOSFS #MSDOS Filesystem
MS-DOS 文件系統。除非要在啟動時掛上一個DOS 格式分區,否則你可以放心地把這行注釋掉。如前所述,在 ******次掛上一個DOS 分區時,內核將會自動加載模塊來支持它。此外,mtools 是個相當不錯的軟件(可在 ports 里面找到), 它支持不用掛入或卸載,就可訪問DOS 軟盤(而且也不需要MSDOSFS 的支持)。
options CD9660 #ISO 9660 Filesystemoptions CD9660_ROOT #CD-ROM usable as root, CD9660 required
CD-ROM 使用的ISO 9660 文件系統。如果你沒有光驅,或是很少用光驅,可以注釋掉這一行(在******次掛CD-ROM時,內核會動態加載模塊以支持它)。音樂CD 則不需要用到這個文件系統。
options PROCFS #Process filesystem
process file system。這是一個虛擬的文件系統,掛在/proc 下,允許程序(如ps) 獲取有關正在執行的進 程的信息。在5.x中,PROCFS已經不是那么的重要了,因為很多調試和監視工具已經能在無PROCFS的情況下工 作。 另外,要在5.X-CURRENT下用PROCFS,還必須有PSEUDOFS的支持:
options PSEUDOFS #Pseudo-filesystem framework
在FreeBSD 4.X中,沒有PSEUDOFS。在5。x中,默認將不使用進程文件系統,這一點不象freebsd4.x。
options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]
使系統兼容4.3BSD 。掉這一行,有些程序將無法正常運行。
options COMPAT_FREEBSD4 #Compatible with FreeBSD4
5.x的i386及Alpha版,需要這個選項來支持一些為舊版系統編譯的調用了舊版接口的軟件。推薦在所有可能 運行舊應用程序的i386和Alpha 系統(僅5.x中)中保留此選項;但在ia64 和Sparc64? 平臺里不需要該選\項。
options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI
這行設置使內核等待15 秒鐘,以供SCSI 控制器掃描你計算機上的SCSI 設備。如果只有IDE 硬盤,則可不理會這個設置,另外,也可降低這個值,比如降到五秒,以加快啟動的速度。如果你發現降低后,FreeBSD 無法正確辨認你的SCSI 設備,那么你該提高這個值,延長 等待時間。
options UCONSOLE #Allow users to grab the console
允許使用者獲取控制臺,對X Window 用戶很有用。舉例來說,你可以輸入xterm -C 來打開一個xterm終端 ,這個窗口將顯示任何write 、talk 等命令的信息,以及其它你收到的信息。當然, kernel 輸出的信息也會在這里出現。
注意: 在FreeBSD 5.X中, UCONSOLE 已經不使必要選項。
options USERCONFIG #boot -c editor
這個選項允許你從啟動菜單啟動配置編輯器。
options VISUAL_USERCONFIG #visual boot -c editor
這個選項允許你從啟動菜單啟動可視化的配置編輯器。
注意: 從FreeBSD 5.0 開始,USERCONFIG選項和新的device.hints方式沖突。具體內容可以看7章5節。
options KTRACE #ktrace(1) support
這個選項啟用內核進程跟蹤,在調試時很有用。
options SYSVSHM #SYSV-style shared memory
提供System V Shared memory的支持,***常用到它的應該是X Window 的XSHM 擴展,不少繪圖相關程序會自動使用它來提供額外的速度。如果你要使用X Window ,你******加入這個選項。
options SYSVSEM #SYSV-style semaphores
System V semaphores的支持,一般用不到,但它只在kernel 中占用幾百個字節的空間。
options SYSVMSG #SYSV-style message queues
System V messages的支持,一樣的,只占用kernel 幾百字節的空間。
注意: ipcs 命令可以顯示出所有使用到上述三個System V 功能的processes 。
options P1003_1B #Posix P1003_1B real-time extensionsoptions _KPOSIX_PRIORITY_SCHEDULING
在1993 POSIX 中添加的實時擴展。在ports中有些應用程序會用到它們(比如Star Office )。
注意: 在 FreeBSD 5.X中, 此項功能已經被 _KPOSIX_PRIORITY_SCHEDULING 選項所取代,并且P1003_1B也不 再是必選項了。
options ICMP_BANDLIM #Rate limit bad replies
這個選項啟用基于帶寬限制的ICMP 的錯誤響應。你使用這個選項可以幫助你保護你的機器免受拒絕式服務攻擊。
注意: FreeBSD 5.X, 已經默認支持這種功能,而不需要有ICMP_BANDLIM選項。
# To make an SMP kernel, the next two are needed#options SMP # Symmetric MultiProcessor Kernel#options APIC_IO # Symmetric (APIC) I/O
上面兩個選項是支持SMP所必需 。
device isa
所有FreeBSD 支持的PC 都需要這行設置。如果你是IBM PS/2 ( 微信道架構,MCA)計算機,FreeBSD提供的支 持就比較有限 。有關對MCA的支持,可以從/usr/src/sys/i386/conf/LINT找到答案。
device eisa
如果你的主機板上有EISA 總線,加入這個設置。使用這個選項可以自動掃描并設置所有連接在EISA 總線上的設備。
device pci
如果你的主板有PCI 總線, 就加入這個選項。使用這個選項可以自動掃描PCI卡,并在PCI 到ISA 之間建立通路。
device agp
提供AGP顯卡支持. 有AGP或AGP GART口的主板需要。
# Floppy drivesdevice fdc0 at isa? port IO_FD1 irq 6 drq 2device fd0 at fdc0 drive 0device fd1 at fdc0 drive 1
軟盤控制器:fd0 是A: 盤,fd1 是B: 盤。
device ata
提供所有ATA 和ATAPI 設備支持。你只要在內核中加入一個ata 選項,就可以讓內核支持現代計算機上的所有 PCI ATA/ATAPI 設備。
device atadisk # ATA disk drives
ATAPI 磁盤驅動器所必須,前提是有device ata項。
device atapicd # ATAPI CDROM drives
ATAPI CDROM 驅動器所必須,前提是有device ata項。
device atapifd # ATAPI floppy drives
ATAPI 軟盤驅動器所必須,前提是有device ata項。
device atapist # ATAPI tape drives
ATAPI 磁帶機驅動器所必須,前提是有device ata項。
options ATA_STATIC_ID #Static device numbering
它使得靜態地分配控制器的編號(比如,舊的驅動器),當然設備的編號也可以動態分配。
# ATA and ATAPI devicesdevice ata0 at isa? port IO_WD1 irq 14device ata1 at isa? port IO_WD2 irq 15
上面的選項用在比較老的,非PCI 的系統中。
# SCSI Controllersdevice ahb # EISA AHA1742 familydevice ahc # AHA2940 and onboard AIC7xxx devicesdevice amd # AMD 53C974 (Teckram DC-390(T))device dpt # DPT Smartcache - See LINT for options!device isp # Qlogic familydevice ncr # NCR/Symbios Logicdevice sym # NCR/Symbios Logic (newer chipsets)
device adv0 at isa?device adwdevice bt0 at isa?device aha0 at isa?device aic0 at isa?
SCSI 控制器。注釋掉你系統中沒有的設備。如果你只有IDE 設備,你可以把這些全部刪掉。
# SCSI peripheralsdevice scbus # SCSI bus (required)device da # Direct Access (disks)device sa # Sequential Access (tape etc)device cd # CDdevice pass # Passthrough device (direct SCSIaccess)
SCSI外圍設備。注釋掉你系統中沒有的設備。如果你只有IDE設備,你可以把這些全部刪掉。
# RAID controllersdevice ida # Compaq Smart RAIDdevice amr # AMI MegaRAIDdevice mlx # Mylex DAC960 family
RAID 控制器支持。如果你沒有,可以把它們注釋掉或是刪掉。
# atkbdc0 controls both the keyboard and the PS/2 mousedevice atkbdc0 at isa? port IO_KBD
鍵盤控制器(atkbdc)提供AT 鍵盤以及PS/2 定點設備的I/O 服務。鍵盤驅動程序(atkbd)與PS/2 定點設備驅動程序(psm)需要它。
device atkbd0 at atkbdc? irq 1
atkbd 驅動,與atkbdc 控制器一起作用,提供連接到AT 鍵盤控制器的AT 84 鍵盤與AT 加強型鍵盤的訪問。
device psm0 at atkbdc? irq 12
如果你的鼠標插在PS/2 鼠標端口,就使用這個設備驅動程序。
device vga0 at isa?
顯卡驅動。
# splash screen/screen saverpseudo-device splash
啟動畫面!屏保也需要它。
# syscons is the default console driver, resembling an SCO consoledevice sc0 at isa?
sc0 是默認的控制臺驅動,類似于SCO地控制臺。絕大部分全屏幕程序都通過termcap這類terminal database library 來訪問console ,因此用這個驅動程序或是VT220 兼容的console 驅動程序vt0,沒太大差別。使用sc0的情況下,如果登陸系統后,執行全屏幕程序有問題,則該把你的TERM 變量設置成“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
這是一個兼容VT220 的console 驅動程序,并向下兼容VT100/102 。在部分與sc0 不兼容的筆記本電腦上, 它能運作良好。當然,當你登陸系統時,記得設置TERM 參數為vt100 或是vt220 。當連接到網絡上許多不同 類型計算機時,這個驅動程序也常是很有用的,這是因為許多的計算機上的termcap 或是terminfo 并不支持 sc0 —而vt100 的資料幾乎所有的平臺上都支持。
# Power management support (see LINT for more options)device apm0 at nexus? disable flags 0x20 # Advanced Power Management
高級電源管理支持。多用在筆記本電腦上。
# PCCARD (PCMCIA) supportdevice carddevice pcic0 at isa? irq 10 port 0x3e0 iomem 0xd0000device pcic1 at isa? irq 11 port 0x3e2 iomem 0xd4000 disable
PCMCIA 支持。只用于筆記本電腦上。
# Serial (COM) portsdevice sio0 at isa? port IO_COM1 flags 0x10 irq 4device sio1 at isa? port IO_COM2 irq 3device sio2 at isa? disable port IO_COM3 irq 5device sio3 at isa? disable port IO_COM4 irq 9
這四個串口,可看作是MS-DOS 系統中的COM1 到COM4 。
注意:如果你的內貓占用COM4,并且串口占用COM2, 則你必須修改調制解調器的IRQ為2(IRQ 2 跟IRQ 9 是 一樣的),這樣你才能在freebsd中正常使用調制解調器。如果你用的時multiport的串口卡,則應該參考sio的 man手冊。部分顯示卡(特別是使用S3 芯片的),用到I/O 地址0x*2e8 ,而一些便宜的串行卡,不能正確譯碼16 位的I/O 尋址空間,因此它們會沖突,導致COM4 無法正常使用。
每個串行口都要有一個******的IRQ(除非你用的時支持共享中斷的multiport卡) ,所以COM3 與COM4 默認的 IRQ 無法使用。
# Parallel portdevice ppc0 at isa? irq 7
ISA總線 并行接口
device ppbus # Parallel port bus (required)
提供并行總線的支持。
device lpt # Printer
提供并口打印機的支持。
注意: 要使用并口打印機,就必須同時加入上面三行設置。
device plip # TCP/IP over parallel
提供并行網絡接口的支持。
device ppi # Parallel port interface device
普通用途的I/O (“geek port”) + IEEE1284 I/O 。
#device vpo # Requires scbus and da
這是針對Iomega Zip 驅動器的。它要求scbus 和da 的支持。工作在EPP 1.9 模式執行效果******。
# PCI Ethernet NICs.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 網卡驅動器。注釋或刪除在你系統中沒有的設備。
# PCI Ethernet NICs that use the common MII bus controller code.device miibus # MII bus support
MII總線支持,對于部分PCI 10/100 Ethernet 網卡來說是必需的,也就是那些使用類似MII傳輸方式操作的 網卡。 加miibus驅動到內核配置中,以實現對普通miibus API的支持及所有的PHY驅動,包括一種不能被特 定驅動明確處理的PHY的通用驅動。
device dc # DEC/Intel 21143 and various workalikesdevice rl # RealTek 8129/8139device sf # Adaptec AIC-6915 (``Starfire'')device sis # Silicon Integrated Systems SiS 900/SiS 7016device ste # Sundance ST201 (D-Link DFE-550TX)device tl # Texas Instruments ThunderLANdevice vr # VIA Rhine, Rhine IIdevice wb # Winbond W89C840Fdevice xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')
驅動,使用MII 總線控制器代碼。
# ISA Ethernet NICs.device ed0 at isa? port 0x280 irq 10 iomem 0xd8000device exdevice 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# 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 0xd0000device fe0 at isa? port 0x300device le0 at isa? port 0x300 irq 5 iomem 0xd0000device lnc0 at isa? port 0x280 irq 10 drq 0device cs0 at isa? port 0x300device sn0 at isa? port 0x300 irq 10# requires PCCARD (PCMCIA) support to be activated#device xe0 at isa?
ISA 以太網驅動器。看看/usr/src/sys/i386/conf/LINT 了解一下哪個卡被哪個驅動所支持。
pseudo-device ether # Ethernet support
僅有以太網卡時才需要。它包含了通用的以太網協議代碼。
pseudo-device sl 1 # Kernel SLIP
Sl 是對SLIP 提供支持的。這已經完全被PPP 所代替,ppp更易于配置,更適合modem-to-modem的連接,功能 也更強大。s1后面的數值設置系統支持多少個SLIP同時連接。pseudo-device ppp 1 # Kernel PPP
使內核支持PPP 撥號連接。另外有一個tun 則是用戶模式的PPP工具,tun 較有彈性且功能較多。如果你要使 用這個PPP 驅動程序,請參考內核模式PPP 這一章節。ppp后面的數字設置系統能支持幾個PPP 同時連接。
pseudo-device tun # Packet tunnel.
用戶模式的PPP 軟件需要。tun 后面接的數字設置系統同時能支持幾個PPP 連接。參看本書用戶模式PPP 以 節以獲得更多信息。
pseudo-device pty # Pseudo-ttys (telnet etc)
pty 是虛擬終端,或仿真的登陸入口 。Ctelnet 或rlogin 連接、xterm 以及其它應用程序如Emacs 會用到pty 。number 設置系統要創建的pty 個數。如果有同時有超過16個xterm窗口或者 是遠程登陸,那么你可以適當增加這個數值,******可達256 個。
pseudo-device md # Memory ``disks''
內存磁盤 pseudo.
pseudo-device gif
or
pseudo-device gif 4 # IPv6 and IPv4 tunneling
它執行IPv6 與 IPv4,IPv4 與IPv6, IPv4 與IPv4, IPv6 與IPv6 之間的轉換. 從FreeBSD 4.4開始,設備gif設備使自動繁殖(``auto-cloning'')的,應該使用******個例子(沒有指定gif 數值的) 。 早期的FreeBSD需要指定數值。
pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation)
這個偽設備能接收發給它的數據包,然后把它們發送給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 的封包過濾器。這個虛擬設備能將網絡接口設置成混雜模式,并在廣播網絡(如,以太網)上捕獲所有封包。這些封包能被存到磁盤上或被tcpdump 程序檢查。
注意:bpf pseudo-device 也可以被dhclient 用來獲得默認路由(網關)的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# USB Ethernet, requires mii#device aue # ADMtek USB ethernet#device cue # CATC USB ethernet#device kue # Kawasaki LSI USB ethernet
支持多種USB 設備。
更多有關FreeBSD 支持的設備請參考/usr/src/sys/i386/conf/LINT 。
----------------------------------------------------------------------
9.4.1 大內存配置 (PAE:物理內存擴展)
大內存的機器是特指內存數超過4G(被用戶和內核邏輯地址總和所限)的機器。為解決這個問題,Intel在 Pentium Pro及其之后的CPU中加入了36位物理地址空間尋址能力。
加入了PAE功能的Intel Pentium Pro及其后的cpu允許內存******可配置到64G。FreeBSD(4。x系列從4。 9RELEASE開始,5.X系列從5.1-RELEASE開始)通過內核配置參數PAE提供這種容量擴展支持。由于年存儲體系 結構的局限性,多于和少于4g沒多少差別; 超過4g的那部分內存只是添加到可用內存池里。
要加入PAE支持,只要在內核配置文件中加入如下一行即可:
options PAE
注意: FreeBSD 中的PAE支持只對Intel IA-32 處理器有效。另外,FreeBSD中的PAE支持還沒有經過廣泛 的測試, 應該和其它stable版的特性一樣看做是beta級別的。
FreeBSD中的PAE支持有以下一些局限:
* 進程沒辦法訪問超過4g的內存。
* 由于構建模塊和內核的框架(framework)的不同,KLD不能在使用了PAE的內核中使用。
* 不使用bus_dma接口設備驅動,在使用了PAE支持的內核上,可能引起data corruption,并且不被推薦 使用此類驅動。因此,在支持PAE的5。x中,內核將拒絕所有對PAE而言無法識別的驅動。
* 有些系統參數能依據總的可用內存調節系統內存資源的使用。 這些微調不需要依據PAE系統的內存大 小來分配。舉一個kern.maxvnodes sysctl的例子,它控制了內核******允許的vnodes數。 調整它以及其它類似 參數需要慎重考慮,以設置為一個合理的數值。
* 也許應該增大內核虛擬地址空間或者說是減少所有對內核資源的嚴重消耗,以避免KVM不夠用。內核參 數KVA_PAGES 能用來增加KVA空間的大小.
對于所關心的性能及穩定性的問題,可以查看tuning的man手冊。pae的man手冊有FreeBSD的PAE支持******信息 。
----------------------------------------------------------------------
9.5 Making Device Nodes
注意:5。0或其后續版本的用戶應該略過這一節。因為它們使用devfs來自動的分派設備節點。
幾乎內核中的每個設備在/dev 目錄下都有對應的節點。這些節點看上去是些普通文件,但事實上是程序在使用對應的設備時,與內核聯系的接入點。當你一開始安裝操作系統時,腳本/dev/MAKEDEV就已經執行,并創建了常見的支持的設備節點。然而,它并沒有建立所有設備,所以當你加入對新設備的支持時,注意確信對應的節點在這個目錄下。如果沒有,就加入它們。這兒是一個簡單的例子:
假設在內核中加入IDE CD-ROM 的支持。可以這樣加入:
device acd0
這意味著你該在/dev 目錄下找一些以acd0 為文件名的開頭的文件,通常是后面跟一個字母,象c或是以r開頭(表示這是一個raw 設備).那些文件不存在,則必須到/dev目錄執行以下命令:
# sh MAKEDEV acd0
當這些腳本完成后,在/dev 目錄下有acd0c 和racd0c 等幾個入口文件,表示程序已經正確執行。
以下是加入聲卡節點的例子:
# sh MAKEDEV snd0
注意:當創建完諸如聲卡這樣的設備節點時,如果其它人有權訪問你的機器,可能有必要在/etc/fbtab 文件中添加這些節點來保護系統安全。具體實施可以參考fstab的手冊頁。
依上述的方法,建立所有不在GENERIC 里的硬件設備節點。
注意: 所有的SCSI 控制器都使用一樣的設備節點,所以你無須重新建立節點。另外,網卡與SLIP/PPP 虛擬設備并沒有任何設備節點,所以你不必擔心節點問題。