当前位置: 主页 > 操作系统 > FreeBSD > FreeBSD 5-CURRENT内核配置与优化

FreeBSD 5-CURRENT内核配置与优化

时间:2010-5-19来源:互联网 点击:

      这篇文章将主要着眼于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(程序在默认情况下不能正确加载内核文件,当然,指定正确的文件名仍然可以保证4.x的loader(程序正确加载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(配置指令,那么只需要做少量的转换就可以解决问题:

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 # 签上我的名
maxusers 0

# VMWare对于这条指令的模拟有问题。加上这个选项可以大大地
# 提高系统速度;我没有选中它,因为我的系统需要SMP,而且
# 不是VMWare虚拟机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

# current分支调试[我不打算翻译了,如果你到了能调试内核
# 的层次,应该能看懂
options DDB #Enable the kernel debugger
options INVARIANTS #Enable calls of extra sanity checking
options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS
options WITNESS #Enable checks to detect deadlocks and cycles
options WITNESS_SKIPSPIN #Don‘t run witness on spinlocks for speed

# SMP支持
options SMP # Symmetric MultiProcessor Kernel
options APIC_IO # Symmetric (APIC) I/O

device isa
device eisa
device pci

# 软驱支持
device fdc

# DEVICE_POLLING可以让dc, fxp和sis设备更平稳地运行,不幸
# 的是它不能和SMP连用。
options DEVICE_POLLING

options AUTO_EOI_1 # 8259A自动中断结束控制方式。
# 可以提高系统性能
options AUTO_EOI_2 # 没证明过这东西能用,我的机器崩了

# 将这个文件保存到内核,这样将来可以用
# strings -n 3 /boot/kernel/kernel | sed -n ‘s/^___//p‘
# 找回
options INCLUDE_CONFIG_FILE

options IPSEC #IPSec内核级支持,与IPSec互斥

options FAST_IPSEC # 快速IPSEC实现(需要相关硬件)

options IPFILTER # ipfilter支持。

options RANDOM_IP_ID # 此选项有效阻止远程探测TCP报文生成

options TCP_DROP_SYNFIN #丢弃SYN FIN的TCP包

options ZERO_COPY_SOCKETS # 这是对4.4BSD设计缺陷的重大改进
# 可以极大地提高网络性能

device crypto # 核心crypto(加密)支持
device cryptodev # /dev/crypto硬件访问支持

device hifn # Hifn 7951, 7781, etc.

options PANIC_REBOOT_WAIT_TIME=0 # panic时重启等待时间

# 请参考tuning(7)
options NMBCLUSTERS=4096 # 对于我的服务器合适的NMBCLUSTER

makeoptions CONF_CFLAGS=-fno-builtin #不允许使用 memcmp等

# 应用程序最大、堆栈、默认内存大小。内存2GB
options MAXDSIZ=(2047UL*1024*1024)
options MAXSSIZ=(128UL*1024*1024)
options DFLDSIZ=(2047UL*1024*1024)

# ufs1 扩展属性支持。Ufs2不需要
options UFS_EXTATTR
options UFS_EXTATTR_AUTOSTART

# GEOM支持
options GEOM_AES
options GEOM_APPLE
options GEOM_BDE
options GEOM_BSD
options GEOM_GPT
options GEOM_MBR
options GEOM_PC98
options GEOM_SUNLABEL

options QUOTA # 磁盘配额支持

站长资讯网
.
分页: [1] [2]
TAG: freebsd 内核 配置优化
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言