FreeBSD服务器的安装与优化(内核优化)

更新时间:2024-03-25 09:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

“简单的东西不容易出问题。”

至理名言!事实上,削减操作系统中那些对你没用的功能是一件非常重要的事情。这不仅仅意味着一个更小的操作系统,占用更少的磁盘空间(现在的硬盘少说也有几十GB,几兆的空间根本就是九牛一毛),而且意味着你被攻击的可能性也更低——简而言之,你不需要担心操作系统中没有安装的模块存在问题会对你造成影响。

这篇文章中,我们将一起对FreeBSD-i386的内核进行优化配置。这篇文章是针对

FreeBSD4.7-STABLE写的,并且,FreeBSD 4.x的配置不会和这篇文章有太大出入。如果你要优化FreeBSD 5或FreeBSD 2/3的内核的话,则需要仔细参考它们的LINT文件了(后面将会提到)。

[注意:FreeBSD 5.0预定将于2002年11月20日发布。FreeBSD的开发组非常重视发行版本的质量,并认为这比发行版本的计划还重要,但由于同样的原因,我们往往会发现FreeBSD实际发行的版本比预定计划晚一些,通常在半个月之内。FreeBSD 5.0作为FreeBSD近期最为重要的发行版本,很可能也会延后发表,但笔者个人认为无论如何我们在今年年底之前肯定是可以看到最终的发行版本的。FreeBSD 5.0对系统进行了大量的修改,这一系列的文章将在FreeBSD 5.0发布当天发表针对5.0的修订版本,而现有版本将保留,但进入维护阶段,不再引入新的内容。]

FreeBSD的源代码可以直接从中央cvsup服务器同步,也可以作为系统的一部分在安装的时候一兵装上。前面已经说过如何同步源代码,在此不再赘述。FreeBSD的源代码(通常在/usr/src)包含建造基本系统的全部代码,而在/usr/src/sys中则有若干个目录,对应不同的计算机体系结构(4.x只支持i386和alpha)。i386是一个泛指的名字,包含了与Intel 80386兼容的所有机器,并不是特指80386。

简单介绍一下FreeBSD的内核文件。在4.x系统中,/kernel这个文件是默认的内核,通常正常启动使用的就是它。 /kernel.GENERIC这个文件是兼容性较强的内核,如果/kernel无法引导系统, 就得靠这个文件来引导。/kernel.old是本次make kernel之前的内核,通常如果你的kernel坏掉, 也可以考虑使用/kernel.old来引导系统。 /modules/是内核的模块,而/modules.old/是对应/kernel.old的模块。这些文件在每次替换kernel的时候都会同时替换。

在5.0中,内核以及内核的模块都被保存在/boot/kernel中。

在/usr/src/sys/i386/conf中有两个配置文件,GENERIC和LINT。其中GENERIC是make kernel的默认配置文件,直接make kernel生成的是GENERIC内核,但安装时命名为/kernel。系统在安装时会安装一个kernel.GENERIC,以后,这个文件不会跟随系统的make kernel更新,因此,如果你认为这个文件有必要更新的话,需要手工make kernel,并把/kernel改名为kernel.GENERIC。当然,通常并不需要这样做。 LINT是包括几乎所有内核编译配置详细信息的文件。这个配置并不是用来真正建立

kernel的,他的主要用途是向用户展示可用的内核编译配置。在修改内核编译配置时,最好先参考这个文件。

为了配置自己的内核,应将GENERIC复制为一个另外的文件。习惯上这个文件和主机名相同。例如,我把自己的这台Web机器命名为apache.intranet.frontfree.net,就把配置文件命名为APACHE:

cd /usr/src/sys/i386/conf cp GENERIC APACHE

随后,用ee APACHE编辑它。我们拿一个实际的GENERIC文件来说明。 为了节省篇幅,这个文件头上的注释被删掉了一部分。

machine i386 # 体系模型为i386 cpu I386_CPU # 支持80386 cpu I486_CPU # 支持80486 cpu I586_CPU # 支持Pentium

cpu I686_CPU # 支持Pentium Pro以及更高 ident GENERIC # 内核文件的名字

