FreeBSD上如何安装ISA PnP驱动程序?

/ns/wz/sys/data/20020820033139.htm



要在 FreeBSD 下使用 ISA PnP 界面卡,必须 patch 你的 kernel,以下以 SB32
PnP 为例,简单介绍一下如何驱动 ISA PnP。 (PCI 的卡并不需要如此)

1. 取得 PnP kernel patch (适用於 FreeBSD-2.1.x, 2.2.x)
$ cd /tmp
$ fetch
ftp://freebsd.csie.nctu.edu.tw/pub/jdli/collect/isa_pnp/FreeBSD-pnp.tgz
$ tar xvfz FreeBSD-pnp.tgz

2. patch 你的 kernel source
$ cd /usr/src/sys (或是 cd /sys)
$ patch -p0 < /tmp/FreeBSD-pnp/kernel.patch.2.2-current
(如果是 FreeBSD-2.1.x 请用 kernel.patch.2.1.5)

3. 编译 pnpinfo 指令,并取得 ISA PnP 装置资讯
$ cd /tmp/FreeBSD-pnp/pnpinfo
$ make
$ ./pnpinfo > output

4. 修改 /sys/i386/isa/pnp.c
这是最麻烦的一个步骤,你必须手动修改 /sys/i386/isa/pnp.c,依照 output 的内
容,加入适当的 ISA PnP 装置定义,你可以从/tmp/FreeBSD-pnp/sample/ 找到一些
范例,一样画葫芦把你的 ISA PnP 装置定义加到 /sys/i386/isa/pnp.c 的 cinfo[]
(约在 line 50) 中。 你必须特别注意 pnpinfo output 中的『Board Serial
Number』『IRQ』 『DMA』『I/O Range』等定义。

5. 在 kernel config file 中加入『controller pnp0』

6. 在 kernel config file 中加入该装置的驱动程式,例如:
a) NE2000 相容卡需要:
device ed0
b) SB16/32 PnP 需要
controller snd0
device sb0 at isa? port 0x220 irq 5 conflicts drq 1 vector sbintr
device sbxvi0 at isa? drq 5
device sbmidi0 at isa? port 0x330
device opl0 at isa? port 0x388
device awe0 at isa? port 0x620

7. 重新编译 kernel。如果是音效卡,请在 /dev 下执行 ./MAKEDEV snd0 以建立
sound device。

PS. 如果你有在利用 CTM/CVSup 不断更新您的系统,你最好另外 copy 一份
/usr/src/sys 到 /tmp/ 下,然後将 kernel patch 到 /tmp/下的那一份,以免影响
你原来的 /usr/src/sys。