IT网络游客

今日天气
随笔 - 12, 文章 - 1, 评论 - 1, 引用 - 0
数据加载中……

内核中文说明(转贴)

这篇文章中,我们将一起对 FreeBSD-i386 的内核进行优化配置。这篇文章是针对 FreeBSD4.7-STABLE 写的,并且, FreeBSD 4.x 的配置不会和这篇文章有太大出入。如果你要优化 FreeBSD 5 FreeBSD 2/3 的内核的话,则需要仔细参考它们的 LINT 文件了 ( 后面将会提到 )
    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 # "Human Interface Devices"
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="(1024*1024)" #
除非你的 BIOS 设置不正确造成
                 # 无法检测内存大小,单位是 KB

# xntpd(8) 的监督下启用内核相同步逻辑
#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="(1024*1024*1024)"
options MAXSSIZ="(1024*1024*1024)"
options DFLDSIZ="(1024*1024*1024)"

#options PMAP_SHPGPERPROC=201 # 每一进程的可用 PV 项数。

#options NO_SWAPPING        # 禁用交换区。不推荐

options PANIC_REBOOT_WAIT_TIME=0 # 内核异常 (kernel panic) 立即重启

# 核心内存大小限制。我倾向使用默认值
#options VM_KMEM_SIZE="(12*1024*1024)"
#options VM_KMEM_SIZE_MAX="(256*1024*1024)"
#options VM_KMEM_SIZE_SCALE="4"

# 将这份配置文件保存到 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 # "Human Interface Devices"
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(8)

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

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 内核大小的一半,当然,由于节省了一些内存,他的性能肯定会更好。

修订说明 :有读者反映采用我的内核配置文件会造成系统崩溃,经过检查发现在撰写 HTML 时,一处选项 (AUTO_EOI_2) 忘记了加 # ,在此向读者道歉。此外,提醒读者注意, AUTO_EOI_1 VMWare 中运行时是不能使用的,如果加了, FreeBSD 的启动将造成 VM Ware 出错并终止

 

posted on 2006-05-07 15:27 博网 阅读(169) 评论(0)  编辑 收藏 引用 所属分类: FreeBSD

只有注册用户登录后才能发表评论。