新浪網

  新浪首頁 > 科技時代 > FreeBSD使用大全連載 > FreeBSD連載(60):缺省內核配置選項
 


FreeBSD連載(60):缺省內核配置選項

http://www.sina.com.cn 2000年1月3日 11:23 王波

缺省內核配置選項

  通用內核的設置文件中包含了很多比較重要的設置選項,這里的設置選項 也是最常用的配置選項,為了編譯出適合自己計算機的設置,就需要了解這個文件 中的設置選項。

#
# GENERIC -- Generic machine with WD/AHx/NCR/BTx family disks
#
# For more information read the handbook part System Administration -> 
# Configuring the FreeBSD Kernel -> The Configuration File. 
# The handbook is available in /usr/share/doc/handbook or online as
# latest version from the FreeBSD World Wide Web server 
# <URL:http://www.FreeBSD.ORG/>
#
# An exhaustive list of options and more detailed explanations of the 
# device lines is present in the ./LINT configuration file. If you are 
# in doubt as to the purpose or necessity of a line, check first in LINT.
#
#	$Id: GENERIC,v 1.143.2.2 1999/02/15 02:50:07 des Exp $

machine		"i386"
cpu		"I386_CPU"
cpu		"I486_CPU"
cpu		"I586_CPU"
cpu		"I686_CPU"
ident		GENERIC
maxusers	32

  machine行定義了系統所使用的計算機體系結構,對于運行在個人 計算機平台上的FreeBSD,此參數值只能是i386,運行在其他平台上的BSD系統將使 用其他相應設置。注意由于這個配置參數中混用了字母和數字,因此需要用引號將 其括起來。這種情況在配置文件中經常會碰到,如果不使用雙引號括起來,配置程 序就不能區分它是用于標識字符串還是用于數值設置,造成語法錯誤。

  可以多個cpu參數描述了處理器類型,可以使用 ”I386_CPU” 、 “I486_CPU” 、 “I586_CPU” 、 “I686_CPU” 四種類型。 “I386_CPU” 是最低配置,缺 省的GENERIC配置文件中將這些類型全部列出,這使得這個通用內核在任何個人計算 機系統下都能正常運行,但最好根據處理器類型進行針對配置。由于處理器是向下兼 容的,但不能向上兼容,因此如果配置的參數高于計算機實際處理器類型,內核就不 能正常啟動和工作。

  對于586以上的處理器,各個兼容廠商的標記方法各不相同,因此必須小心選擇 正確的處理器類型,以避免選擇錯誤。可以使用系統啟動時的檢測信息來判斷處理器的 類型:

# dmesg | grep ^CPU

  ident用于標識內核,每個內核都應該具有自己的標識,GENERIC內核的 標識為GENERIC,而自己定制的內核可以在這一行中定義自己的標識。由于系統中可能 存在有多個內核,因此使用這個標識來幫助區分不同的內核。這個標識在系統啟動時將 顯示在啟動屏幕上。

  maxusers這個值并不直接限制FreeBSD的用戶數目,而是定義了內核中的 一些非常重要的系統表格大小,這些表格會隨系統中進程的增加和資源的被占用會逐漸 被填滿,而系統中的用戶和進程數量有一定的關系,因此這個值大概等于系統同時允許 的用戶數目。但是當用戶使用X Winodw或其他產生了大量進程和應用程序時,即使只有 很少的用戶,系統表格也很容易被填滿。因此這個值不能設置的太小。尤其是要將FreeBSD 用作服務器的時候,服務器會啟動大量的進程,往往要增大這個值以提升系統對高負載的 支持能力。

  系統的進程表的大小為:20+16*maxusers,去除系統啟動時自動啟動的一些守護 進程數目,因此可以大致估計出系統中空余的進程表項。進而估計出系統中還可以容納的 進程數目,因此就可以根據需求改變這個值的設置。

