占位图像 用户ID: 密码: 验证码: 登录 注册     占位图像
 
教育168搜索

a
频道信息
学前教育 基础教育
小学 初中
高中 高等教育
心理学 机械工程
园林 IT教育
办公软件 Director
Authorware 图形图象
FIREWORKS CORELDRAW
Maya PhotoShop
AutoCAD 3D
操作系统 Windows xp
Windows Vista Linux
Windows 2003 Windows 2000
FreeBSD 注册表
网站制作 FLASH
Dreamweaver CSS教程
装修设计 LightScape
装修风水 方案设计
英语 商务外语
素质教育 法制教育
企业培训
最新更新
·教你制作可以随身携带的Fre
·FreeBSD5.3与Apa
·FreeBSD5.3 Apa
·初学者入门:FreeBSD系
·FREEBSD下搭建支持JS
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSDhandboo
·FreeBSD下Apache
·FreeBSDhandboo
·FreeBSD4.7 Qma
·FREEBSD升级及优化全攻

点击排行
·FreeBSD网站平台建设全
·初学者入门:FreeBSD系
·教你制作可以随身携带的Fre
·FreeBSD5.3 Apa
·FreeBSD5.3与Apa
·FreeBSDhandboo
·porttree更新
·FreeBSD命令lastc
·FreeBSDkernel编
·在FreeBSD5.0上配置
·FreeBSDhandboo
·FreeBSD命令lastc
·FreeBSD中文化全攻略
·FreeBSD上的软件安装方
·利用FreeBSD组建安全的
·FreeBSDhandboo
·在FreeBSD上运行Win
·FreeBSD与Linux的

FreeBSDhandbook中文版9配制FreeBSD的内核
发布日期:2005-3-28  浏览:428次
关键字:
目录
9配制FreeBSD的内核
9.1概要
第3页9.2为什么要定制一个内核?
9.3建立和安装一个定制的内核
9.4配置文件
9.5建立设备的节点
9.6如果出现问题怎么办
=============================================================