maxusers 0 # 自动检测同时允许的最大用户数 #makeoptions DEBUG=-g # 包含调试符号。通常只有current版本打开 options MATH_EMULATE #支持协处理器模拟 options INET #支持互联网 options INET6 #IPv6通讯协议 options FFS #伯克利快速文件系统 options FFS_ROOT #FFS作为根设备[必须保留] options SOFTUPDATES #打开FFS soft updates支持 options UFS_DIRHASH #提高大型目录的支持 options MFS #内存文件系统 options MD_ROOT #MD作为根设备 options NFS #Network Filesystem options NFS_ROOT #NFS作为根设备(需要NFS) options MSDOSFS #MSDOS文件系统

options CD9660 #ISO 9660文件系统(光盘)

options CD9660_ROOT #CD-ROM作为根设备(需要CD9660) options PROCFS #进程文件系统

options COMPAT_43 #兼容4.3BSD[必须保留]

options SCSI_DELAY=15000 #检测SCSI设备前的延时(ms) options UCONSOLE #用户可以夺取控制台 options USERCONFIG #boot -c编辑器 editor options VISUAL_USERCONFIG #菜单式boot -c编辑器 options KTRACE #ktrace(1)支持 options SYSVSHM #SYSV-风格的共享内存 options SYSVMSG #SYSV-风格的消息队列

options SYSVSEM #SYSV-风格的信号量(semaphores) options P1003_1B #Posix P1003_1B实时扩展 options _KPOSIX_PRIORITY_SCHEDULING

options ICMP_BANDLIM #对恶意ICMP请求进行限制 options KBD_INSTALL_CDEV # 在/dev安装一个CDEV设备 # 下面两项在制作对称多处理器(SMP)内核时需要 #options SMP #对称多处理器内核 #options APIC_IO #对称(APIC) I/O device isa device eisa device pci # 软驱

device fdc0 at isa? port IO_FD1 irq 6 drq 2

device fd0 at fdc0 drive 0 device fd1 at fdc0 drive 1 #

# 如果使用东芝Libretto以及他的Y-E Y-E Data PCMCIA软驱 # 不要使用上面的fdc0,而应使用 #device fdc0 # ATA以及ATAPI设备

device ata0 at isa? port IO_WD1 irq 14 device ata1 at isa? port IO_WD2 irq 15 device ata

device atadisk # ATA 磁盘驱动器(IDE硬盘) device atapicd # ATAPI 光驱 device atapifd # ATAPI 软驱 device atapist # ATAPI 磁带机 options ATA_STATIC_ID #静态设备编号 # SCSI控制器

device ahb # EISA AHA1742 family device ahc # AHA2940 板载AIC7xxx设备 device amd # AMD 53C974 (Tekram DC-390(T)) device isp # Qlogic family device ncr # NCR/Symbios Logic

device sym # NCR/Symbios Logic (较新的芯片组) options SYM_SETUP_LP_PROBE_MAP=0x40

# 使用ncr可以在配置了sym和ncr的情况下挂接旧的NCR设备 device adv0 at isa? device adw

device bt0 at isa? device aha0 at isa? device aic0 at isa? device ncv # NCR 53C500

device nsp # Workbit Ninja SCSI-3 device stg # TMC 18C30/18C50 # SCSI 外设

device scbus # SCSI 总线(如果使用SCSI设备,必须有) device da # Direct Access (硬盘)

device sa # Sequential Access (磁带,等等) device cd # CD

device pass # Passthrough device (直接 SCSI 访问) # 通过SCSI子系统接口的RAID控制器

device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID device dpt # DPT Smartcache - See LINT for options! device iir # Intel Integrated RAID

device mly # Mylex AcceleRAID/eXtremeRAID device ciss # Compaq SmartRAID 5* series

# RAID控制器

device aac # Adaptec FSA RAID, Dell PERC2/PERC3 device aacp # SCSI passthrough for aac (requires CAM) device ida # Compaq Smart RAID device amr # AMI MegaRAID

device mlx # Mylex DAC960 family device twe # 3ware Escalade # atkbdc0 控制键盘和PS/2鼠标