options		MATH_EMULATE		#Support for x87 emulation
options		INET			#InterNETworking
options		FFS			#Berkeley Fast Filesystem
options		FFS_ROOT		#FFS usable as root device [keep this!]
options		MFS			#Memory Filesystem
options		MFS_ROOT		#MFS usable as root device, "MFS" req'ed
options		NFS			#Network Filesystem
options		NFS_ROOT		#NFS usable as root device, "NFS" req'ed
options		MSDOSFS			#MSDOS Filesystem
options		"CD9660"		#ISO 9660 Filesystem
options		"CD9660_ROOT"		#CD-ROM usable as root. "CD9660" req'ed
options		PROCFS			#Process filesystem
options		"COMPAT_43"		#Compatible with BSD 4.3 [KEEP THIS!]
options		SCSI_DELAY=15000	#Be pessimistic about Joe SCSI device
options		UCONSOLE		#Allow users to grab the console
options		FAILSAFE		#Be conservative
options		USERCONFIG		#boot -c editor
options		VISUAL_USERCONFIG	#visual boot -c editor

config		kernel	root on wd0

  MATH_EMULATE選項是一個x87浮點運算模擬器,當計算機中沒有x87協處理 器時才需要使用。當前586級以上處理器的處理器內部均已集成了浮點運算器件,因此除非 使用386芯片或部分低檔486芯片,內核配置并不需要這種模擬功能。此外,另一個具有相 同功能的選項為GPL_MATH_EMULATE,這個選項性能更好,只是它使用GNU的數學函 數代碼,而GNU公用許可比BSD許可要求更嚴格。因為這個版權的原因,缺省使用 MATH_EMULATE,這保証FreeBSD可以只以二進制形式向外發布,而不違反GNU許可。 由于兩個選項功能相同,只能任選一種,不能同時使用這兩個選項。

  INET選項定義了基本的TCP/IP支持,由于FreeBSD是網絡操作系統,因此這 是最基本的選項。

  FFS為BSD快速文件系統,即UFS文件系統,這是FreeBSD使用的基本文件系 統。FFS_ROOT用于在UFS系統上啟動系統, 允許將UFS文件系統用作根文件系統。 由于UFS是FreeBSD使用的最基本的文件系統,因此應該設置FFS_ROOT,以使系統能夠從磁盤 上正常啟動。

  NFS為Sun公司開發的網絡文件系統,它是Unix之間共享文件系統一種事實標 准。NFS文件系統也可以用作根文件系統,這通過NFS_ROOT選項進行定義,使得可以 配置FreeBSD無盤工作站,無盤的FreeBSD系統可以用于專用X終端等特殊場合。

  "CD9660"為ISO 9660 格式的CD-Rom文件系統,使用它訪問CD-Rom上的文件系 統。"CD9660_ROOT"使得可以用光盤作根文件系統

  MFS為內存映射文件系統,可以將內存映射為文件系統,改善文件系統的性能, 當然這只適合有大量物理內存和交換空間的系統。也可以使用mfs類型來將交換分區安裝到某 個目錄上,保存一些臨時文件。例如,系統的交換分區為wd0s3b,那么可以使用 “mount -t mfs /dev/wd0s3b /tmp” ,將交換分區安裝到/tmp目錄上。由于tmp是臨時目錄, 被程序用來交換數據,使用mfs文件系統能提高訪問速度,這是擁有大量內存的計算機使用 mfs較常用的方式。MFS_ROOT用于將內存映射文件系統用作根文件系統,FreeBSD的安 裝軟盤就是使用的這種根文件系統,此外,使用MFS_ROOT也用于將FreeBSD系統用作專用防火 牆的嵌入式操作系統。

  當安裝了系統源代碼之后,可以很容易生成能運行在一張軟盤上的FreeBSD系統,叫做 PicoBSD,它主要被用做路由器、防火牆等專用服務器等。

  MSDOSFS選項定義了msdos的fat文件系統,這不是必要的文件系統選項,使用它 來訪問本地硬盤上的msdos文件系統。如果要訪問軟盤上的msdos文件系統,使用mtools軟件更 為方便。

  PROCFS是一個偽文件系統,它被安裝到/proc目錄,用于訪問與相應的進程相關 的信息,一些系統程序如ps,使用它來獲得進程的信息。

  此外,"EXT2FS"選項為Linux所使用Ext2fs類型的文件系統,如果用戶的計算機 上還運行著Linux,并希望使用FreeBSD訪問本地硬盤上的Linux文件系統,就需要這個選項。

  FreeBSD 2.x以后版本是從4.4BSD發展來的,但FreeBSD 1.x是來自于4.3BSD的。4.3BSD是 一個非常重要的BSD版本,很多應用程序也是依照4.3BSD開發的。因此需要使用這個"COMPAT_43" 選項保持和基于4.3BSD(包括FreeBSD 1.x)應用程序的兼容性。

  SCSI設備在設置時需要一定的延遲時間,以便使SCSI控制卡能正確的和SCSI設備通信。因 此需要定義SCSI_DELAY=15000選項,與其他選項不同,這個選項為數值設置,使用了賦值 符號和數字。這個值的單位為毫秒

  UCONSOLE選項使用戶能接管console,通常在使用X Window時比較有用,這樣就能在 X Window下接管console輸出的與系統相關的信息。FAILSAFE選項使得配置程序對待內核更 為謹慎和保守,從而增加了系統的安全性。

  USERCONFIGVISUAL_USERCONFIG這兩個選項使用戶可以在啟動時進入內核 參數設置程序UserConfig,配置硬件參數。USERCONFIG參數只提供基本命令行配置功能,而 VISUAL_USERCONFIG進一步提供全屏的編輯功能。

  config行指定內核文件名及其位置,它指定內核名為kernel,并且內核所在的根文件 系統位于wd0硬盤上,根文件系統即為wd0a。FreeBSD習慣上使用kernel作為內核的文件名,不應改變 。而它的位置wd0可能會根據硬件設置的不同而不同,例如:如果將FreeBSD安裝到了SCSI硬盤上,則 內核和根文件系統的位置就為da0中的分區。

