当前所在位置:FreeBSD使用大全>>
FreeBSD连载(60):缺省内核配置选项(2)
 
作者:王波
 
指定总线序号并指定硬盘序号的益处是硬盘序号的顺序将与内核自动检测的顺序无关。由于每个系统中会同时存在多个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驱动,那么或者会需要设置XSERVER、FAT_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、sio2和sio3为四个标准串口设备,其中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设备还不是很流行,但它是未来发展的一个趋势。

未完,待续。。。
 
来源:http://freebsd.online.ha.cn/

声明:本站的文章和软件是本人从网上收集整理的(除本人的作品之外),所有版权属于作者,
如有侵犯您的权益,请指出,本站将立即改正,谢谢.

Copyright 2000 www.newok.com