device atkbdc0 at isa? port IO_KBD device atkbd0 at atkbdc? irq 1 flags 0x1 device psm0 at atkbdc? irq 12 device vga0 at isa? # 启动画面和屏幕保护程序 pseudo-device splash

# syscons 是默认的控制台驱动,类似SCO控制台 device sc0 at isa? flags 0x100

# 对于pcvt vt220控制台,启用这个和PCVT_FREEBSD #device vt0 at isa?

#options XSERVER # 在vt控制台支持X服务器 #options FAT_CURSOR # 使用大光标

# 如果你是用ThinkPad,将下面的一行和其他PCVT相关设备的注释去掉 #options PCVT_SCANSET=2 # IBM使用非标准键盘 # 浮点运算支持 - 请勿禁用

device npx0 at nexus? port IO_NPX irq 13 # 电源管理支持

device apm0 at nexus? disable flags 0x20 # Advanced Power Management # PCCARD (PCMCIA) 支持 device card

device pcic0 at isa? irq 0 port 0x3e0 iomem 0xd0000

device pcic1 at isa? irq 0 port 0x3e2 iomem 0xd4000 disable # 串口(COM)

device sio0 at isa? port IO_COM1 flags 0x10 irq 4 device sio1 at isa? port IO_COM2 irq 3

device sio2 at isa? disable port IO_COM3 irq 5 device sio3 at isa? disable port IO_COM4 irq 9 # 并口

device ppc0 at isa? irq 7

device ppbus # 并口总线 (所有并口设备都需要) device lpt # 打印机 device plip # 并口TCP/IP device ppi # 并口接口设备 #device vpo # 需要scbus和da # PCI 以太网适配器

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

device em # Intel PRO/1000 adapter Gigabit Ethernet Card (``Wiseman'') device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') # 使用公共的MII总线控制器代码的PCI以太网适配器 # 注意:一定要保留'device miibus'以确保可用 device miibus # MII总线支持

device dc # DEC/Intel 21143 and various workalikes device fxp # Intel EtherExpress PRO/100B (82557, 82558) device pcn # AMD Am79C97x PCI 10/100 NICs 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 BCM570x (``Tigon III'') # ISA以太网适配器

# 'device ed' 需要 'device miibus'

device ed0 at isa? port 0x280 irq 10 iomem 0xd8000 device ex device ep

device fe0 at isa? port 0x300 # Xircom Ethernet device xe

# PRISM I IEEE 802.11b wireless NIC. device awi

# WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really # exists only as a PCMCIA device, so there is no ISA attachment needed # and resources will always be dynamically assigned by the pccard code. device wi

# Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will # work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP # mode (the factory default). If you set the switches on your ISA # card for a manually chosen I/O address and IRQ, you must specify # those parameters here. device an

# The probe order of these is presently determined by i386/isa/isa_compat.c. device ie0 at isa? port 0x300 irq 10 iomem 0xd0000 #device le0 at isa? port 0x300 irq 5 iomem 0xd0000 device lnc0 at isa? port 0x280 irq 10 drq 0 device cs0 at isa? port 0x300

device sn0 at isa? port 0x300 irq 10 # 伪设备 - 数字表示分配多少个 pseudo-device loop # 环回网络 pseudo-device ether # 以太网支持 pseudo-device sl 1 # 核心级SLIP pseudo-device ppp 1 # 核心级PPP pseudo-device tun # 数据包隧道

pseudo-device pty # 伪-tty(telnet等等) pseudo-device md # 内存虚拟盘 pseudo-device gif # IPv6和IPv4隧道

pseudo-device faith 1 # IPv6-to-IPv4转发(翻译) # `bpf'伪设备将启用伯克利数据包过滤器。 # 小心由此带来的管理问题

pseudo-device bpf #Berkeley packet filter # USB支持

device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device usb # USB Bus (required) device ugen # Generic

device uhid # \device ukbd # Keyboard device ulpt # Printer

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

device uscanner # Scanners

device urio # Diamond Rio MP3 Player # USB 以太网,需要mii

device aue # ADMtek USB ethernet device cue # CATC USB ethernet

device kue # Kawasaki LSI USB ethernet

