歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> BSD >> freebsd內核詳解

freebsd內核詳解

日期:2017/2/28 11:26:32   编辑:BSD


BSD內核編譯相對來說比linux的內核簡單
內核文件配置好以後就能夠進行內核的編譯了,一般有兩種編譯的方式,我們采取傳統的編譯方式。
我們進入 /usr/src/sys/i386/conf 目錄:
# cd /usr/src/sys/i386/conf
運行config命令來產生內核源代碼。
# /usr/sbin/config GENERIC
切換到建立內核的目錄。
# cd ../compile/GENERIC
編譯內核
# make depend
# make
安裝新內核。
# make install
OK,到這裡,如果中間沒有出現任何錯誤的話,那麼我們的內核心就已經安裝成功了,reboot後就能夠使用我們的新編譯的內核
升級────────────》
cvsup
mergemaster -p
make buildworld kernel installworld
mergemaster
當然,一般來說,先做mergemaster也不至於造成太嚴重的問題(並不總是這樣)。
最後,參考UPDATING非常重要。
你可以於make 前將原kernel先備份一份,
cp /kernel /kernel.backup
然後再make新的kernel
如果make新的kernel有問題你可以於boot時可使用備份的kernel?黹_機
unload
load kernel.old
boot
然後再重新修正kernel設定檔
然後:
1.chflags noschg /kernel
2.cp /kernel.old /kernel
3.chflags schg /kernel
即可
附加:
#
# 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的監督下啟用內核相同步邏輯
#options PPS_SYNC
#IPFirewall。我們需要的功能IPFilter都提供,並且更高效
#除非你需要IPFirewall的某些專有功能,否則這部分不必編譯
#options IPFIREWALL  #防火牆
options IPDIVERT
#options IPFIREWALL_VERBOSE #允許防火牆日志
#options IPFIREWALL_FORWARD #允許透明代理
#options IPFIREWALL_VERBOSE_LIMIT=100 #限制日至
#options IPFIREWALL_DEFAULT_TO_ACCEPT #默認允許所有IP包
#options ICMP_BANDLIM #deny ddos not in 5.4
options DUMMYNET #limit
#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,阻止信息洩漏( 5.4無效)
#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配置(藍色,但被注釋的部分),我做了一點說明。
這台服務器的網卡使用的是Realtek-8139芯片,這樣的網卡在市場上非常常見。為了確認你的網卡型號,請運行ifconfig。
編輯完配置文件,是用下面的命令編譯、安裝內核:
cd /usr/src
make kernel KERNCONF=APACHE
Copyright © Linux教程網 All Rights Reserved