分享
 
 
 

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

王朝system·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

在本文针对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(

程序在默认情况下不能正确加载内核文件,当然,指定正确的文件名仍然可以保证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 # 磁盘配额支持

# 优化SMP性能,把mutex(互斥体)变为自旋锁。我不敢用……

options ADAPTIVE_MUTEXES

# ATA 和 ATAPI 设备

device ata

device atadisk # ATA 磁盘驱动器

device atapicd # ATAPI光驱

device atapifd # ATAPI软驱

device atapist # ATAPI磁带机(财主的玩意

options ATA_STATIC_ID #静态设备标号

# SCSI 控制器

device ahb # EISA AHA1742 family

device ahc # AHA2940 and onboard AIC7xxx devices

device ahd # AHA39320/29320 and onboard AIC79xx devices

device amd # AMD 53C974 (Tekram DC-390(T))

device isp # Qlogic family

device mpt # LSI-Logic MPT-Fusion

#device ncr # NCR/Symbios Logic

device sym # NCR/Symbios Logic (newer chipsets + those of `ncr')

device trm # Tekram DC395U/UW/F DC315U adapters

device adv # Advansys SCSI adapters

device adw # Advansys wide SCSI adapters

device aha # Adaptec 154x SCSI adapters

device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.

device bt # Buslogic/Mylex MultiMaster SCSI adapters

device ncv # NCR 53C500

device nsp # Workbit Ninja SCSI-3

device stg # TMC 18C30/18C50

# 通过SCSI接口的RAID控制器

device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID

device ciss # Compaq Smart RAID 5*

device dpt # DPT Smartcache III, IV - See NOTES for options!

device iir # Intel Integrated RAID

device mly # Mylex AcceleRAID/eXtremeRAID

# SCSI设备

device scbus # SCSI bus (required)

device ch # SCSI media changers

device da # Direct access (disks)

device sa # Sequential Access (tape etc)

device cd # CD

device pass # Passthrough device (direct SCSI access)

device ses # SCSI Environmental Services (and SAF-TE)

# RAID控制器

device aac # Adaptec FSA RAID

device aacp # SCSI passthrough for aac (requires CAM)

device amr # AMI MegaRAID

device ida # Compaq Smart RAID

device mlx # Mylex DAC960 family

device pst # Promise Supertrak SX6000

device twe # 3ware ATA RAID

# atkbdc0同时用于控制键盘和PS/2鼠标器

device atkbdc # AT键盘控制器

device atkbd # AT键盘

device psm # PS/2 mouse

device vga # VGA显示卡

# 启动画面和屏幕保护程序[我的服务器平时不接显示器]

device splash

# syscons是默认的控制台驱动

device sc

# 启用VT220兼容的控制台驱动pcvt

#device vt

#options XSERVER # support for X server on a vt console

#options FAT_CURSOR # start with block cursor

device agp # AGP支持

# 浮点运算支持-必须保留

device npx

# 电源管理

#device apm

# i8254挂起及恢复支持

device pmtimer

# PCCARD (PCMCIA)支持

device cbb # cardbus (yenta) bridge

#device pcic # ExCA ISA and PCI bridges

device pccard # PC Card (16-bit) bus

device cardbus # CardBus (32-bit) bus

# 串口(COM)支持

device sio # 8250, 16[45]50 based serial ports

# 并口支持

device ppc

device ppbus # Parallel port bus (required)

device lpt # Printer

device plip # TCP/IP over parallel

device ppi # Parallel port interface device

#device vpo # Requires scbus and da

# 独立 PCI 以太网卡支持,这些设备不需要miibus,

# 非SMP情况下还支持DEVICE_POLLING,可惜我一个也没有

device de # DEC/Intel DC21x4x (``Tulip'')

device em # Intel PRO/1000 adapter Gigabit Ethernet Card

device txp # 3Com 3cR990 (``Typhoon'')

device vx # 3Com 3c590, 3c595 (``Vortex'')

device miibus # MII bus支持

# 以下PCI以太网卡需要MII bus支持才能用

device dc # DEC/Intel 21143 and various workalikes

device fxp # Intel EtherExpress PRO/100B (82557, 82558)

device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc')

device rl # RealTek 8129/8139

device sf # Adaptec AIC-6915 (``Starfire'')

device sis # Silicon Integrated Systems SiS 900/SiS 7016

device ste # Sundance ST201 (D-Link DFE-550TX)

device tl # Texas Instruments ThunderLAN

device tx # SMC EtherPower II (83c170 ``EPIC'')

device vr # VIA Rhine, Rhine II

device wb # Winbond W89C840F

device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')

device bge # Broadcom BCM570xx 千兆以太网卡

# ISA网卡

device cs # Crystal Semiconductor CS89x0 NIC

# 'device ed' 需要 'device miibus'

device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards

device ex # Intel EtherExpress Pro/10 and Pro/10+

device ep # Etherlink III based cards

device fe # Fujitsu MB8696x based cards

device lnc # NE2100, NE32-VL Lance Ethernet cards

device sn # SMC's 9000 series of ethernet chips

device xe # Xircom pccard ethernet

# ISA设备,有个性的代码……

#device le

# Wireless NIC cards

device wlan # 802.11 support

device an # Aironet 4500/4800 802.11 wireless NICs.

device awi # BayStack 660 and others

device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.

#device wl # Older non 802.11 Wavelan wireless NIC.

# 伪设备

device random # 随机数采集发生器(/dev/random, /dev/urandom)

device loop # 自环网络

device ether # 以太网支持

device sl # 内核级 SLIP

device ppp # 内核级 PPP

device tun # 包隧道(ppp(

, nos-tun(
)

device pty # 伪tty (telnet等等)

device md # 虚拟盘

device gif # IPv6对IPv4隧道

device faith # IPv6对IPv4转发

# `bpf'伪设备将启用伯克利数据包过滤器。

# 小心由此带来的管理问题

pseudo-device bpf #Berkeley packet filter

# USB support

device uhci # UHCI PCI->USB interface

device ohci # OHCI PCI->USB interface

device usb # USB Bus (required)

#device udbp # USB Double Bulk Pipe devices

device ugen # Generic

device uhid # "Human Interface Devices"

device ukbd # Keyboard

device ulpt # Printer

device umass # Disks/Mass storage - Requires scbus and da

device ums # Mouse

device urio # Diamond Rio 500 MP3 player

device uscanner # Scanners

# USB Ethernet, requires mii

device aue # ADMtek USB ethernet

device cue # CATC USB ethernet

device kue # Kawasaki LSI USB ethernet

粗略地说说上面的选择。COM, PPC这些东西不用我说,这台机器并不需要连接打印设备,也不需要连接COM口键盘,所以一律去掉。使用ULE调度器的原因是为了给FreeBSD的开发做点贡献,如果你不喜欢冒险的话,可以考虑使用4BSD的,当然,话说回来,如此在意稳定性的话,用4-STABLE可能是更好的选择。

上述内核配置文件需要最新的CURRENT代码。如果你没有和FreeBSD中央CVS服务器同步的话,那么你可能需要首先同步代码;如果还有问题,希望能收到你的来信

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有