现在要做的是去掉我们不需要的任何设备。(红色、中划线表示删除,红色无修饰表示修改,蓝色表示增加)。这份配置是生产服务器上的配置文件。

# # APACHE -- FreeBSD/i386内核配置文件 # machine i386 # 体系模型为i386 cpu I386_CPU # 支持80386 cpu I486_CPU # 支持80486 cpu I586_CPU # 支持Pentium cpu I686_CPU # 支持Pentium Pro以及更高 ident APACHE # 内核文件的名字 maxusers 0 # 自动检测同时允许的最大用户数 #makeoptions DEBUG=-g # 包含调试符号。通常只有current版本打开 options MATH_EMULATE #支持协处理器模拟 #options GPL_MATH_EMULATE #GPL模拟更好,但仍然没必要,P III有内建协处理器 options INET #支持互联网 options INET6 #IPv6通讯协议 options FFS #伯克利快速文件系统 options FFS_ROOT #FFS作为根设备[必须保留] options SOFTUPDATES #打开FFS soft updates支持 options UFS_DIRHASH #提高大型目录的支持 options MFS #内存文件系统 options MD_ROOT #MD作为根设备 options NFS #Network Filesystem options NFS_ROOT #NFS作为根设备(需要NFS) options MSDOSFS #MSDOS文件系统 options CD9660 #ISO 9660文件系统(光盘) options CD9660_ROOT #CD-ROM作为根设备(需要CD9660) options PROCFS #进程文件系统 options COMPAT_43 #兼容4.3BSD[必须保留] options SCSI_DELAY=5000 #检测SCSI设备前的延时(ms) options UCONSOLE #用户可以夺取控制台[没有X,不用] options USERCONFIG #boot -c编辑器 editor options VISUAL_USERCONFIG #菜单式boot -c编辑器 options KTRACE #ktrace(1)支持 options SYSVSHM #SYSV-风格的共享内存 options SYSVMSG #SYSV-风格的消息队列 options SYSVSEM #SYSV-风格的信号量(semaphores) options P1003_1B #Posix P1003_1B实时扩展 options _KPOSIX_PRIORITY_SCHEDULING options ICMP_BANDLIM #对恶意ICMP请求进行限制[例如flood ping] options KBD_INSTALL_CDEV # 在/dev安装一个CDEV设备 options CPU_ENABLE_SSE #启用SSE支持(Pentium III) #options CPU_ATHLON_SSE_HACK #如果你的BIOS不能正确识别Athlon SSE #options NO_F00F_HACK #如果你使用Pentium且没有F00F bug # 对ISA总线,AUTO_EOI将启用8259A的自动EOI功能 # 这意味着每次中断调用节省0.7-1.25微秒,但不应用于笔记本 options AUTO_EOI_1 #options AUTO_EOI_2 # 请不要和AUTO_EOI_1同时打开,否则会崩溃。 #options MAXMEM=\除非你的BIOS设置不正确造成 #无法检测内存大小,单位是KB #在xntpd(的监督下启用内核相同步逻辑 #options PPS_SYNC #IPFirewall。我们需要的功能IPFilter都提供,并且更高效 #除非你需要IPFirewall的某些专有功能,否则这部分不必编译 #options IPFIREWALL #防火墙 #options IPFIREWALL_VERBOSE #允许防火墙日志 #options IPFIREWALL_FORWARD #允许透明代理 #options IPFIREWALL_VERBOSE_LIMIT=100 #限制日至

#options IPFIREWALL_DEFAULT_TO_ACCEPT #默认允许所有IP包 #options IPFW2 # IPFW2,这一特性并非4.x默认。 options IPFILTER #ipfilter支持 options IPFILTER_LOG #ipfilter日志

options IPFILTER_DEFAULT_BLOCK #默认阻断所有IP包 # 静态数据包过滤许可规则(直接放入内核) options ACCEPT_FILTER_DATA options ACCEPT_FILTER_HTTP

#options DEVICE_POLLING #改善网络响应时间,但realtek不支持 options IPSTEALTH #支持秘密IP转发

options RANDOM_IP_ID #随机IP ID,阻止信息泄漏