# To make an SMP kernel, the next two are needed
options 	SMP				# Symmetric MultiProcessor Kernel
options 	APIC_IO			# Symmetric (APIC) I/O
# Optionally these may need tweaked, (defaults shown):
#options	NCPU=2			# number of CPUs
#options	NBUS=4			# number of busses
#options	NAPIC=1			# number of IO APICs
#options	NINTR=24			# number of INTs

  如果用戶的計算機有多個處理器,就需要取消注釋,使用這几個選項以進行支持。一般 SMPAPIC_IO是最基本的兩個設置選項,SMP選項是用于支持對稱多處理器SMP結構 的基本代碼,APIC_IO支持APIC IO方式對稱I/O。使用這兩個選項之后,系統就能自動檢測出所使用 的處理器個數以及其他系統資源。當然也可以手工指定這些資源設置,這用于不能正確偵測處理器數 目時使用。缺省內核不支持多處理器,因此對于多處理器系統必須重新生成內核。

  由于只有586以上的芯片才支持SMP,因此這需要在cpu行的設置中刪除386和486行的設置,明確指 定處理器的類型。否則就會發生邏輯沖突。

controller	isa0
controller	eisa0
controller	pci0

  這三行定義了三種控制器的基本支持代碼:ISAEISAPCI總線控 制器。

  ISA總線類型是個人計算機的標准配置,很多驅動程序代碼都基于ISA控制器的代碼,因 此系統必須對ISA總線進行支持。EISA總線類型是ISA的擴展,使用在一些較老型號的服務器中, 今天已經逐漸被PCI總線代替,它是可選的。PCI選項支持PCI總線設備的通用代碼,當前PCI總線 主板是個人計算機的主流,這個選項也是必須的。

  如果用戶的計算機不存在EISA總線,可以刪除對EISA選項的支持。但是,由于后面設置的一些設備 是EISA總線類型的設備,依賴這個選項的支持,必須同時也必須刪除所有的EISA總線類型的設備,否則就存 在邏輯錯誤。配置程序并不會自動刪除那些并不存在的設備選項,這樣就導致直到編譯時才會發現EISA總 線設備的驅動程序發生編譯錯誤,編譯不能正常完成。

