这篇文章将主要着眼于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 # VMWare对于这条指令的模拟有问题。加上这个选项可以大大地 #静态连接device.hints,而不是从/boot/device.hints加载 makeoptions DEBUG=-g # 在内核中包括gdb(1)调试符号- # SCHED_4BSD是传统的、经过证明的BSD调度器。它使用全局的 options PROCFS #进程文件系统(需要PSEUDOFS) |
# 的层次,应该能看懂
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 内核 配置优化