#options TCP_DROP_SYNFIN #抛弃SYN+FIN包,阻止检测服务器 #的TCP协议栈、操作系统,但这对Web #服务器是不推荐的,因为不符合RFC1644 #options QUOTA #启用配额支持,但此处没用

makeoptions CONF_CFLAGS=-fno-builtin #禁用memcpy等GCC默认的影响性能的设置 # 根据内存大小配置应用程序可用的最大内存 # 这台机器有1GB内存

# FreeBSD默认是允许使用128MB

options MAXDSIZ=\options MAXSSIZ=\options DFLDSIZ=\

#options PMAP_SHPGPERPROC=201 #每一进程的可用PV项数。 #options NO_SWAPPING #禁用交换区。不推荐

options PANIC_REBOOT_WAIT_TIME=0 #内核异常(kernel panic)立即重启 #核心内存大小限制。我倾向使用默认值

#options VM_KMEM_SIZE=\#options VM_KMEM_SIZE_MAX=\#options VM_KMEM_SIZE_SCALE=\

#将这份配置文件保存到kernel文件中,以便以后读取 #使用这样的命令:

# strings -n 3 /kernel | sed -n 's/^___//p' > APACHE #这里我们不需要这样做。

#options INCLUDE_CONFIG_FILE # 包含配置文件到内核中

#options USER_LDT #某些ports需要这么做,未来的FreeBSD可能也需要 # 下面两项在制作对称多处理器(SMP)内核时需要 #options SMP #对称多处理器内核 #options APIC_IO #对称(APIC) I/O device isa device eisa device pci

# 软驱 device fdc0 at isa? port IO_FD1 irq 6 drq 2 device fd0 at fdc0 drive 0 device fd1 at fdc0 drive 1 # # 如果使用东芝Libretto以及他的Y-E Y-E Data PCMCIA软驱 # 不要使用上面的fdc0,而应使用 #device fdc0 # ATA以及ATAPI设备 # 下面两行被删去,因为新系统不再需要它们。 device ata0 at isa? port IO_WD1 irq 14 device ata1 at isa? port IO_WD2 irq 15 device ata device atadisk # ATA 磁盘驱动器(IDE硬盘) device atapicd # ATAPI 光驱 device atapifd # ATAPI 软驱 device atapist # ATAPI 磁带机 options ATA_STATIC_ID #静态设备编号[新系统不再需要] # SCSI控制器 device ahb # EISA AHA1742 family device ahc # AHA2940 板载AIC7xxx设备 device amd # AMD 53C974 (Tekram DC-390(T)) device isp # Qlogic family device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (较新的芯片组) options SYM_SETUP_LP_PROBE_MAP=0x40 # 使用ncr可以在配置了sym和ncr的情况下挂接旧的NCR设备 device adv0 at isa? device adw device bt0 at isa? device aha0 at isa? device aic0 at isa? device ncv # NCR 53C500 device nsp # Workbit Ninja SCSI-3 device stg # TMC 18C30/18C50 # SCSI 外设 device scbus # SCSI 总线(如果使用SCSI设备,必须有) device da # Direct Access (硬盘) device sa # Sequential Access (磁带,等等) device cd # CD device pass # Passthrough device (直接 SCSI 访问) # 通过SCSI子系统接口的RAID控制器 device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID device dpt # DPT Smartcache - See LINT for options! device iir # Intel Integrated RAID device mly # Mylex AcceleRAID/eXtremeRAID device ciss # Compaq SmartRAID 5* series # RAID控制器 device aac # Adaptec FSA RAID, Dell PERC2/PERC3 device aacp # SCSI passthrough for aac (requires CAM) device ida # Compaq Smart RAID device amr # AMI MegaRAID device mlx # Mylex DAC960 family device twe # 3ware Escalade # atkbdc0 控制键盘和PS/2鼠标[这台机器没配鼠标,也不用图形界面] device atkbdc0 at isa? port IO_KBD device atkbd0 at atkbdc? irq 1 flags 0x1 device psm0 at atkbdc? irq 12 #鼠标器 device vga0 at isa? options VGA_NO_FONT_LOADING # 不需要保存/加载字体[节省内存] options VGA_NO_MODE_CHANGE # 不需要修改显示模式[节省内存] # 启动画面和屏幕保护程序[我的服务器平时不接显示器] pseudo-device splash # syscons 是默认的控制台驱动,类似SCO控制台 device sc0 at isa? flags 0x100 options MAXCONS=4 # 不需要更多的控制台 options SC_DISABLE_REBOOT # 禁止Ctrl+Alt+Del重启,必须以root登录。 options SC_NO_CUTPASTE # 禁用剪贴板[节省内存] options SC_NO_FONT_LOADING # 禁用字体加载[节省内存] options SC_NO_SYSMOUSE # 禁用鼠标[节省内存] # 对于pcvt vt220控制台,启用这个和PCVT_FREEBSD #device vt0 at isa? #options XSERVER # 在vt控制台支持X服务器 #options FAT_CURSOR # 使用大光标 # 如果你是用ThinkPad,将下面的一行和其他PCVT相关设备的注释去掉 #options PCVT_SCANSET=2 # IBM使用非标准键盘 # 浮点运算支持 - 请勿禁用 device npx0 at nexus? port IO_NPX irq 13 # 电源管理支持[这台机器期待长期运行] device apm0 at nexus? disable flags 0x20 # Advanced Power Management # PCCARD (PCMCIA) 支持 device card device pcic0 at isa? irq 0 port 0x3e0 iomem 0xd0000 device pcic1 at isa? irq 0 port 0x3e2 iomem 0xd4000 disable # 串口(COM) device sio0 at isa? port IO_COM1 flags 0x10 irq 4 device sio1 at isa? port IO_COM2 irq 3 device sio2 at isa? disable port IO_COM3 irq 5