controller	fdc0	at isa? port "IO_FD1" bio irq 6 drq 2
disk		fd0	at fdc0 drive 0
disk		fd1	at fdc0 drive 1

  控制器fdc0是支持標准軟盤控制器的基本代碼,一般個人計算機能支持兩個軟盤驅動器, fd0fd1設備。 通過drive參數的值可以指定這兩個軟盤的順序。fdc0使用的資源是個 人計算機缺省設置,因此不存在系統探測問題。此外,雖然讓內核自動探測軟盤的數量沒什么壞處, 但刪除不必要的選項可以略微加快系統啟動的速度

options		"CMD640"	# work around CMD640 chip deficiency
controller	wdc0	at isa? port "IO_WD1" bio irq 14
#controller	wdc0	at isa? port "IO_WD1" bio irq 14 flags 0x00ff8004
disk		wd0	at wdc0 drive 0
disk		wd1	at wdc0 drive 1

controller	wdc1	at isa? port "IO_WD2" bio irq 15
disk		wd2	at wdc1 drive 0
disk		wd3	at wdc1 drive 1

options		ATAPI		#Enable ATAPI support for IDE bus
options		ATAPI_STATIC	#Don't do it as an LKM
device		acd0		#IDE CD-ROM
device		wfd0		#IDE Floppy (e.g. LS-120)

  前面的這些選項是用于支持IDE驅動器及硬盤的配置,事實上這些設置不但支持IDE驅動器, 還支持一些較老的ST506或ESDI界面的硬盤設備,雖然那些硬盤設備已經淘汰,沒有人再使用它們 了。

  "CMD640"用于修正使用CMD640控制芯片的系統主板的問題,wdc0是第一個IDE接口 控制器,wdc1為第二個IDE控制器,一個個人計算機系統中只能存在兩個標准IDE控制器,并且一 個IDE驅動器能帶兩個硬盤設備,因此wdc0上能連接兩個硬盤wd0和wd1,wdc1能連接wd2和wd3。其 中wd0和wd2為主硬盤,wd1和wd3為從硬盤。當然可以通過指定磁盤的參數at和drive參數的設置, 改變硬盤號的順序。

  由于IDE經過了一個長期的發展,控制器是由不同的制造廠商制造的,因此在一些細微的方 面也存在有差異,主要是新的控制器能夠支持更強的傳輸模式,當然它也支持原有的兼容模式。為 這些細小的差異沒有必要重寫驅動程序,只需要更改配置行中的參數設置,就能支持某些IDE控制 器的高級功能。

  每個控制器都有長32位的flags標志位,用于定義IDE硬盤的I/O類型,其中前16位定義 drive 1的標志,后16位定義drive 0的標志。例如wdc0的標志為0x00ff8004,表示定義了wd0的 標志為0x8004,使用32位I/O每次傳送4個扇區,而wd1設置為0x00ff,不探測32位傳輸而使用兼 容模式。這個標志也可以分割為兩個16位的部分,也在每個磁盤設備的標志中定義。

  IDE控制器中還支持光盤驅動器,首先需要ATAPI提供IDE界面使用的ATAPI類型光驅 基本代碼, ATAPI_STATIC這一選項使ATAPI代碼直接編譯到內核文件中,而不編譯為可加載 模塊。而acd0就為IDE光驅的驅動程序。由于光驅就是連接在IDE控制器上,因此IDE接口的光驅還需 要相應IDE驅動器的支持,例如光驅接在第二個IDE控制器上,則必須增加wdc1控制器選項。如果光 驅上的主/從(master/slave)跳線不正確,就不能正確偵知IDE光驅,很多IDE光驅出廠設置位從設 備,在該IDE總線上沒有其他設備的情況下,應該將光驅跳為主設備。

  2.2和3.0release版本使用wcd0作光驅的驅動程序,而acd0是3.1-stable使用的新CD-ROM驅 動,因此從2.2.x或3.0-release升級到3.1-stable時,要更改設置文件中的原wcd0項為acd0項。以 后隨著系統的發展,老wcd0的代碼會完全刪除,新代碼的驅動名字會恢復為wcd0。

  wfd0為IDE接口的軟盤驅動器,某些zip驅動器需要這個驅動器的支持。

# A single entry for any of these controllers (ncr, ahb, ahc) is
# sufficient for any number of installed devices.
controller	ncr0
controller	ahb0
controller	ahc0
controller	isp0

