FreeBSD 5-CURRENT 的内核配置与优化

2008-02-23 08:01:23来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

在本文针对4-STABLE的那个版本中已经讨论了削减系统功能的意义。

在某种程度上,对于FreeBSD 5-CURRENT而言,配置内核是必需的。

FreeBSD 5.x是一个充满新特性的系统。目前,5.0-RELEASE已经正式推出,但第五版本这个分支仍然是CURRENT分支,在它成为5-STABLE之前,我们可能还需要等待数个月的时间,这可能意味着一个到两个RELEASE版本。

这篇文章将主要着眼于FreeBSD 5.0-CURRENT的内核配置。据我所知,这篇文章的内容至少在2003年3月以前应该是完全适合的,而在FreeBSD 5-STABLE正式标注之后,也不应该再出现什么本质的变化。当然,保险起见,我个人建议您在进行改动,并将其应用到自己的系统上之前,首先备份内核:

cd /boot
cp -R kernel kernel.good

这样,一旦出现意外情况,您将可以通过在启动时选择/boot/kernel.good/kernel来正确地引导系统。

说到这里,我不得不指出FreeBSD 5在内核文件放置方面的一个非常显著的变化。在5.0之前,内核及模块分别在/kernel和/modules/文件夹中;5-CURRENT为了便于管理,将内核及其模块都放到了/boot/kernel/文件夹。这一变化使得旧版的loader(Cool程序在默认情况下不能正确加载内核文件,当然,指定正确的文件名仍然可以保证4.x的loader(Cool程序正确加载FreeBSD 5内核,但我依旧倾向于按照UPDATING所说的那样,把升级boot, loader这一系列初启程序作为系统升级的一部分。

在正式开始介绍FreeBSD 5的内核配置之前,我还必须介绍5.0新的device.hints配置文件。Device.hints配置文件位于/boot/文件夹,对于没有ISA设备的系统,这个文件基本上是没用的。这个文件取代了FreeBSD 4.x一直沿用的user config机制。FreeBSD开发组期待将来的某个时间重新加入user config机制,以让loader更加人性化,但直到笔者撰写这篇文章的时候为止,这一机制的新实现仍然没有完成。

device.hints由一系列符合下面句法的语句组成:

hint...=

如果你熟悉4.x上的loader(Cool配置指令,那么只需要做少量的转换就可以解决问题:

iomem 改为 maddr iosiz 改为 msize

当然,世界是美好的,FreeBSD提供了一个awk脚本来解决问题。这个脚本位于src/sys/i386/conf/,它的名字是gethints.awk。

贫了这么多,一些读者可能已经等急了。但我还得说一个FreeBSD 5和4的重大区别,那就是LINT没了。

拿掉LINT这事儿跟device.hints有关,为了不把话题扯得太远,我不打算详细描述关于这个文件的故事;先说要紧的:首先,类似4.x风格的LINT文件现在叫NOTES;其次,如果你一定要获得LINT的话,在src/sys/i386/conf里面执行下面的指令:

make LINT

即可。下面我继续“传统上”的那个内核配置文件。这个配置文件是由GENERIC改过来的,当然,删除了一些没必要的注释。红色表示我删除的东西,而蓝色表示我添进去,或做了修改的那些设置。绿色表示我没添进去,但在NOTES中曾出现过的有用的配置。

#
# DELPHIJ -- Kernel configuration file for FreeBSD/i386
#

machine i386
cpu I486_CPU # 默认已经没有i386了,但i486…
cpu I586_CPU # 还有这个i586都不适应我的情况
cpu I686_CPU
ident DELPHIJ # 签上我的名Smile
maxusers 0

# VMWare对于这条指令的模拟有问题。加上这个选项可以大大地
# 提高系统速度;我没有选中它,因为我的系统需要SMP,而且
# 不是VMWare虚拟机Smile SMP和这条选项的连用结果是系统崩溃!
options CPU_DISABLE_CMPXCHG

#静态连接device.hints,而不是从/boot/device.hints加载
#hints "GENERIC.hints" #默认的文件

makeoptions DEBUG=-g # 在内核中包括gdb(1)调试符号-
# 出问题之前,不管我事儿……

# SCHED_4BSD是传统的、经过证明的BSD调度器。它使用全局的
# 运行队列,它与CPU关系不密切,对SMP的性能不是最好的。
# 它有非常好的交互性和优先级选择机制。
#
# SCHED_ULE是新的试验性的调度器,它是为SMP设计的,但在单
# 处理器上运行一样出色。使用这个调度器的用户需要有对出现
# 非预期的崩溃和进行反馈做好心理准备。
options SCHED_4BSD #4BSD scheduler
options SCHED_ULE #ULE scheduler,SMP上快许多
options INET #IPv4协议
options INET6 #IPv6通讯协议-外围设备不让我这么干:~(
options FFS #必须有的FFS(Unix文件系统)
options SOFTUPDATES #SoftUpdates支持,相信我,加上没错的
options UFS_ACL #ACL(访问控制表)支持
options UFS_DIRHASH #访问大目录时,以少量内存为代价提高性能
options MD_ROOT #MD作为根设备
options NFSCLIENT #NFS客户
options NFSSERVER #NFS服务
options NFS_ROOT #NFS作为跟文件系统; 需要NFSCLIENT
options MSDOSFS #MSDOS文件系统
options CD9660 #ISO 9660文件系统

options PROCFS #进程文件系统(需要PSEUDOFS)
options PSEUDOFS #伪文件系统框架
options COMPAT_43 #兼容 BSD 4.3 [必须保留!]
options COMPAT_FREEBSD4 #兼容FreeBSD4
options SCSI_DELAY=2000 #探测SCSI前的延时
options KTRACE #ktrace(1)支持
options SYSVSHM #SYSV共享内存
options SYSVMSG #SYSV消息队列
options SYSVSEM #SYSV信号量
options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B实时扩展
options KBD_INSTALL_CDEV #/dev中安装CDEV
options AHC_REG_PRETTY_PRINT # 调试时显示寄存器bit域
# 驱动程序将因此增大约128K
options AHD_REG_PRETTY_PRINT # 同上,将增大约215K

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:在FREEBSD 5.2中使用Pureftpd MySQL Pureftpd_ph

下一篇:关于FreeBSD 5优化的补充