#-- 硬件加密卡设备
#hifn* at pci? dev ? function ? # Hi/fn 7751 crypto card
#lofn* at pci? dev ? function ? # Hi/fn 6500 crypto card
#nofn* at pci? dev ? function ? # Hi/fn 7814/7851/7854 crypto card
#ubsec* at pci? dev ? function ? # Bluesteel Networks 5xxx crypto card
#safe* at pci? dev ? function ? # SafeNet SafeXcel 1141/1741
#ises* at pci? dev ? function ? # Pijnenburg PCC-ISES
#-- I2O 设备
#iop* at pci? dev ? function ? # I2O
#ioprbs* at iop? tid ? # Random block storage
#scsibus* at ioprbs?
#-- 伪设备
#pseudo-device pctr 1
pseudo-device mtrr 1 # Memory range attributes control
#pseudo-device sequencer 1
#pseudo-device raid 4 # RAIDframe disk driver
pseudo-device bio 1 # ioctl multiplexing device
pseudo-device hotplug 1 # devices hot plugging
# mouse & keyboard multiplexor pseudo-devices
pseudo-device wsmux 2
pseudo-device crypto 1
#####################################################################
最后是MP支持部分 /sys/arch/i386/conf/GENERIC.MP
#####################################################################
# $OpenBSD: GENERIC.MP,v 1.4 2004/09/22 08:48:56 grange Exp $
#
# GENERIC.MP - sample multiprocessor kernel
#
include "arch/i386/conf/Genii" # 包含平台相关部分配置
option MULTIPROCESSOR # 多处理器支持
cpu* at mainbus?
ioapic* at mainbus?
#####################################################################
作为应用于网络最多的系统,一些国内常见的网卡类型的驱动用*号特别标了出来。
从这三个配置文件中include的部分可以看出它们的关系:
1. 如果是SMP环境,则使用/sys/arch/i386/conf/GENERIC.MP作为顶层配置文件;
2. 否则使用 /sys/arch/i386/conf/GENERIC 作为顶层配置文件;
3. 从 /sys/conf/GENERIC 中继承平台无关的内核配置。
在 平台无关配置 中,主要包含平台无关的内核基本架构,分为以下几个大段:
1. 内核 安全、性能、调试 节段
2. 内核全局特性、进程间通讯配置
3. 文件系统支持
4. 网络选项支持
5. 网络协议支持
6. 伪设备
在 平台相关配置 中,主要包含平台相关的各种设备驱动,分为以下几部分:
1. CPU及硬件体系
2. 平台相关的内核特性 和 内核参数
3. 总线和BIOS设备
4. ISA设备
5. PCI设备
6. USB设备
7. IDE设备
8. PCMCIA设备
9. 有线网络设备
10. 无线网络设备
11. 声卡
12. 其他外设
13. 显示器、鼠标、键盘
14. 系统板卡接口
15. 伪设备
在SMP配置文件中,只有简短的几行,提供了MP的支持,而且一般情况下是不用
修改了。
面对那么多的设备驱动,肯定不免会多出或遗漏些什么,这个时候记住一条规则,
就是所有的配置都是有线索可循的,下层的设备一定要依赖于上层设备的链,当
然这样的设备链偶尔会有交叉和继承,这时候就需要看经验了。 面向对象的编程
经验在这里很必要 ^^
一般的设备可以按照总线顺序来摸清他的线索,例如PCMCIA设备就一定要依赖于
PCMCIA控制器,PCMCIA控制器则需要ISA或PCI总线,PCI总线等最后就依赖于mainbus。
1. 第一层,mainbus
mainbus0 at root
2. 第二层,cpu、主板、pcibios、数学协处理器
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
npx0 at isa? port 0xf0 irq 13 # math coprocessor
isadma0 at isa?
isapnp0 at isa?
3. 第三层,设备总线,ISA、EISA、MCA和PCI
isa0 at mainbus0 # isa总线
isa0 at pcib?
isa0 at ichpcib? # Intel ICH芯片组
eisa0 at mainbus0 # eisa总线
pci* at mainbus0 bus ? # pci总线
这里的几个isa总线分别是isa的几种类型--集成于主板的、一些特殊芯片组的、
以及插在PCI槽中的PCI-ISA桥。
4. 第四层,总线控制器
>>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
>>PCMCIA和CardBus
#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?
>>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?
5. 各种设备驱动
>>网络
le* at pci? dev ? function ? # AMD PCNET32 网卡,Vmware需要
le* at isapnp?
>>SCSI 适配器和设备
mpt* at pci? dev ? function ? # LSI Fusion-MPT SCSI/Fibre
scsibus* at mpt?
>>IDE
pciide* at pci ? dev ? function ? flags 0x0000
wdc0 at isa? port 0x1f0 irq 14 flags 0x00
wdc1 at isa? port 0x170 irq 15 flags 0x00
wdc* at isapnp?
>>USB存储
umass* at uhub? port ? configuration ? # USB Mass Storage devices
scsibus* at umass?
>>鼠标、键盘、显示器
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?
>>其他接口
pccom0 at isa? port 0x3f8 irq 4 # standard PC serial ports
pccom1 at isa? port 0x2f8 irq 3
pccom2 at isa? port 0x3e8 irq 5
lpt0 at isa? port 0x378 irq 7 # standard PC parallel port
按这样的线索和结构来看配置文件,是不是就清晰多了?
当然偶尔还是会有一些可能会引起混杂的东西:
比如这个:
wdc* at pcmcia? function ? # PCMCIA硬盘
特殊类型的PCMCIA磁盘,就同时需要IDE设备、PCMCIA总线的支持;
另外更常遇到的一种设备,各种USB移动存储器需要UMASS驱动支持:
umass* at uhub? port ? configuration ? # USB Mass Storage devices
scsibus* at umass?
atapiscsi* at wdc? channel ?
atapiscsi* at pciide? channel ?
scsibus* at atapiscsi?
sd* at scsibus? target ? lun ?
UMASS驱动是模拟SCSI设备工作,因而就需要以上三个部分的支持,也就是
UMASS设备必须要SCSI-IDE桥、SCSI HD、IDE控制器三个驱动支持才能够运作。
好吧,最后贴出我系统上配置文件的最终清晰版本:
# /sys/arch/i386/conf/Genii.MP
#####################################################################
#
# $OpenBSD: GENERIC.MP,v 1.4 2004/09/22 08:48:56 grange Exp $
#
# GENERIC.MP - sample multiprocessor kernel
#
include "arch/i386/conf/Genii"
option MULTIPROCESSOR # Multiple processor support
cpu* at mainbus?
ioapic* at mainbus?
#####################################################################
# /sys/arch/i386/conf/Genii
#####################################################################
# $OpenBSD: GENERIC,v 1.109 2004/07/31 21:27:31 brad Exp $
#
# Machine-independent option; used by all architectures for their
# GENERIC kernel
#option INSECURE # default to secure
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
option SYSVMSG # System V-like message queues
option SYSVSEM # System V-like semaphores
option SYSVSHM # System V-like memory sharing
option UVM_SWAP_ENCRYPT# support encryption of pages going to swap
option COMPAT_35 # 3.5,
option COMPAT_43 # and 4.3BSD
#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
option NULLFS # loopback file system
option UMAPFS # NULLFS + uid and gid remapping
option UNION # union file system
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 INET # IP + ICMP + TCP + UDP,必选
option ALTQ # ALTQ base,提供队列功能
option IPSEC # IPsec 支持
option PPP_BSDCOMP # PPP BSD compression
option PPP_DEFLATE