# This controller offers a number of configuration options, too many to
# document here  - see the LINT file in this directory and look up the
# dpt0 entry there for much fuller documentation on this.
controller      dpt0

controller	adv0	at isa? port ? cam irq ?
controller	adw0
controller	bt0	at isa? port ? cam irq ?
controller	aha0	at isa? port ? cam irq ?
#controller	aic0	at isa? port 0x340 bio irq 11

controller	scbus0
#controller  scbus1 at ahc1 bus 0

device		da0
#disk  da0 at scbus0 target 0 unit 0

device		sa0
device		pass0
device		cd0	#Only need one of these, the code dynamically grows

  對于網絡服務器來講,SCSI控制器是理想的選擇,因為SCSI設備不需要占用計算機處理器的 處理能力,因此適合經常發生并發存取的服務器系統。FreeBSD 3.0之后的SCSI驅動代碼已經完全重 寫,新的代碼更高效,并支持更多新設備。

  對于不同的SCSI設備,需要不同的SCSI控制器驅動程序,例如aha0為支持使用Adaptec 154x 芯片SCSI控制器的驅動程序,內核配置文件LINT和安裝介質中的HARDWARE.TXT中也列出了FreeBSD支持的 SCSI控制器對應的各個選項。需要根據自己計算機上的SCSI卡的具體型號進行選擇。確定了具體的驅動之 后,可以刪除和添加相應的控制行,但需要注意最好不要改變配置文件中控制器的前后順序,因為配置順 序決定系統檢測硬件的順序,那么配置順序不正確有可能造成錯誤的檢測結果。

  scbus0控制器提供基本的SCSI總線驅動代碼,當不使用參數的時候,這個控制器將自動和檢 測到的某個SCSI控制器聯系起來。在已經了解系統擁有的控制器的條件下,可以使用at參數手工指定某個序 號的SCSI總線位于哪個SCSI控制器上,一般一個SCSI控制器可以有几個SCSI總線通道。上例中注釋中的 scbus1總線控制器被指定為ahc1控制卡上的第一個總線,注意自動分配SCSI總線序號的方式與手工指定 SCSI總線的方式不應該混用,以避免出現沖突錯誤。

  da0就用于標識SCSI硬盤設備,不同的SCSI磁盤的SCSI總線scbus0,總線上的target號和邏 輯單元號unit這三個參數是不同的,可以用來標識不同的SCSI硬盤。如果忽略這三個配置參數,FreeBSD按 檢測的順序分配硬盤的序號。但是也可以手工指定這三個參數,確定硬盤序號。同樣,手工指定和自動分配 序號不能混用。

  指定總線序號并指定硬盤序號的益處是硬盤序號的順序將與內核自動檢測的順序無關。由于每個系統 中會同時存在多個SCSI總線,每個總線上可以有安裝有多個SCSI設備和邏輯單元,因此在增加、移去某個磁 盤時,會使其他磁盤自動分配的序號發生改變,從而使FreeBSD安裝文件系統出現問題,嚴重的會影響正常 啟動。解決辦法就是應該手工指定SCSI硬盤與總線、控制器的關系。

  sa0為SCSI磁帶驅動器,cd0為SCSI光驅,pass0為新SCSI驅動程序CAM中的通 道驅動程序。

device		wt0	at isa? port 0x300 bio irq 5 drq 1
device		mcd0	at isa? port 0x300 bio irq 10

controller	matcd0	at isa? port 0x230 bio

device		scd0	at isa? port 0x230 bio

  上面這些驅動是一些老式的ATAPI界面的光驅,這些光驅控制器一般都和聲卡作在一起,當前已 經很少使用這些光驅了。

# atkbdc0 controlls both the keyboard and the PS/2 mouse
controller	atkbdc0	at isa? port IO_KBD tty
device		atkbd0	at isa? tty irq 1
device		psm0	at isa? tty irq 12

device		vga0	at isa? port ? conflicts

# splash screen/screen saver
pseudo-device	splash

# syscons is the default console driver, resembling an SCO console
device		sc0	at isa? tty
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device		vt0	at isa? tty
#options		XSERVER			# support for X server
#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

