歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix教程

FreeBSD服務器的安裝與優化(3)

FreeBSD

FreeBSD服務器的安裝與優化(3)

簡單的東西不容易出問題。”


至理名言!事實上,削減操作系統中那些對你沒用的功能是一件非常重要的事情。這不僅僅意味著一個更小的操作系統,占用更少的磁盤空間(現在的硬盤少說也有幾十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 # "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編輯器 e
ditor
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(Cool的監督下啟用內核相同步邏輯
#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自己的說法,搾干服務器的每一滴油Smile,舊的AMD處理器可能會吃不消;但我在雙AMD Athlon MP 1900+上運行FreeBSD沒有出現類似的情況。與AMD不同,在Intel的全系列處理器上(包括存在F00F bug的Pentium處理器,486,Pentium-III, Pentium 4, Celeron-II 667等等)我從未遇到過任何問題。

這台服務器的網卡使用的是Realtek-8139芯片,這樣的網卡在市場上非常常見。為了確認你的網卡型號,請運行ifconfig(Cool

編輯完配置文件,是用下面的命令編譯、安裝內核:

cd /usr/src
make kernel KERNCONF=APACHE


LINT中對於配置有更詳細的說明。由於時間關系,這裡不給出LINT的完整翻譯。對於常用的LINT配置(藍色,但被注釋的部分),我做了一點說明。



需要說明的是,我個人的經驗,在較舊的AMD處理器上運行FreeBSD服務器不是一個明智的選擇。我個人的經驗是,在K6上運行FreeBSD,只要CPU占用超過98%,系統就會死機。這可能是由於FreeBSD的設計過分地挖掘了系統的性能(按FreeBSD.org自己的說法,搾干服務器的每一滴油Smile,舊的AMD處理器可能會吃不消;但我在雙AMD Athlon MP 1900+上運行FreeBSD沒有出現類似的情況。與AMD不同,在Intel的全系列處理器上(包括存在F00F bug的Pentium處理器,486,Pentium-III, Pentium 4, Celeron-II 667等等)我從未遇到過任何問題。



這台服務器的網卡使用的是Realtek-8139芯片,這樣的網卡在市場上非常常見。為了確認你的網卡型號,請運行ifconfig(Cool



編輯完配置文件,是用下面的命令編譯、安裝內核:



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內核大小的一半,當然,由於節省了一些內存,它的性能肯定會更好。
Copyright © Linux教程網 All Rights Reserved