下一页 上一页 目录

3. 如何安装 SB AWE 声卡支持

3.1 你需要的物品

以下是在 Linux 下支持 SB AWE 的要求

如果你有一张 PnP 卡,你还需要

请查看 来源 部分,以获取有关在哪里可以获得这些程序的信息。

如果你有一个 Debian GNU/Linux 系统,这意味着你需要 kernel-source-<version>awe-drv 软件包,可能还需要 isapnptools 软件包。你可能还需要其他一些 awe-* 软件包,尽管它们不是必需的。我强烈推荐使用 kernel-package 以方便内核编译和安装。

3.2 开始入门

假设你已将声卡正确安装到主板上的插槽中,并且可能已经在 DOS 或 Windows 环境下测试过它。

下一步是在启动时初始化声卡,前提是它是一张 PnP 卡。按照源代码包中的文档编译并安装 isapnptools(或者直接使用 Debian 二进制软件包),并以

# pnpdump > /etc/isapnp.conf

root 用户身份运行。这将为你的 PnP 卡生成一个希望是正确的配置文件,但所有设备都被注释掉了。请仔细编辑此文件,并将 DMA 通道、I/O 基址和中断的值与 DOS 或 Windows 环境下声卡的配置进行比较(如果可能,在 Win95 中,查看设备管理器中 resources 下声卡使用的资源)。如果你遇到问题,请仔细阅读 isapnptools 附带的文档。

注意: isapnptools 经常无法检测到 SB AWE 波表设备的全部三个 I/O 端口。请仔细检查你的 isapnp.conf 文件中的 WaveTable 条目,并与本 HOWTO 末尾的示例进行比较。如有必要,调整 I/O 基址。

注意: 根据 isapnp-faq,有时 isapnp 无法编程逻辑设备的编号。如果你遇到如下错误消息

Error occurred executing request 'LD 2' on or around line...

那么尝试在 isapnp.conf 的顶部添加 (VERIFYLD N)。你必须使用至少 1.10 或更高版本才能使其工作。如果你不能使用 1.10 或更新版本,你也可以直接 POKE 逻辑设备编号。请参阅 isapnp-faq 以获取有关此方法的更多信息。如果它对你不起作用,请联系我(isapnp 的人员也会感兴趣,我认为)。

注意: 确保最后一行是 (WAITFORKEY),旧版本的 pnpdump 有时会省略它。

只有一个 PnP 卡(声卡)的示例 isapnp.conf 可以在文档末尾找到(请参阅 示例 <tt>isapnp.conf</tt> 部分)。

如果你有一个 Debian 系统,则无需进一步调整。 isapnp 将在启动时在 /etc/init.d/boot 中使用以下脚本代码启动,你可能希望将其包含在你的启动脚本中


# Configure the isa plug and play boards before loading
# modules. Need to do this before loading modules to get
# a chance of configuring and starting PnP boards before
# the drivers mess all this up.
#
if [ -x /etc/init.d/isapnp ]
then
  /etc/init.d/isapnp start
fi

其中 /etc/init.d/isapnp
#! /bin/sh
# /etc/init.d/isapnp: configure Plug and Play boards
test -x /sbin/isapnp || exit 0
/sbin/isapnp /etc/isapnp.conf
exit 0

如果你有另一个 Linux 发行版,你需要自己处理。我不知道该怎么做(有人愿意提交更具体的信息吗?)。只需确保 isapnp 在加载模块之前启动(见下文)。

3.3 编译内核

在重新编译内核之前,你必须将 AWE 驱动程序扩展应用到声卡驱动程序。即使你的内核源代码树已经包含了 awedrv 扩展(检查 /drivers/sound/lowlevel/),你可能也想升级 awedrv 软件。按照 awedrv 源代码目录中的安装说明进行操作。简而言之,你必须运行一个安装脚本,该脚本将补丁应用于内核源代码。

如果你在运行安装脚本后升级了内核源代码树,请务必小心。该脚本仅检查某个文件是否存在 - 如果存在,则不会应用必要的补丁。强烈建议你在升级内核源代码后运行脚本之前删除文件 drivers/sound/lowlevel/awe_wav.c

接下来,你必须配置内核以支持声卡。我希望你对内核编译有所了解;有关详细信息,请参阅声卡 HOWTO 和内核 HOWTO。进入你的内核源代码的源代码目录(例如 /usr/src/linux),然后执行