device		npx0	at isa? port IO_NPX irq 13

  atkbdc0為鍵盤控制器,atkbd0為相應的鍵盤設備,psm0為ps/2 類型的鼠標設備。vga0為顯示驅動程序,標准的控制台程序需要它的支持。vga0的 conflicts標志指出這個驅動程序會和其他設備共享某些資源,告訴內核不要因為這個硬件發生 資源沖突而認為是這個設置不正確。FreeBSD為多用戶系統,一般情況下各個設備不應該相互共 享資源,以避免訪問沖突。除非設備不能被使用者直接訪問的情況下,硬件才能共享系統資源。

  如果要取得更好的顯示效果,可以使用VESA選項(options VESA),來支持800x600的 控制台顯示模式(能支持132x60的字符模式)。只是VESA選項不能和多處理器選項SMP共存,它 也要求系統內核提供對虛擬86模式的支持,以便VESA顯示子系統就能控制顯示卡,所以同時需 要 “options VM86” 選項。

  splash偽設備用于支持splash屏幕圖象和屏幕保護功能,這能使得系統啟動時展 示一個圖象啟動標志,并能提供控制台下的屏幕保護功能。

  全稱為syscon的sc0驅動程序定義了缺省的控制台設備,支持彩色和虛擬控制台 模式。vt0是可以用來替換sc0驅動另一個控制台驅動程序,只有在使用有些特殊的與sc0 不兼容的硬件的時候,才需要使用這個pcvt控制台驅動程序。如果使用vt0驅動,那么或者會需要 設置XSERVERFAT_CURSOR等選項以提供更完善的支持。

  npx0為浮點協處理器的接口,這是用于支持浮點協處理器必需的選項。沒有浮點 協處理器的計算機必須配置數學防真MATH_EMULATE或者GPL_MATH_EMULATE以支持浮點運算。如果 同時使用了這兩類選項,則按照系統檢測結果,當npx0被檢測到時npx0就發揮作用。

#
# Laptop support (see LINT for more options)
#
device		apm0    at isa?	disable	flags 0x31 # Advanced Power Management

# PCCARD (PCMCIA) support
#controller	card0
#device		pcic0	at card?
#device		pcic1	at card?

  上面這些選項用來支持便攜計算機,apm0用于支持高級電源管理功能,card0 控制器對PCMCIA接口的設備進行支持,需要指定相應的設備如pcic0等。

  標准的FreeBSD內核代碼支持的便攜計算機設備并不丰富,因此FreeBSD中有一個PAO的開發 計划,專門為用于支持便攜計算機。

device		sio0	at isa? port "IO_COM1" flags 0x10 tty irq 4
device		sio1	at isa? port "IO_COM2" tty irq 3
device		sio2	at isa? disable port "IO_COM3" tty irq 5
device		sio3	at isa? disable port "IO_COM4" tty irq 9

# Parallel port
device		ppc0	at isa? port? net irq 7
controller	ppbus0
device		nlpt0	at ppbus?
device		plip0	at ppbus?
device		ppi0	at ppbus?
#controller	vpo0	at ppbus?

  sio0、sio1、sio2sio3為四個標准串口設備,其中sio0還可以用做終端 控制台,這樣專用服務器就可以不使用顯示器、鍵盤而使用一個普通字符終端來完成控制任務, 這樣多個FreeBSD系統能放在專用機架上,用做專用服務器。sio0的flags規定了這個串口用做控 制台的優先級,通常使用0x10就足夠了,使用0x20或0x40會妨礙對這個串口進行其他正常操作。

  3.0之前的FreeBSD系統使用COMCONSOLE設置選項來達到同樣的目的,這個選項在新系統中不 再有效,使用sio0的flags就能達到同樣的目的。

  要使用串口作控制台,還需要在/etc/ttys中定義相應的配置行,使得系統在sio0對應的ttyd0 設備上執行相應的getty命令。Packages Collection中的comconsole-0.1.tgz軟件包能幫助進行這些 設置。

  設備ppc0、控制器ppbus0用于支持并口設備,nlpt0為并口打印機設備,plip0為并口網絡界 面,ppi0用于一般目的的輸入輸出。vpo0為某些并口SCSI設備的控制器,因此除了并口驅動之外, 也需要SCSI總線控制器scbus0和SCSI硬盤da0的支持。這些并口設備是3.1版本之后更新的并口驅動, 原有的驅動為lpt0,只能支持最標准的并口模式,不能并口的新模式。

