热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

当前位置 :| 主页>Linux教程>内核研究>

OpenBSD内核配置

来源: 作者: 时间:2008-02-08 Tag: 点击:
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(8),内核性能监视器
#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
最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册