device sio3 at isa? disable port IO_COM4 irq 9 # 并口 device ppc0 at isa? irq 7 device ppbus # 并口总线 (所有并口设备都需要) device lpt # 打印机 device plip # 并口TCP/IP device ppi # 并口接口设备 #device vpo # 需要scbus和da # PCI 以太网适配器 device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 adapter Gigabit Ethernet Card (``Wiseman'') device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') # 使用公共的MII总线控制器代码的PCI以太网适配器 # 注意:一定要保留'device miibus'以确保可用 device miibus # MII总线支持 device dc # DEC/Intel 21143 and various workalikes device fxp # Intel EtherExpress PRO/100B (82557, 82558) device pcn # AMD Am79C97x PCI 10/100 NICs 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 BCM570x (``Tigon III'') # ISA以太网适配器 # 'device ed' 需要 'device miibus' device ed0 at isa? port 0x280 irq 10 iomem 0xd8000 device ex device ep device fe0 at isa? port 0x300 # Xircom Ethernet device xe # PRISM I IEEE 802.11b wireless NIC. device awi # WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really # exists only as a PCMCIA device, so there is no ISA attachment needed # and resources will always be dynamically assigned by the pccard code. device wi # Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will # work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP # mode (the factory default). If you set the switches on your ISA # card for a manually chosen I/O address and IRQ, you must specify # those parameters here. device an # The probe order of these is presently determined by i386/isa/isa_compat.c. device ie0 at isa? port 0x300 irq 10 iomem 0xd0000 #device le0 at isa? port 0x300 irq 5 iomem 0xd0000 device lnc0 at isa? port 0x280 irq 10 drq 0 device cs0 at isa? port 0x300 device sn0 at isa? port 0x300 irq 10 # 伪设备 - 数字表示分配多少个 pseudo-device loop # 环回网络 pseudo-device ether # 以太网支持 pseudo-device sl 1 # 核心级SLIP pseudo-device ppp 1 # 核心级PPP pseudo-device tun # 数据包隧道 pseudo-device pty # 伪-tty(telnet等等) pseudo-device md # 内存虚拟盘 pseudo-device gif # IPv6和IPv4隧道 pseudo-device faith 1 # IPv6-to-IPv4转发(翻译) # `bpf'伪设备将启用伯克利数据包过滤器。 # 小心由此带来的管理问题 pseudo-device bpf #Berkeley packet filter # USB支持 device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device usb # USB Bus (required) device ugen # Generic device uhid # \device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse device uscanner # Scanners device urio # Diamond Rio MP3 Player # USB 以太网,需要mii device aue # ADMtek USB ethernet device cue # CATC USB ethernet device kue # Kawasaki LSI USB ethernet LINT中对于配置有更详细的说明。由于时间关系,这里不给出LINT的完整翻译。对于常用的LINT配置(蓝色