# Order is important here due to intrusive probes, do *not* alphabetize
# this list of network interfaces until the probes have been fixed.
# Right now it appears that the ie0 must be probed before ep0. See
# revision 1.20 of this file.
device ax0
device de0
device fxp0
device mx0
device pn0
device rl0
device tl0
device tx0
device vr0
device vx0
device wb0
device xl0

device ed0 at isa? port 0x280 net irq 10 iomem 0xd8000
device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000
device ep0 at isa? port 0x300 net irq 10
device ex0 at isa? port? net irq?
device fe0 at isa? port 0x300 net irq ?
device le0 at isa? port 0x300 net irq 5 iomem 0xd0000
device lnc0 at isa? port 0x280 net irq 10 drq 0
device ze0 at isa? port 0x300 net irq 10 iomem 0xd8000
device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000
device cs0 at isa? port 0x300 net irq ?

  由于FreeBSD是網絡操作系統,因此通常計算機常常通過以太網卡或廣域網卡與網絡相 連接。對于每個網卡設備,必須在內核配置中進行相應的配置。上述選項就用于設置不同的網 絡設備的驅動程序。FreeBSD缺省內核包括了對很多網卡設備的支持,這些設備的驅動程序都被 編譯入系統內核中,占據了大量不必要的空間。因此在定制系統內核時,最好刪去計算機上不 存在的網卡類型的驅動,這樣也可以加快系統的硬件探測過程。如果在缺省內核中,網卡已經 能正常運行,就可以使用dmesg找出正確的網卡類型。當不能確定網卡類型的時候,更改內核 配置文件一定要注意順序,因為檢測順序非常重要,由于不同的網卡驅動相互有影響,正確的 檢測順序可以避免出現探測錯誤。

  較老的ISA網卡還需要配置參數和硬件設置相一致,就要調整網卡使用的端口地址,irq 和iomem等參數與網卡使用的真實資源相一致。這是由于生產兼容網卡的廠商太多,因此各種兼 容網卡的缺省設置卻并不相同,而較老的驅動程序不能自動探測設備使用的資源。新的PCI網卡 就不存在這個問題,驅動程序支持PNP,可以自動探測硬件資源。

pseudo-device	loop
pseudo-device	ether
pseudo-device	sl	1
pseudo-device	ppp	1
pseudo-device	tun	1
pseudo-device	pty	16
pseudo-device	gzip		# Exec gzipped a.out's

  偽設備并不與具體的物理設備有關,但外在表現為一種設備。通常偽設備用于支持系統中 與某類操作相關的基本代碼。

  loop定義TCP/IP使用的loopback網絡設備,這將使計算機能夠通過TCP/IP堆棧內 部,以127.0.0.1(通常名字定義為localhost)的IP地址訪問自身。由于FreeBSD為網絡操作系統 ,這個選項是必須的。不管計算機上有沒有網絡設備,FreeBSD都提供了這個loopback的偽網絡設 備,以提供最基本的網絡功能。網絡功能是FreeBSD系統的基本功能,FreeBSD上的很多程序需要 網絡支持才能正常運行。很多程序能使用這種網絡支持,進行本機內部進程間的連接。

  ether偽設備定義了支持Ethernet協議的基本代碼,Ethernet是最流行的局域網標 准,如果計算機通過Ethernet網卡互相連接,就需要這個選項的支持。

  sl為支持SLIP協議的偽設備,其后的數值參數為支持的sl偽設備的數目。SLIP協議 已經逐漸被PPP協議取代。因此一般可以刪除這個選項。

  ppp是在內核中實現PPP協議的驅動程序,之后的數字指定了可同時使用的PPP會話的 數量。用戶使用這個偽設備便能使用pppd,使用PPP協議通過modem與另一台計算機相連接。

  tun為tunnel偽設備,用于建立直接的通道。它也被常用來支持PPP協議,不同在于 它在內部沒有實現PPP協議,而支持PPP協議的代碼是在應用軟件ppp中實現的。這是用戶模式的PPP 支持,與偽設備ppp相比,它較容易配置和使用。

  pty是偽終端設備,在遠程登錄等需要以終端方式進行連接,但又并非真實終端的應 用程序中必須使用這種設備,如telnet或xterm等程序。這里定義的限制是內核允許同時創建的偽終端 數,缺省設置對于個人使用還能基本滿足,但如果將系統用于提供遠程登錄服務,例如用做BBS服務器 ,16個偽設備就遠遠不夠。此外,X Window用戶也會占用大量的pty設備。

  偽設備gzip是FreeBSD的另一種特性,它使FreeBSD能夠運行用gzip壓縮過的a.out格式 執行文件,因此能節約磁盤空間。但是這種特性只支持傳統的a.out格式執行文件,而FreeBSD自3.0以 后,雖然仍然支持a.out格式,但標准執行程序的格式轉為ELF格式。因此這個特性帶來的好處就大大 降低了。為了利用這個特性,可以將應用程序編譯為a.out格式(使用-aout編譯連接選項)。

