- 论坛徽章:
- 1
|
OpenBSD内核配置
默认安装情况下,OpenBSD是不安装源代码书和内核源代码的。你可以在安装完
成之后手工安装。
如果你的安装CDROM上有的话,那么可以直接拷贝sys.tar.gz;如果没有的话,可
以进入系统,然后连接Internet下载和安装官方网站上的当前版本源代码:
[omni^3]# ftp ftp://ftp.openbsd.org/pub/OpenBSD/`uname -r`/sys.tar.gz
[omni^3]# tar -C /usr/src -xzvf sys.tar.gz
OpenBSD的源代码树安装在/usr/src下,而内核源代码则是其中一个子目录
/usr/src/sys,同时他还有一个符号链接到 /sys 。后面的操作也都可以直接以/sys
为绝对目录路径。
OpenBSD的内核配置方法同样继承了BSD系列的传统方法:先修改适合你系统的
平文配置文件,然后通过config命令产生配置目录,最后编译内核。这里先写出
主要的命令步骤,之后再详细解释相关的配置文件和选项。
1. 修改通用配置文件
[omni^3]# cd /sys/conf
[omni^3]# cp GENERIC Genii
[omni^3]# vi Genii
(:编译内核是一件稍具挑战性的工作,对新手来说更是如此;而BSD内核一向采用
比较传统的手工配置方法,需要对内核本身各模块之间的结构有一定了解,出错
在所难免因此先做好各配置文件的备份,最好重新cp一个副本,作为自己的内核
配置文件基础修改。)
2. 修改平台配置文件
[omni^3]# cd /sys/arch/i386/conf
[omni^3]# cp GENERIC Genii
[omni^3]# vi Genii
(:OpenBSD与FreeBSD很大的差别就是OpenBSD支持多平台,同时更原始--接近
古典型BSD,所以它的配置文件也分为多个不同的部分)
3. 如果是SMP平台的话,修改MP配置文件
[omni^3]# vi /sys/arch/i386/conf/GENERIC.MP
(如果需要多处理器mp支持,还需要看一下这个)
4. config产生内核配置
[omni^3]# config Genii
(命令过程中可能会产生错误提示,这可能是因为你的模块关系没有理顺,遗漏
了某些模块,或误删模块所致,仔细检查内核配置)
5. 编译内核
[omni^3]# cd /sys/arch/i386/compile/Genii
[omni^3]# make clean
[omni^3]# make depend
[omni^3]# make
(如果一切没出错,那么最后你可以看见LD生成内核映像的提示,会显示出当前
内核可执行文件各部分的的size以及内核的文件大小。)
6. 安装内核
[omni^3]# cp /bsd /bsd.old
[omni^3]# cp ./bsd /bsd
(OpenBSD和NetBSD相对FreeBSD来说更原始,从管理和配置你都需要手工作更多
的工作,比如编译完成后需要你手工cp安装内核;另外,此处一定要记得备份默认
安装完成后你的通用内核哦。)
7. 引导和测试新内核
[omni^3]# reboot
如果一切正常,那么重新引导之后你就会用你的新内核了。也有可能因为各种因素
无法引导,或者发现丢失了一些驱动导致系统设备无法认出,那么这时候可能就只
能通过你的通用内核或原来稳定版本的内核重新引导系统,然后仔细检查dmesg信
息来重新配置你的内核了。
前面看了一下内核配置和编译的大概过程,那么下面来仔细看一下几个内核配置文
件。
因为OpenBSD比FreeBSD支持更多的硬件平台,所以它的内核配置文件也不得不
分割为两个部分:
通用配置部分(/sys/conf/GENERIC) 和 平台相关配置(/sys/arch/i386/conf/GENERIC)
此外,当支持SMP时,还有一个很小的配置部分/sys/arch/i386/conf/GENERIC.MP。
(老版本的配置略有不同,此处均以3.6版本为准)
所以现在根据我们的需求,裁减和定制一个适合自己硬件的内核至少要修改两个配置
文件。
先来看一下系统源代码树中默认的 通用配置 /sys/conf/GENERIC :
#####################################################################
# $OpenBSD: GENERIC,v 1.109 2004/07/31 21:27:31 brad Exp $
#
# Machine-independent option; used by all architectures for their
# GENERIC kernel
#--4.4 BSD内核安全选项,默认情况下为SECURE,boot时系统securelevel为0,
#--boot完成后自动提升为1;
#--如果取消注释启用此选项,则默认securelevel为-1
#--
#option INSECURE # default to secure
#--
#--内核全局特性,用于内核调试、性能分析和进程跟踪
#--非开发系统建议开启KTRACE和ACCOUNTING两项,其它全部关闭
#--
#option DDB # 启用内置内核调试器
#option DDB_SAFE_CONSOLE # 允许在引导过程中切入内核调试器
#makeoptions DEBUG="-g" # 编译内置内核符号表,允许内核调试
#makeoptions PROF="-pg" # 编译profiled kernel,允许性能调试
#option GPROF # kernel profiling, kgmon(,内核性能监视器
#option DIAGNOSTIC # internal consistency checks
option KTRACE # 启用ktrace(1),可以使用ktrace跟踪用户进程的系统调用等信息
option ACCOUNTING # 启用acct(2),允许使用4.3BSD进程记帐
option KMEMSTATS # collect malloc(9) statistics
#option PTRACE # ptrace(2) ,允许ptrace跟踪和调试用户进程
#--内置加密模块
option CRYPTO # Cryptographic framework
#--
#--SYSV进程间通讯
#--
option SYSVMSG # System V-like message queues
option SYSVSEM # System V-like semaphores
option SYSVSHM # System V-like memory sharing
#--允许UVM内存管理系统加密SWAP页面
option UVM_SWAP_ENCRYPT# support encryption of pages going to swap
#--内核兼容特性,必须打开COMPAT_43
#option COMPAT_23 # Kernel compatibility with OpenBSD 2.3,
#option COMPAT_25 # 2.5,
option COMPAT_35 # 3.5,
option COMPAT_43 # and 4.3BSD
#option TCP_COMPAT_42 # TCP bug compatibility with 4.2BSD
#--允许可加载内核模块
#--在静态的生产服务器上,如果能够熟悉和精确编译所有驱动,处于安全原因
#--建议禁用LKM
option LKM # loadable kernel modules
#--文件系统支持
option FFS # UFS文件系统支持,必选项
option FFS_SOFTUPDATES # Soft updates支持,可提升文件系统性能
option UFS_DIRHASH # DIRHUSH支持,增加多文件查找性能
option QUOTA # UFS quotas
option EXT2FS # Second Extended Filesystem
option MFS # memory file system
option XFS # xfs filesystem
option CD9660 # ISO 9660 + Rock Ridge file system
option MSDOSFS # MS-DOS file system
option FDESC # /dev/fd
option FIFO # FIFOs; RECOMMENDED
option KERNFS # /kern
option PORTAL # dynamically created filesystem objects
option PROCFS # /proc
# layer filesystems
option NULLFS # loopback file system
option UMAPFS # NULLFS + uid and gid remapping
option UNION # union file system
#--TCP选项支持
option TCP_SACK # Selective Acknowledgements for TCP
option TCP_ECN # Explicit Congestion Notification for TCP
option TCP_SIGNATURE # TCP MD5 Signatures, for BGP routing sessions
#option TCP_FACK # Forward Acknowledgements for TCP
#--NFS支持
#option NFSCLIENT # 内核NFS客户端,作为无盘启动工作站时需要
#option NFSSERVER # NFS服务器
#--基本网络协议支持
option INET # IP + ICMP + TCP + UDP,必选
option ALTQ # ALTQ base,提供队列功能
#option INET6 # IPv6 支持
option IPSEC # IPsec 支持
#option KEY # PF_KEY (implied by IPSEC)
#option NS # XNS
#option NSIP # XNS tunneling over IP
#option IPX # IPX+SPX
#option IPXIP # IPX tunneling over IP
#option NETATALK # AppleTalk
#option CCITT,LLC,HDLC # X.25
option PPP_BSDCOMP # PPP BSD compression
option PPP_DEFLATE
#option MROUTING # Multicast router
#--伪设备
pseudo-device pf # pf防火墙设备
pseudo-device pflog # pf log设备
pseudo-device pfsync # pf sync if
#pseudo-device sppp 1 # Sync PPP/HDLC
pseudo-device enc 1 # option IPSEC needs the encapsulation interface
#pseudo-device strip 1 # Starmode Radio IP interface
pseudo-device pty 64 # 默认伪终端设备
#pseudo-device tb 1 # tablet line discipline
pseudo-device vnd 4 # vnd虚拟磁盘设备
pseudo-device ccd 4 # ccd设备,RAID必须
#pseudo-device ksyms 1 # 内核符号表
pseudo-device systrace 1 # systrace安全特性,允许对系统调用进行访问控制
#-- clonable devices
pseudo-device bpfilter # packet filter
pseudo-device bridge # network bridging support
#pseudo-device carp # CARP protocol support
#pseudo-device gif # IPv[46] over IPv[46] tunnel (RFC1933)
#pseudo-device gre # GRE encapsulation interface
pseudo-device loop # network loopback
pseudo-device ppp # PPP
#pseudo-device sl # CSLIP
pseudo-device tun # network tunneling over tty
pseudo-device vlan # IEEE 802.1Q VLAN
#-- for IPv6
#pseudo-device faith 1 # IPv[46] tcp relay translation i/f
option BOOT_CONFIG # add support for boot -c
#####################################################################
在这里主要的段节和常用配置选项都已经加上了注解,而#注释掉的那些行则是
一般情况下较少会遇到的。
平台相关配置 /sys/arch/i386/conf/GENERIC :
#####################################################################
# $OpenBSD: GENERIC,v 1.376 2004/07/20 20:30:09 dhartmei Exp $
#
# GENERIC -- everything that's currently supported
#
machine i386 # 系统硬件体系,必选
include "../../../conf/Genii" #包含全局特性配置文件
#option I386_CPU # CPU classes; at least one is REQUIRED
option I686_CPU # 系统对应的CPU体系
#option GPL_MATH_EMULATE # 模拟数学协处理器
option USER_PCICONF # 用户PCI配置
#option VM86 # Virtual 8086 emulation
option USER_LDT # user-settable LDT; see i386_set_ldt(2)
option APERTURE # XFree86支持
#option KGDB # 内核GDB调试器,不兼容KDB,允许串口调试
#option "KGDB_DEVNAME=\"pccom\"",KGDBADDR=0x2f8,KGDBRATE=9600
option DUMMY_NOPS # speed hack; recommended
#--二进制可执行文件兼容特性
#--允许执行其他操作系统的可执行文件
#--在I386平台上分别支持Sco Unixware(SVR4), IBCS2(OpenServer), Linux, *BSD
#option COMPAT_SVR4 # binary compatibility with SVR4
#option COMPAT_IBCS2 # binary compatibility with SCO and ISC
option COMPAT_LINUX # binary compatibility with Linux
option COMPAT_FREEBSD # binary compatibility with FreeBSD
#option COMPAT_BSDOS # binary compatibility with BSD/OS
option COMPAT_AOUT # a.out binaries are emulated
#option NTFS # Experimental NTFS support
#-- maxusers参数,影响到进程表等一系列内核参数
maxusers 128 # estimated number of users
#-- 内核和引导设备配置,不用修改
config bsd swap generic
#-- 系统总线,必选
mainbus0 at root
#-- cpu, bios, 电源管理,PCI总线
cpu0 at mainbus? apid ?
bios0 at mainbus0 apid ?
apm0 at bios0 flags 0x0000 # flags 0x0101 to force protocol version 1.1
pcibios0 at bios0 flags 0x0000 # use 0x30 for a total verbose
#-- isa和pci总线
isa0 at mainbus0 # isa总线
isa0 at pcib?
isa0 at ichpcib? # Intel ICH芯片组
#isa0 at gscpcib? # NS Gende芯片组
eisa0 at mainbus0 # eisa总线
pci* at mainbus0 bus ? # pci总线
#-- 引导时显示设备冗余信息
option PCIVERBOSE
option EISAVERBOSE
option USBVERBOSE
#-- PCI设备
pchb* at pci? dev ? function ? # PCI-Host bridges
ppb* at pci? dev ? function ? # PCI-PCI bridges
pci* at ppb? bus ?
pci* at pchb? bus ?
pcib* at pci? dev ? function ? # PCI-ISA bridge
ichpcib* at pci? dev ? function ? # Intel ICHx/ICHx-M LPC bridges
#gscpcib* at pci? dev ? function ? # NS Geode SC1100 PCI-ISA bridge
#gpio* at gscpcib? # 禁用其他无用的主板类型支持
# 特殊硬件的电源管理设备
#amdpm* at pci? dev ? function ? # AMD768MPX
#elansc* at pci? dev ? function ? # AMD Elan SC520 System Controller
#gpio* at elansc?
#geodesc* at pci? dev ? function ? # Geode SC1100/SCx200 IAOC
# National Semiconductor LM7[89] 兼容设备
#lm0 at isa? port 0x290
#lm1 at isa? port 0x280
#lm2 at isa? port 0x310
#nsclpcsio* at isa? # NS PC87366 LPC Super I/O
#gpio* at nsclpcsio?
#gscsio* at isa? # NS Geode SC1100 Super I/O
#iic0 at gscsio? # ACCESS.bus 1
#iic1 at gscsio? # ACCESS.bus 2
#lmtemp0 at iic1 addr 0x48 # NS LM75/LM77 temperature sensor
#it0 at isa? port 0x290 # IT8705F, IT8712F and SiS970 hardware
# monitors
#viaenv* at pci? dev ? function ? # VIA VT82C686A hardware monitor
#-- PCMCIA类型设备支持,笔记本电脑和一些特殊的PCMCIA设备可能需要
#-- ISA PCMCIA 设备
#option PCMCIAVERBOSE
#pcic0 at isa? port 0x3e0 iomem 0xd0000 iosiz 0x10000
#pcic1 at isa? port 0x3e2 iomem 0xe0000 iosiz 0x4000
#pcic2 at isa? port 0x3e4 iomem 0xe0000 iosiz 0x4000
#tcic0 at isa? disable port 0x240 iomem 0xd0000 iosiz 0x10000
#-- ISA Plug-and-Play PCMCIA controllers
#option DEBUG_ISAPNP
#pcic* at isapnp?
#-- PCI PCMCIA 设备
#pcic* at pci? dev? function ?
#-- PCMCIA 总线支持
#pcmcia* at pcic? controller ? socket ?
#pcmcia* at tcic? controller ? socket ?
#-- CardBus 总线支持
#cardbus* at cardslot?
#pcmcia* at cardslot?
#cbb* at pci? dev ? function ?
#cardslot* at cbb?
# PCI USB 控制器
ehci* at pci? # Enhanced Host Controller
uhci* at pci? # Universal Host Controller (Intel芯片组)
ohci* at pci? # Open Host Controller (Apple,VIA等其他芯片组)
# USB bus support
usb* at ehci?
usb* at uhci?
usb* at ohci?
# USB devices
uhub* at usb? # USB Hubs
uhub* at uhub? port ? configuration ? # USB Hubs
#-- 这一项是要的,U盘和移动硬盘的支持
umass* at uhub? port ? configuration ? # USB Mass Storage devices
scsibus* at umass? # USB存储设备需要模拟SCSI总线
# 因此使用这一项同时需要打开SCSI、
# SCSI磁盘和SCSI-IDE桥的支持
#-- USB 鼠标、键盘的支持;这一项需要wscons设备支持
uhidev* at uhub? port ? configuration ? interface ? # Human Interface Devices
ums* at uhidev? reportid ? # USB mouse
wsmouse* at ums? mux 0
ukbd* at uhidev? reportid ? # USB keyboard
wskbd* at ukbd? console ? mux 1
uhid* at uhidev? reportid ? # USB generic HID support
#-- 其他基本无用的USB设备
#umodem* at uhub? port ? configuration ? # USB Modems/Serial
#ucom* at umodem?
#uvisor* at uhub? port ? configuration ? # Handspring Visor
#ucom* at uvisor?
#uvscom* at uhub? port ? # SUNTAC Slipper U VS-10U serial
#ucom* at uvscom? portno ?
#ubsa* at uhub? port ? # Belkin serial adapter
#ucom* at ubsa? portno ?
#uftdi* at uhub? port ? # FTDI FT8U100AX serial adapter
#ucom* at uftdi? portno ?
#uplcom* at uhub? port ? # I/O DATA USB-RSAQ2 serial adapter
#ucom* at uplcom? portno ?
#umct* at uhub? port ? # MCT USB-RS232 serial adapter
#ucom* at umct? portno ?
#uaudio* at uhub? port ? configuration ? # USB Audio
#audio* at uaudio?
#umidi* at uhub? port ? configuration ? # USB MIDI
#midi* at umidi?
#ulpt* at uhub? port ? configuration ? # USB Printers
#-- USB网卡和无线网卡支持
#aue* at uhub? port ? # ADMtek AN986 Pegasus Ethernet
#axe* at uhub? port ? # ASIX Electronics AX88172 USB Ethernet
#cue* at uhub? port ? # CATC USB-EL1201A based Ethernet
#kue* at uhub? port ? # Kawasaki KL5KUSB101B based Ethernet
#cdce* at uhub? port ? # CDC Ethernet
#upl* at uhub? port ? # Prolific PL2301/PL2302 host-to-host `network'
#url* at uhub? port ? # Realtek RTL8150L based adapters
#wi* at uhub? port ? # WaveLAN IEEE 802.11DS
#urio* at uhub? port ? # Diamond Multimedia Rio 500
#uscanner* at uhub? port ? # USB Scanners
#usscanner* at uhub? port ? # USB SCSI scanners, e.g., HP5300
#scsibus* at usscanner?
#uyap* at uhub? port ? # Y@P firmware loader
#udsbr* at uhub? port ? # D-Link DSB-R100 radio
#radio* at udsbr? # USB radio
ugen* at uhub? port ? configuration ? # USB 通用设备
#-- FireWire 1394设备支持
#fwohci* at pci? dev ? function ? # PCI FireWire adapter
#fwohci* at cardbus? dev ? function ? # CardBus FireWire adapter
#fwnode* at fwbus? idhi ? idlo ?
#fwscsi* at fwnode? # SCSI over FireWire
#scsibus* at fwscsi?
#option FWOHCI_DEBUG
#option FWNODE_DEBUG
#option P1212_DEBUG
#option SBP2_DEBUG
#option FWSCSI_DEBUG
puc* at pci? # PCI "universal" communication device
#-- 数学协处理器,必选 (486DX以下系统此选项无效,需要打开GPL_MATH_EMULATE选项)
npx0 at isa? port 0xf0 irq 13 # math coprocessor
isadma0 at isa?
isapnp0 at isa?
#-- 控制台和虚拟终端设备
option WSDISPLAY_COMPAT_USL # VT handling
option WSDISPLAY_COMPAT_RAWKBD # can get raw scancodes
option WSDISPLAY_DEFAULTSCREENS=6
option WSDISPLAY_COMPAT_PCVT # emulate some ioctls
#-- 键盘、鼠标和显示器
pckbc0 at isa? # PC keyboard controller
pckbd* at pckbc? # PC keyboard
pms* at pckbc? # PS/2 mouse for wsmouse
pmsi* at pckbc? # PS/2 "Intelli"mouse for wsmouse
vga0 at isa?
option PCIAGP # AGP设备支持
vga* at pci? dev ? function ?
pcdisplay0 at isa? # CGA, MDA, EGA, HGA
wsdisplay* at vga? console ?
wsdisplay* at pcdisplay? console ?
wskbd* at pckbd? console ?
wsmouse* at pms? mux 0
wsmouse* at pmsi? mux 0 |
|