,但被注释的部分),我做了一点说明。

需要说明的是,我个人的经验,在较旧的AMD处理器上运行FreeBSD服务器不是一个明智的选择。我个人的经验是,在K6上运行FreeBSD,只要CPU占用超过98%,系统就会死机。这可能是由于FreeBSD的设计过分地挖掘了系统的性能(按FreeBSD.org自己的说法,榨干服务器的每一滴油,旧的AMD处理器可能会吃不消;但我在双AMD Athlon MP 1900+上运行FreeBSD没有出现类似的情况。与AMD不同,在Intel的全系列处理器上(包括存在F00F bug的Pentium处理器,486,Pentium-III, Pentium 4, Celeron-II 667等等)我从未遇到过任何问题。

这台服务器的网卡使用的是Realtek-8139芯片,这样的网卡在市场上非常常见。为了确认你的网卡型号,请运行ifconfig(。

编辑完配置文件,是用下面的命令编译、安装内核:

cd /usr/src

make kernel KERNCONF=APACHE

LINT中对于配置有更详细的说明。由于时间关系,这里不给出LINT的完整翻译。对于常用的LINT配置(蓝色,但被注释的部分),我做了一点说明。 需要说明的是,我个人的经验,在较旧的AMD处理器上运行FreeBSD服务器不是一个明智的选择。我个人的经验是,在K6上运行FreeBSD,只要CPU占用超过98%,系统就会死机。这可能是由于FreeBSD的设计过分地挖掘了系统的性能(按FreeBSD.org自己的说法,榨干服务器的每一滴油,旧的AMD处理器可能会吃不消;但我在双AMD Athlon MP 1900+上运行FreeBSD没有出现类似的情况。与AMD不同,在Intel的全系列处理器上(包括存在F00F bug的Pentium处理器,486,Pentium-III, Pentium 4, Celeron-II 667等等)我从未遇到过任何问题。

这台服务器的网卡使用的是Realtek-8139芯片,这样的网卡在市场上非常常见。为了确认你的网卡型号,请运行ifconfig(。

编辑完配置文件,是用下面的命令编译、安装内核: cd /usr/src

make kernel KERNCONF=APACHE

注意,实际应用中,请将APACHE换成你自己的配置文件名。 重新编译内核需要重新启动系统才能够生效。

上面的配置文件是我根据LINT以及经验编写的配置文件,其编写目标在于尽可能避免不必要的代码,尽可能高效,尽可能安全,并且,在崩溃(注意,FreeBSD事实上很少会崩溃,我管理的FreeBSD机器的崩溃原因目前为止只有硬件故障或停电)之后尽可能快地恢复。(FreeBSD4.x目前还不支持后台fsck,因此启用softupdates只是改善运行性能和文件系统可靠性,而不保证重新启动速度的提高)

由于在内核中屏蔽掉了大量的设备,因此,休想以这个内核启动去操作软盘或光盘,或者使用并口,以及SCSI设备(虽然这可能不是你想要的)。此外,这个内核在没有root允许的情况下,是不能在控制台上按Ctrl+Alt+Del启动的。如果你希望其他工作人员在停电(总之,或类似肯定引起系统关机的情况)之前能够帮助你关闭系统,你可能需要其他方法,比如告诉他root口令(假如那个人可以信任),sudo(比较好的方法,只允许他做reboot),或者去掉禁用Ctrl+Alt+Del的设置。此外,经过这样处理的内核只支持Realtek-8139芯片的网卡,因此,如果你的情况和我不同,应该做适当的修改。 如果您对这个配置有什么建议,欢迎给我写信。

如此编译的内核大约是GENERIC内核大小的一半,当然,由于节省了一些内存,它的性能肯定会更好。

本文来源:https://www.bwwdw.com/article/wo38.html

Top