# KTRACE enables the system-call tracing facility ktrace(2).
# This adds 4 KB bloat to your kernel, and slightly increases
# the costs of each syscall.
options		KTRACE		#kernel tracing

# This provides support for System V shared memory and message queues.
#
options		SYSVSHM
options		SYSVMSG

  配置KTRACE選項使內核允許系統調用跟蹤程序ktrace能正常運行。

  SYSVSHM、SYSVMSG這個選項提供FreeBSD與System V的兼容性,其中第一個選項SYSVSHM 提供了進程間共享內存的機制,X Window系統就需要這種共享內存機制,以提高管理圖形的性能。 SYSVMSG用于支持System V的消息隊列,只在特定的程序中用到,如Windows 9x的模擬器wine。

#  The `bpfilter' pseudo-device enables the Berkeley Packet Filter.  Be
#  aware of the legal and administrative consequences of enabling this
#  option.  The number of devices determines the maximum number of
#  simultaneous BPF clients programs runnable.
#pseudo-device	bpfilter 4	#Berkeley packet filter

  bpfilter即Berkeley Packet Filter,通常計算機只接收與本機有關的數據包或廣播包。 在網上傳播的數據包,如果與本機無關,計算機將不予理會,這樣的好處是減輕了處理器負擔。如果要讓 計算機能夠捕獲經過網卡的所有數據包,就要讓網卡工作在混雜模式,此時就需要使用這個偽設備。后面 的數字指定能同時使用這個功能的程序的數目。

  使用這個選項的目的是使計算機能捕獲數據包并進行分析,監測網絡、尋找故障,一些特殊功能 如DHCP的客戶程序,也需要這個偽設備的支持。但這種功能如果被不正當使用,將對整個局域網的安全 造成威脅,尤其是使用共享式以太網連接方式的網絡,網絡上傳播的信息將被這台計算機所竊聽。需要 注意的是,不是所有的網卡都支持混雜模式,只有支持混雜模式的網卡才能使用這個功能。

# USB support
#controller    uhci0
#controller    ohci0
#controller    usb0
#
# for the moment we have to specify the priorities of the device
# drivers explicitly by the ordering in the list below. This will
# be changed in the future.
#
#device        ums0
#device        ukbd0
#device        ulpt0
#device        uhub0
#device        ucom0
#device        umodem0
#device        hid0
#device        ugen0

#
#options       USB_DEBUG
#options       USBVERBOSE

  這些設置選項是用來支持USB控制器和USB設備,當前USB設備還不是很流行,但它是未來發展的 一個趨勢。

未完,待續。。。  



 
  新浪首頁 > 科技時代 > FreeBSD使用大全連載 > FreeBSD連載(60):缺省內核配置選項


網站簡介 | 網站導航 | 廣告服務 | 中文閱讀 | 聯系方式 | 招聘信息 | 幫助信息

Copyright(C) 1999 SINA.com, Stone Rich Sight. All Rights Reserved

版權所有  四通利方 新浪網