(翻译中出现的任何问题或错误,请广大读者及时反馈给我:freebsdhandbook@163.com)
9.1概要
时你需要重新配置和编译你的内核。
.
.
.
.
.
.
9.2为什么要定制一个的内核?
带来很多好处。不象GENERIC内核,它需要支持很广泛的硬件设备,而定制的内核将只支持
你机器的硬件设备,这样会带来很多好处:
FreeBSD使用手册
第9章配置FreeBSD的内核
内核是FreeBSD的核心。它用来管理内存,执行安全控制,网络,磁盘访问等等。而有
读完这章,你将了解到:
为什么需要建构一个定制的内核。
如何写一个内核配置文件,或修改已存在的配置文件。
如何使用内核配置文件创建和建构一个新的内核。
如何安装一个新内核。
如何在/dev中创建设备文件的入口。
如何解决一些常见的问题。
定制内核基本上是每一个UNIX用户必须经历的一关。这样做将会对你的FreeBSD系统
1.快速启动。既然系统内核只检测你机器上的硬件,那它所花费的启动时间将大大减
少。
2.较少的内存使用。一个定制的内核会比GENERIC内核使用较少的内存。这一点非常
重要,因为内核在处理时必须经常使用内存。所以,一个定制的内核对于内存较少的机
器来说是非常有用的。
3.额外的硬件支持。一个定制的内核允许你加入象声卡之类设备的支持,而这恰恰是
GENERIC内核所做不到的。
第1页FreeBSD使用手册
9.3建立并安装一个定制的内核
首先,让我们先来看一下建立内核的目录。所有提到的目录都在/usr/src/sys中,也
可以通过/sys访问。有许多子目录充当了内核的不同部分。但最重要的是/arch/conf,你
可以在这儿配置内核,然后进行编译。这里的arch也可能是i386,alpha,pc98。在一个特
殊的架构目录内,所有的东西都是为这个架构服务的;其它部分的代码是与所有平台共享的。
注意一下这个目录的逻辑结构,所有支持的硬件驱动程序、文件系统、参数选项,都放在各
自的目录下。另外,所有放在i386目录下的是只跟PC硬件有关的,而i386目录之外的其
它目录,则是FreeBSD可能移植到的平台会共享到的部分。
注意:如果你的系统没有这个/usr/src/sys目录,那么内核源代码就没有被安装。最
快速的安装方式是以root登陆,然后运行/stand/sysinstall,选择
configureDistributionssrcsys。
接着,切换到arch/conf目录,拷贝GENERIC配置文件,并给这个文件起一个容易辨认的名
称,它就是你的内核名称。例如:
#cd/usr/src/sys/i386/conf
#cpGENERICMYKERNEL
通常,这个名称是大写的,如果正维护着多台不同硬件的FreeBSD机器,以你机器的域
名来命名是非常好的主意。我们把它命名为MYKERNEL就是这个原因。
注意:你必须以root帐户登陆再执行下面的命令,否则你会没有权限,而导致错误。
现在,用你喜欢的文本编辑器编辑MYKERNEL。如果你是初学者,那唯一能用的编辑器
可能就是vi,它由于太复杂而不在这儿介绍了,但在参考书目中有许多书会介绍到它。然
而,FreeBSD中最容易的编辑器是ee,如果你是一个工程师,它是一个非常好的选择。你可
以很自由地改变注释行来反映你的配置情况,或你在GERNERIC中已经做的变化。如果你在
Sunos或其它BSD系统下定制过内核,那这个文件中的绝大部分将对你非常熟悉。如果你使
用的是诸如DOS这样的系统,那GENERIC配置文件就看起来非常困难,所以在下面的配置文
件章节将慢慢地、仔细地进行介绍。
注意:确信经常检查/usr/src/UPDATING,在你执行任何修改之前,记得要用最新发布
的源代码来同步你的源代码树。在这个文件中所有重要的升级都要记下来。
/sur/src/UPDATING总是符合你的FreeBSD源代码版本,而且总是比手册所说的信息更加精
确。
当你完成以上步骤之后,如果你使用的FreeBSD是4.0之前的版本的话,就执行下面的
第2页FreeBSD使用手册
命令进行编译和安装内核;如果你使用的是4.0版或是之后的版本,你的/usr/src/目录可
能已经包含了sys/子目录了。
注意:如果你设法从一个旧版本的FreeBSD升级你的内核,你可能必须从你得到新内核
源代码的地方,找到新版的配制文件,重建并安装它。
#/usr/sbin/configMYKERNEL
#cd../../compile/MYKERNEL
#makedepend
#make
#makeinstall
如果你刚升级到一个比较新的版本,确信你已经重建了整个系统,然后运行下面的命令:
#cd/usr/src
#makebuildkernelKERNCONF=MYKERNEL
#makeinstallkernelKERNCONF=MYKERNEL
如果你还没有升级你的源代码树,那你应当按顺序执行:
config,makedepend,make,makeinstall
警告:如果你已经升级了你的源代码,你必须使用makebuildkernel方法来定制你的
内核。否则,用旧的工具来定制内核,可能会引起错误。如果你已经升级了源代码,不要
使用config/make来定制内核。
新的内核将会被拷贝到/kernel目录下,而旧的内核将会被移到/kernel.old。现在,
关闭系统,然后重新用你的内核启动系统。如果发生错误,在这章结尾会有一些故障的解决
办法。一旦你的新内核不能启动,请务必读一下有关如何恢复的章节。
注意:如果你已经加入了新的设备(如声卡),你可能在使用之前,要先在你的/dev目
录下加入这些设备节点。
9.4配置文件
内核设置的格式是很简单的,每一行包含了一个关键词(keyword)与一个或多个参数,
而大多数的设置都只包含一个参数。#号之后的文字都是注释,会被程序忽略掉。下面的每
个小节,将依次介绍每个列在GENERIC中的参数,虽然各相关主题(如网络)的关键词会放在
同一小节,但是这些关键词可能位于GENERIC的很多地方。详细地列出各个选项(option),
而LINT列出了绝大部分的选项(options),比起在同一目录下的GENERIC,有更详细的解释。
第3页FreeBSD使用手册
如果你不能确定某一行设定的目的是否必要,请先看看LINT。
目前内核在处理各个选项上正转到一个比较好的模式。一般地,设置文件中的各个选项
都转换到内核程序的Makefile中,属于CFLAGS的一个-D参数。时间一长,就造成了一个
选项处理机制的问题,没有人知道在哪个文件中参考使用了那个选项。
在新的机制中,使用#ifdef来参考选项的程序代码是存放在由执行config时所产生的
opt_foo.h。由config所产生的有效的选项清单存储在两个文件里:独立于系统架构的选项
放在/sys/conf/options,与系统架构有关的选项则放在/sys/arch/conf/options.arch,其
中arch的一个例子便是i386。
数字的引号限制(Quotingnumbers):目前所有FreeBSD版本,包括3-stable
版,其内核设置文件中如果有任何属于文字形式的数字(如i386),必须用双引号引
起来,不然执行config时会出错。
如果数字是表示数目、个数,如maxuser64这个设置,则不要加双引号。目
前FreeBSDCURRENT版本已经去掉上述限制,不论是哪种形式的数字都不需要加双
引号。本章的例子,在文字形式的数字前后仍加了双引号(“”),如果你使用FreeBSD
CURRENT,请自动去除双引号。
下面是一个带有很多额外注释的GENERIC内核配置文件的例子。这个例子与
/usr/src/sys/i386/conf/GENERIC非常相似。有关内核配置的最详细的选项,请参
看/usr/src/sys/i386/conf/LINT。
#
#GENERIC--GenerickernelconfigurationfileforFreeBSD/i386
#
#Formoreinformationonthisfile,pleasereadthehandbooksectionon
#KernelConfigurationFiles:
#
#http://www.FreeBSD.org/handbook/kernelconfig-config.html
#
#Thehandbookisalsoavailablelocallyin/usr/share/doc/handbook
#ifyou'veinstalledthedocdistribution,otherwisealwaysseethe
#FreeBSDWorldWideWebserver(http://www.FreeBSD.ORG/)forthe
第4页FreeBSD使用手册
#latestinformation.
#
#Anexhaustivelistofoptionsandmoredetailedexplanationsofthe
#devicelinesisalsopresentinthe./LINTconfigurationfile.Ifyouare
#indoubtastothepurposeornecessityofaline,checkfirstinLINT.
#
#$FreeBSD:src/sys/i386/conf/GENERIC,v1.2462000/03/0916:32:55jlemonExp
$
下面这个选项在每个内核中都要有:
machinei386
上面的选项指出了在你的系统中所用的CPU类型。你可以使用多个CPU类型(例如,你
不确信你使用的是I586_CPU还是I686_CPU),然而,对于一个定制的内核,最好是只指定
你所拥有的CPU类型。如果你不能确定你的CPU类型,你可以使用dmesg命令来看看你的启
动信息。
Alpha结构的机器使用下面的选项:
cpuEV4
cpuEV5
如果你正使用一台Alpha机器,你应当使用上面的CPU类型。
identGENERIC
ident是一个内核的标识符。你应该自己命名一个容易辨认的名称,以有别于GENERIC
的名称─GENERIC。放在ident后的参数,将在你用这个内核启动时显示在屏幕上。如果你
同时设置了几个内核,采用不同的名称是个不错的主意。
注意,象machine与cpu这两个设置。如果你的内核名称包含数字,请记得用双引号把
它括起来。内核名称将会使用-D参数传给编译器,所以不要用像DEBUG或是其它可能干扰
编译器的机器、CPU名称,如vax。
maxusers32
这个设置的大小值定义了重要的systemtables。这个数值粗略地假设你的机器同时会
有多少使用者。然而,在一般情况下,你最少要设置4个以上,特别是你要执行XWindow
或是编译程序。原因是maxusers值决定了系统同时可有多少个进程(processes),其算法
是20 16*maxusers。如果你设置maxusers值是1,则你的系统只能同时存在36个
第5页FreeBSD使用手册
processes,包括18个(或更多)系统启动要占去的processes;如果你执行了XWindow,则
又要用掉15个以上。甚至阅读一个manpage也会使用九个processes来过滤、解压缩、然
后显示文件。设置maxusers=4,则系统可以同时有84个processes,对任何人应该都是足
够的。当你执行程序时,得到像是“proctablefull”这样的错误信息,或者你要建一个
同时会有很多人来访问的网站(如WalnutCreekCDROM的FTP)时,你就要增加这个设置的
值,然后重新编译内核。
注意:maxuser这个参数并不限制可以登陆你系统的用户的数目。它只是系统中使用者
可以最多执行的程序的个数。有一个关键词的值则真的限制了可以同时远程连接(remote
logins)的人数:pseudo-devicepty16。
#Floatingpointsupport-donotdisable.
devicenpx0atnexus?portIO_NPXirq13
npx0是连接FreeBSD中浮点运算处理器的一个接口。不论你有硬件的浮点运算处理器
还是使用软件仿真,都需要这个设置。这个设置并不是可有可无的。
#Pseudodevices-thenumberindicateshowmanyunitstoallocate.
pseudo-deviceloop#Networkloopback
loop是一个通用的TCP/IP接口。如果你用telnet或ftp连到localhost(等同于
127.0.0.1),则该连接会通过这个虚拟设备连回来。这是一定要有的设置,请不要去掉。
#makeoptionsDEBUG=-g#Buildkernelwithgdb(1)debugsymbols
optionsMATH_EMULATE#Supportforx87emulation
如果你的计算机没有浮点运算处理器(386或486SX),你可以加入这行,使得内核提供
软件仿真的浮点运算处理器。如果你用的是486DX或是386SX、486SX(还加装了387、487
芯片)或更高的(Pentium、PentiumII等)则不需要这行设置。
注意:这个仿真的浮点运算处理器并不是很精确。如果你没有浮点运算器,还需要较
高的精度,你可以改用GPL_MATH_EMULATE参数,这将会使用GNU的浮点运算仿真器。至于
为什么这个仿真器不是系统默认值,是因为GNU使用许可的关系。
optionsINET#InterNETworking
提供网络支持。就算你不打算连上网络,你还是要留着这个选项。对于绝大部分的程序,
这个选项是一定要有的。
第6页FreeBSD使用手册
optionsINET6#IPv6communicationsprotocols
这个启用IPv6通讯协议。
optionsFFS#BerkeleyFastFilesystem
optionsFFS_ROOT#FFSusableasrootdevice[keepthis!]
最基本的硬盘文件系统。如果你要从硬盘启动,就留着。
optionsMFS#MemoryFilesystem
optionsMD_ROOT#MDisapotentialrootdevice
Memory-mapped文件系统。提供RAMdisk,以供需要快速访问的资料或是暂存资料用。
如果你分了很大的swap空间,使用这个选项可以给你不少好处。把/tmp挂到MFS分区是一
个相当好的想法,因为不少程序都会在此暂存资料。要把/tmp挂到MFSRAMdisk,可以修
改/etc/fstab,加入以下一行:
/dev/ad1s2b/tmpmfsrw00
现在重启动,或是键入mount/tmp命令:
optionsNFS#NetworkFilesystem
optionsNFS_ROOT#NFSusableasrootdevice,NFSrequired
网络文件系统(NetworkFilesystem,NFS),除非你要从网络上的其它机器加载目录,
不然你可以用#号注释掉这行设置。
optionsMSDOSFS#MSDOSFilesystem
MS-DOS文件系统。除非你要在启动时挂上一个DOS格式的硬盘,不然你可以放心地把
这行注释掉。如前所述,在你第一次挂上一个DOS分区时,内核将会自动加载模块来支持它。
此外,mtools是个相当不错的软件(可在ports里面找到),可以让你在访问DOS磁盘时,
不需要挂入或卸载软盘(而且也不需要MSDOSFS的支持)。
optionsCD9660#ISO9660Filesystem
optionsCD9660_ROOT#CD-ROMusableasroot,CD9660required
CD-ROM使用的ISO9660文件系统。如果你没有光驱,或是很少用光驱,可以注释掉这
一行(内核会在第一次挂入时动态加载模块以支持它)。音乐CD则不会用到这个文件系统。
optionsPROCFS#Processfilesystem
第7页FreeBSD使用手册
Processfilesystem。这是一个虚拟的文件系统,挂在/proc下,允许一些程序,像ps
来读取资料,提供你正在执行的processes的信息。
optionsCOMPAT_43#CompatiblewithBSD4.3[KEEPTHIS!]
使系统兼容4.3BSD。不要去掉这一行,不然有些程序将无法正常运行。
optionsSCSI_DELAY=15000#Delay(inms)beforeprobingSCSI
这行设置告诉内核等待15秒钟,以供SCSI控制器扫描你计算机上的SCSI设备。如果
你只有IDE硬盘,你可以不理会这个设置,不然你可能会想要降低这个值,也许会降到五秒,
以增加启动的速度。如果你发现降低后,FreeBSD无法正确辨认你的SCSI设备,那么你该
提高这个值,延长等待时间。
optionsUCONSOLE#Allowuserstograbtheconsole
允许使用者找到console信息,对XWindow很有用。举例来说,你可以输入xterm-C
来打开一个consolexterm,这个窗口将显示任何write、talk等命令的信息,以及你发出
去的信息。当然,kernel产生的信息也会在这里出现。
optionsUSERCONFIG#boot-ceditor
这个选项允许你从启动菜单启动配置编辑器。
optionsVISUAL_USERCONFIG#visualboot-ceditor
这个选项允许你从启动菜单启动虚拟配置编辑器。
optionsKTRACE#ktracesupport
这个选项启用内核进程跟踪,在调试时很有用。
optionsSYSVSHM#SYSV-stylesharedmemory
提供SystemVSharedmemory(SHM)的支持,最常用到SHM的应该是XWindow的XSHM
延伸,不少绘图相关程序(像影片播放程序XAnim与LinuxDOOM游戏)会自动使用SHM来提
供额外的速度。如果你要使用XWindow,你最好加入这个选项。
optionsSYSVSEM#SYSV-stylesemaphores
支持SystemVsemaphores,不常用到,只在kernel中占用几百个字节的空间。
optionsSYSVMSG#SYSV-stylemessagequeues
支持SystemVmessages,一样的,只占用kernel几百字节的空间。
第8页FreeBSD使用手册
注意:ipcs命令可以显示出任何使用到上述三个SystemV功能的processes。
optionsP1003_1B#PosixP1003_1Breal-timeextensions
options_KPOSIX_PRIORITY_SCHEDULING
在1993POSIX中添加的实时扩展。在portscollection中某些应用程序会用到这些(如
StarOffice)。
optionsICMP_BANDLIM#Ratelimitbadreplies
这个选项启用ICMP的带宽限制的错误响应。你使用这个选项可以帮助你保护你的机器
免受拒绝式服务攻击。
#TomakeanSMPkernel,thenexttwoareneeded
#optionsSMP#SymmetricMultiProcessorKernel
#optionsAPIC_IO#Symmetric(APIC)I/O
上面两个选项都支持SMP。
deviceisa
所有FreeBSD支持的PC都需要这行设置。如果你使用IBMPS/2(微信道架构)计算机,
则你无法在该机器上执行FreeBSD。
deviceeisa
如果你的主机板上有EISA总线,加入这个设置。使用这个选项可以自动扫描并设置所
有连接在EISA总线上的设备。
devicepci
如果你的主板有PCI总线,就加入这个选项。使用这个选项可以自动扫描PCI卡,并在
PCI到ISA之间建立通路。
#Floppydrives
devicefdc0atisa?portIO_FD1irq6drq2
devicefd0atfdc0drive0
devicefd1atfdc0drive1
软盘控制器:fd0是A:盘,fd1是B:盘。ft0则是连接到软盘的QIC-80磁带机。如
果你没有上述设备,就注释掉这几行设置。
deviceata
第9页FreeBSD使用手册
这个驱动器支持所有ATA和ATAPI设备。你只要在内核中加入ata选项,就可以让内核
支持现代计算机上的所有PCIATA/ATAPI设备。
deviceatadisk#ATAdiskdrives
这个是ATAPI磁盘驱动器所必须的。
deviceatapicd#ATAPICDROMdrives
这个是ATAPICDROM驱动器所必须的。
deviceatapifd#ATAPIfloppydrives
这个是ATAPI软盘驱动器所必须的。
deviceatapist#ATAPItapedrives
这个是ATAPI磁带机驱动器所必须的。
optionsATA_STATIC_ID#Staticdevicenumbering
这个可以静态分配控制器的编号,也可以动态分配设备的编号。
#ATAandATAPIdevices
deviceata0atisa?portIO_WD1irq14
deviceata1atisa?portIO_WD2irq15
上面的选项用在比较老的,非PCI的系统中。
#SCSIControllers
deviceahb#EISAAHA1742family
deviceahc#AHA2940andonboardAIC7xxxdevices
deviceamd#AMD53C974(TeckramDC-390(T))
devicedpt#DPTSmartcache-SeeLINTforoptions!
deviceisp#Qlogicfamily
devicencr#NCR/SymbiosLogic
devicesym#NCR/SymbiosLogic(newerchipsets)
deviceadv0atisa?
deviceadw
devicebt0atisa?
deviceaha0atisa?
第10页FreeBSD使用手册
deviceaic0atisa?
SCSI控制器。可以注释掉你系统中没有的设备。如果你只有IDE设备,你可以把这些
一起删掉。
#SCSIperipherals
devicescbus#SCSIbus(required)
deviceda#DirectAccess(disks)
devicesa#SequentialAccess(tapeetc)
devicecd#CD
devicepass#Passthroughdevice(directSCSI
access)
SCSI外围设备。也可以象上面一样操作。
#RAIDcontrollers
deviceida#CompaqSmartRAID
deviceamr#AMIMegaRAID
devicemlx#MylexDAC960family
支持RAID控制器。如果你没有这些,可以把它们注释掉或是删掉。
#atkbdc0controlsboththekeyboardandthePS/2mouse
deviceatkbdc0atisa?portIO_KBD
键盘控制器atkbdc提供AT键盘输入以及PS/2指针设备的I/O服务。键盘驱动程序
atkbd与PS/2鼠标驱动程序psm需要这个控制器,所以不要删除它。
deviceatkbd0atatkbdc?irq1
atkbd驱动程序,与atkbdc控制器一起作用,提供连接到AT键盘控制器的AT84键盘
与AT加强型键盘的访问服务。
devicepsm0atatkbdc?irq12
如果你的鼠标连接到PS/2鼠标端口,就使用这个设备驱动程序。
devicevga0atisa?
显卡驱动。
#splashscreen/screensaver
第11页FreeBSD使用手册
pseudo-devicesplash
在启动时的启动画面!屏幕保护也需要这个。
#sysconsisthedefaultconsoledriver,resemblinganSCOconsole
devicesc0atisa?
sc0是默认的console驱动程序,绝大部分全屏幕程序都通过termcap这类terminal
databaselibrary来访问console,因此不论你用这个驱动程序或是VT220兼容console
驱动程序vt0,这中间并没有太大差别。如果使用sc0,且你在登陆系统后,执行全屏幕程
序时遇到问题,请将你的TERM设置成“scoansi”。
#EnablethisandPCVT_FREEBSDforpcvtvt220compatibleconsoledriver
#devicevt0atisa?
#optionsXSERVER#supportforXserveronavtconsole
#optionsFAT_CURSOR#startwithblockcursor
#IfyouhaveaThinkPAD,uncommentthisalongwiththerestofthePCVTlines
#optionsPCVT_SCANSET=2#IBMkeyboardsarenon-std
这是一个兼容VT220的console驱动程序,并向下兼容VT100/102。在部分与sc0相冲
突的笔记本计算机上,这个驱动程序运作良好。当然,当你登陆系统时,记得设置TERM参
数为vt100或是vt220。当连接到网络上许多计算机时,这个驱动程序也常是很有用的,这
是因为许多的计算机上的termcap或是terminfo并没有sc0的资料—而vt100的资料几乎
所有的平台上都支持。
#Powermanagementsupport(seeLINTformoreoptions)
deviceapm0atnexus?disableflags0x20#AdvancedPower
Management
高级电源管理支持。使用在膝上型电脑上。
#PCCARD(PCMCIA)support
devicecard
devicepcic0atisa?irq10port0x3e0iomem0xd0000
devicepcic1atisa?irq11port0x3e2iomem0xd4000disable
PCMCIA支持。如果你使用膝上型电脑,你需要这个。
第12页FreeBSD使用手册
#Serial(COM)ports
devicesio0atisa?portIO_COM1flags0x10irq4
devicesio1atisa?portIO_COM2irq3
devicesio2atisa?disableportIO_COM3irq5
devicesio3atisa?disableportIO_COM4irq9
sio0到sio3可看作是MS-DOS系统中的COM1到COM4。如果你使用内置式的数据机,且
占用COM4,而你的系统又有COM2,则你必须修改调制解调器的IRQ为2(IRQ2跟IRQ9是
一样的),这样你才能正常使用调制解调器。部分显示卡(特别是使用S3芯片的卡),用到
0x*2e8这个I/O地址,而一些便宜的串行卡,没办法正确译码16位的I/O寻址空间,因此
两张卡会冲突,导致COM4无法正常使用。每个串行口都要有一个唯一的IRQ,所以COM3与
COM4默认的IRQ将无法使用。
#Parallelport
deviceppc0atisa?irq7
ISA-bus并行接口
deviceppbus#Parallelportbus(required)
提供并行总线的支持。
devicelpt#Printer
提供并口打印机的支持。
注意:要使用并口打印机,就必须同时加入上面三行设置。
deviceplip#TCP/IPoverparallel
这是针对并行网络接口的驱动器。
deviceppi#Parallelportinterfacedevice
普通用途的I/O(“geekport”) IEEE1284I/O。
#devicevpo#Requiresscbusandda
这是针对IomegaZip驱动器的。它要求scbus和da的支持。最好的执行效果是工作在
EPP1.9模式。
#PCIEthernetNICs.
第13页FreeBSD使用手册
devicede#DEC/IntelDC21x4x(``Tulip'')
devicefxp#IntelEtherExpressPRO/100B(82557,82558)
devicetx#SMC9432TX(83c170``EPIC'')
devicevx#3Com3c590,3c595(``Vortex'')
devicewx#IntelGigabitEthernetCard(``Wiseman'')
多种PCI网卡驱动器。注释或删除在你系统中没有的设备。
#PCIEthernetNICsthatusethecommonMIIbuscontrollercode.
devicemiibus#MIIbussupport
MII总线支持对于一些PCI10/100EthernetNICs来说是必需的。
devicedc#DEC/Intel21143andvariousworkalikes
devicerl#RealTek8129/8139
devicesf#AdaptecAIC-6915(``Starfire'')
devicesis#SiliconIntegratedSystemsSiS900/SiS7016
deviceste#SundanceST201(D-LinkDFE-550TX)
devicetl#TexasInstrumentsThunderLAN
devicevr#VIARhine,RhineII
devicewb#WinbondW89C840F
devicexl#3Com3c90x(``Boomerang'',``Cyclone'')
使用MII总线控制器代码的驱动器。
#ISAEthernetNICs.
deviceed0atisa?port0x280irq10iomem0xd8000
deviceex
deviceep
#WaveLAN/IEEE802.11wirelessNICs.Note:theWaveLAN/IEEEreally
#existsonlyasaPCMCIAdevice,sothereisnoISAattachmentneeded
#andresourceswillalwaysbedynamicallyassignedbythepccardcode.
devicewi
#Aironet4500/4800802.11wirelessNICs.Note:thedeclarationbelowwill
第14页FreeBSD使用手册
#workforPCMCIAandPCIcards,aswellasISAcardssettoISAPnP
#mode(thefactorydefault).IfyousettheswitchesonyourISA
#cardforamanuallychosenI/OaddressandIRQ,youmustspecify
#thoseparametershere.
devicean
#Theprobeorderoftheseispresentlydeterminedbyi386/isa/isa_compat.c.
deviceie0atisa?port0x300irq10iomem0xd0000
devicefe0atisa?port0x300
devicele0atisa?port0x300irq5iomem0xd0000
devicelnc0atisa?port0x280irq10drq0
devicecs0atisa?port0x300
devicesn0atisa?port0x300irq10
#requiresPCCARD(PCMCIA)supporttobeactivated
#devicexe0atisa?
ISA以太网驱动器。看看/usr/src/sys/i386/conf/LINT了解一下哪个卡被哪个驱动器
支持。
pseudo-deviceether#Ethernetsupport
如果你有一个以太网卡,ether是必需的。它包含了通用的以太网协议代码。
pseudo-devicesl1#KernelSLIP
Sl是针对SLIP支持的。这已经完全被PPP所代替,它是早期使用的协议。
pseudo-deviceppp1#KernelPPP
ppp提供内核模式(kernel-mode)的PPP拨号支持。另外有一个tun则是用户模式
(user-mode)的PPP支持,tun较有弹性且功能较多。如果你要使用这个PPP驱动程序,请
参考内核模式PPP这一章节。如同sl,number设置系统最多同时能支持几个PPP连接。
pseudo-devicetun#Packettunnel.
tun是使用者模式的PPP软件。这个程序设置相当方便,且速度很快。它有一些特殊的
功能,像是在需要连接时自动拨号(dial-on-demand)。tun后面接的数字设置系统同时能支
持几个PPP连接。参看使用者模式PPP以获得更多信息。
第15页FreeBSD使用手册
pseudo-devicepty#Pseudo-ttys(telnetetc)
pty是虚拟的终端机,或仿真的loginport。Ctelnet或rlogin连接、xterm以及其它
应用程序如emacs会用到pty。number设置系统的pty个数。系统默认值是16,如果你要
提高同时连接数,可以适当增加这个数值,最高可达256个。
pseudo-devicemd#Memory“disks”
Memorydiskpseudo-devices.
pseudo-devicegif4#IPv6andIPv4tunneling
这个执行IPv6与IPv4,IPv4与IPv6,IPv4与IPv4,IPv6与IPv6之间的转换.
pseudo-devicefaith1#IPv6-to-IPv4relaying(translation)
这个伪设备能检测到接收到的数据包,然后把它们发送给IPv4/IPv6翻译程序。
#The`bpf'pseudo-deviceenablestheBerkeleyPacketFilter.
#Beawareoftheadministrativeconsequencesofenablingthis!
pseudo-devicebpf#Berkeleypacketfilter
这是Berkeley的封包过滤器。这个伪设备允许网络接口被放在复杂的模式上,在网络
上捕获每个封包。这些封包能被磁盘捕获或被tcpdump程序检查。
注意:bpfpseudo-device也可以被dhclient用来获得默认路由的IP地址。如果你使
用DHCP,不要注释掉这行。
#USBsupport
#deviceuhci#UHCIPCI->USBinterface
#deviceohci#OHCIPCI->USBinterface
#deviceusb#USBBus(required)
#deviceugen#Generic
#deviceuhid#``HumanInterfaceDevices''
#deviceukbd#Keyboard
#deviceulpt#Printer
#deviceumass#Disks/Massstorage-Requiresscbusandda
#deviceums#Mouse
第16页FreeBSD使用手册
#USBEthernet,requiresmii
#deviceaue#ADMtekUSBethernet
#devicecue#CATCUSBethernet
#devicekue#KawasakiLSIUSBethernet
支持多种USB设备。更多有关FreeBSD支持的设备请参考
/usr/src/sys/i386/conf/LINT。
9.5建立设备的节点
几乎内核中的每个设备在/dev目录下都有对应的节点。这些节点看上去是些规则文件,
但事实上是程序在使用对应的设备时,与内核联系的进入点。当你一开始安装操作系统时,
那些可执行的外壳脚本/dev/MAKEDEV就创建了几乎所有支持的设备。然而,它并不是建立
所有设备,所以当你加入对新设备的支持时,注意确信对应的节点在这个目录下。如果不是,
就加入它们。这儿是一个简单的例子:
确信在内核中加入了IDECD-ROM的支持。可以这样加入:deviceacd0
这意味着你应当在/dev目录下找一些以acd0为起点的入口,通常后面有一个字母,象
c或以r开头表示这是一个raw设备。那些文件不在那儿,必须改变/dev目录然后键入:
#shMAKEDEVacd0
当这些脚本完成后,你要找一下在/dev目录下有acd0c和racd0c等几个入口,表示程
序已经正确执行。
以下是加入声卡节点的例子:
#shMAKEDEVsnd0
注意:当创建完诸如声卡这样的设备节点时,如果其它人有权访问你的机器,可能有
必要在/etc/fbtab文件中添加这些节点来保护系统安全。可看一下fstab的联机手册以了
解更多信息。
依上述的简单程序,建立任何不在GENERIC里的硬件设备节点。
注意:所有的SCSI控制器都使用一样的设备节点,所以你无须重新建立节点。另外,
网卡与SLIP/PPP虚拟设备并没有任何设备节点,所以你不必担心怎么建立节点。
9.6如果出现问题怎么办?
在定制一个内核时,可能会出现四种问题。它们是:
配置失败
第17页FreeBSD使用手册
当你在你的内核描述中看到config命令失败,你可能在某个地方发生了一个小错误。
幸运的是,config会显示出错的那一行的行号,你可以用vi编辑器做修改。例如,
如果你看到:config:line17:syntaxerror
你可以在vi中用命令模式输入17G来跳到17行。比较GENERIC内核或其它参考资料,
以确定你打对关键字。
编译错误
如果编译失败,通常会在你的内核描述中提示一个错误,但config并没有找出错误。
另外,查看一下你的配置信息,如果你仍然无法解决这个问题,可以把你的内核配置
信息发邮件到FreeBSD普通问题邮件列表,它将很快
地被解决。
内核无法启动
如果你的新内核无法启动,或无法识别你的硬件,不要担心!幸运的是,BSD有一个
解决复杂内核错误的很好机制。从FreeBSD的启动loader中,选择一个你要启动的
内核。当配置一个内核时,记得在手头保留一个能正常启动的内核是个好主意。
在用一个好的内核启动后,你可以检查一下你的配置文件,再设法重新建立一个内核。
一个有帮助的文件是/var/log/messages文件,它记载了每个成功启动的所有内核信
息。同样,dmesg命令会列出当前启动中的内核信息。
注意:你在编译内核时,确信保留着一个GENERIC或以其它名字命名的内核。你不能
仅依靠kernel.old,因为当你安装一个新内核时,kernel.old会被最后一次安装的内
核所覆盖。所以,尽快将当前正常工作的内核移到不能正常工作的内核,你可以用ps
命令查一下。解开编译安装内核文件的正确命令是:
#chflagsnoschg/kernel
另外,如果你要设定内核或其它文件的访问限制,以至它不能被移动或修改,可以用
下面的命令:
#chflagsschg/kernel
内核工作,但ps根本就不工作!
如果你安装了一个不同版本的内核到系统,例如,在3.x系统中安装了4.x内核,许
多系统内建的命令象ps和vmstat会根本不工作。你必须重编译libkvm库以及这些
程序。千万不要随意从其它系统拷贝不同版本的内核来使用。
第18页
关键字:

相关信息 用户评论
·教你制作可以随身携带的FreeBSD系统
·FreeBSD5.3与Apache2.0建立列目录
·FreeBSD5.3 Apache ssl认证
·初学者入门:FreeBSD系统的安装与优化
·FREEBSD下搭建支持JSP的WEBSERVER
·FreeBSDhandbook中文版10安全
·FreeBSDhandbook中文版15串口通讯
·FreeBSDhandbook中文版14声卡
·FreeBSDhandbook中文版11打印(1)基本设置
·FreeBSDhandbook中文版11打印(1)基本设置
·FreeBSDhandbook中文版11打印(2)高级打印机设置A.过滤器
·FreeBSDhandbook中文版11打印(2)高级打印机设置B.Header
·FreeBSDhandbook中文版11打印(3)使用打印机
·FreeBSDhandbook中文版12存储
·FreeBSD下Apache2.0运行模型分析及性能调整
·FreeBSDhandbook中文版5XWindow系统
·FreeBSD4.7 Qmail Mysql Vpopmail QmailAdmin Sq
·FREEBSD升级及优化全攻略

 

更多评论

验证码:
验证码