# make config

make menuconfigmake xconfig。然后你必须以标准方式配置你的内核。利用此机会制作一个小型且功能强大的内核,专门为你的系统设计。如果你想将声卡驱动程序作为可加载模块安装(如果你有一张 PnP 卡,这是必须的),请务必回答 Enable loadable module supportY,但我相信你无论如何都会这样做。

在某个时候,系统会询问你是否需要声卡支持。如果你不是 PnP 卡,你可以自由地回答 YM。如果你有一张 PnP 卡,你必须回答 M,表示模块。如果你有一张 PnP 卡,你必须将声卡支持编译为模块,因为 PnP 卡必须在模块加载之前初始化。

以下问题你应该回答 Y,所有其他问题回答 N


Sound Blaster (SB, SBPro, SB16, clones) support (CONFIG_SB) [Y/n/?]
Generic OPL2/OPL3 FM synthesizer support (CONFIG_ADLIB) [Y/n/?]
/dev/dsp and /dev/audio support (CONFIG_AUDIO) [Y/n/?]
MIDI interface support (CONFIG_MIDI) [Y/n/?]
FM synthesizer (YM3812/OPL-3) support (CONFIG_YM3812) [Y/n/?]
lowlevel sound driver support [Y/n/?]
AWE32 support (CONFIG_AWE32_SYNTH) [Y/n/?]

只有后者实际上是用于波表合成的。其他都是来自 OSS/Free 声卡驱动程序的 SB 16 选项。

此外,你必须配置声卡 I/O 端口。如果你有 isapnp.conf 文件,请查看该文件以获取提示。对我来说,以下默认值就足够了。请注意,内核配置脚本中的默认值可能是错误的(尤其是 SBC_IRQSB_MPU_BASE 值对于大多数声卡来说似乎是不正确的)。


I/O base for SB Check from manual of the card (SBC_BASE) [220]
Sound Blaster IRQ Check from manual of the card (SBC_IRQ) [5]
Sound Blaster DMA 0, 1 or 3 (SBC_DMA) [1]
Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) 5, 6 or 7
(use 1 for 8 bit cards) (SB_DMA2) [5]
MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of the card
(SB_MPU_BASE) [330]
SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (SB_MPU_IRQ) [-1]

现在重新编译内核。Debian 用户应该使用 kernel-package。此软件包使内核编译就像安装 Debian 软件包一样容易。请查看 /usr/doc/kernel-package/ 中的文档。这是一个提示

# make-kpkg clean
# make-kpkg -revision custom.1.0 kernel_image

然后执行 dpkg -i /usr/src/kernel-image-2.0.29_custom.1.0_i386.deb

如果你有另一个 Linux 发行版,请按照标准方式编译新内核。不要忘记 make modulesmake modules_install。有关更多信息,请参阅声卡 HOWTO,或许还有内核 HOWTO。

3.4 重启

安装新内核后,你应该重启系统(确保手边有一个可用的启动盘)。祈祷一切顺利。

如果你有一张 PnP 卡,请务必在启动脚本中(如上所述)或手动启动 isapnp

# /sbin/isapnp /etc/isapnp.conf
Board 1 has Identity 74 00 00 e3 10 48 00 8c 0e:  CTL0048 Serial No 58128
[checksum 74]

现在你可以安装声卡驱动程序,如果你已将其编译为模块

# modprobe -a sound
AWE32 Sound Driver v0.3.3e (DRAM 2048k)

如果你认为内存检测不正确(我收到一份报告,有人拥有一张 4096k 的 AWE64,但“检测到”了 28672k),请尝试升级 awedrv 软件,或在文件 /usr/src/linux/drivers/sound/lowlevel/awe_config.h 中指定内存量,例如

#define AWE_DEFAULT_MEM_SIZE  4096   /* kbytes */

抱歉,你必须重新编译内核(或许编译模块就足够了,但我不能确定)。

如果它工作正常,你可能希望自动加载声卡模块。你可以使用 kerneld(为什么这是一个坏主意在第 1.4 节中解释)或将包含 sound 的单行添加到你的 /etc/modules(在 Debian 中)或将 /sbin/modprobe -a sound 添加到你的启动脚本中。


下一页 上一页 目录