Next Previous Contents

3. 如何安装 SB AWE 音效支持

3.1 你需要的东东

在 Linux 下使用 SB AWE 需要下列东东哦:

如果你有个 PnP 卡,你还需要:

请看有关于如何取得这些程序的章节 Sources

如果你有 Debian GNU/Linux 系统,那你需要 kernel-source-<version>, awe-drv 套件,也许还需要 isapnptools这个,虽然并不需要但你可能想要一些 awe-* 套件,我 强烈建议你采用 kernel-package 会更容易编译及安装核心程序。

3.2 开始吧 !

假设你已经正确地安装好声卡到你的电脑的主机板上而且也在 DOS 以及 Windows环境上试过了。

然后,如果它是一张 PnP 卡的话我们必须在开机启动时初始化一下。请按照 原始档套件的文件所说地去编译以及安装 isapnptools (或只需使用 Debian 的二进位码套件),然后以 root 的身份执行

# pnpdump > /etc/isapnp.conf

这样会产生一个为你的 PnP 卡量身订做的建构,但它会把所有的设备都注解起来。请再 小心地修改这个文档,如果可能的话并比较 DMA频道、IO、插断等等的设定是否与它在 DOS 或 WINDOW 环境下不一样 (在 Win95 里,要看被界面卡所使用的资源可在 设备管理员下的 资源 看)。 如果你遇到问题,请小心地读一下和isapnptools 放一起的文件。

请注意: isapnptools 常无法侦测 SB AWE Wave Table 设备的三个 I/O 埠。 请查明你的 isapnp.conf 内的 WaveTable 项目 against the example at the end of this HOWTO. 如果需要的话调整一下 I/O base 位址。

注意: 根据e isapnp-faq,有时候 isapnp 会无法得知逻辑设备的数目。如果你遭遇 到像下面的错误信息:

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

那试看看加入 (VERIFYLD N)isapnp.conf的上头。你必须使用至少是 1.10 版的才能这么做。 如果你无法使用 1.10 或是更新的版本。你也可以自已直接手动改逻辑设备的数量。 请情请参考 isapnp-faq 。如果还是无法克服,请和我连络 (应该有人也会对 isapnp 有兴趣吧 ,我想)。

小心: 请确认最后那行是 (WAITFORKEY),有时候较旧的 pnpdump 版本会删除它。

在文件的后面有一个isapnp.conf 给单个 PnP 声卡用的样本。 (请看章节 Sample <tt>isapnp.conf</tt>)。

如果你是用 Debian 系统就不用再做任何的其他调整。 /etc/init.d/boot 加上下面的 命令手稿下,你就可以在开机时启动isapnp


# 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

where /etc/init.d/isapnp is
#! /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 Driver Extension 套件来给音效驱动程序使用。就算你 的核心原始程序目录里已经有 awedrv 延伸套件了 (请检查 /drivers/sound/lowlevel/ 看看), 你可能想要升级 awedrv 软件。依照安装在 awedrv 原始目录里的指示。简单地说,你必须执行 一个修补核心原始程序的安装命令手稿。

请小心你已经在执行完安装命令手稿后已经升级了核心原始程序了。这个命令手稿 只是在检查看看一些特定文档是否已经有了,如果有了,它不会有任何需要的修补动作。 你升级核心原始程序后在执行命令手稿前会被建议将 drivers/sound/lowlevel/awe_wav.c 文档移除。

接下来你必须建构核心程序来支持音效。我希望你知道怎么来编译核心程序;详情请参考 Sound HOWTO 以及 Kernel HOWTO。到核心原始程序的目录里, (例如 /usr/src/linux) 然后执行

# make config

或是 make menuconfigmake xconfig。然后用标准的方式来 建构你的核心程序。 利用这个机会来做个体积又小又强而有力的核心程序,特别是 为你的系统量身订做的。记得在回答 Enable loadable module support 是选 Y, 如果你想把音效驱动程序安装成可载入式模块的话 (如果你用的是 PnP 卡的话就 必须这么做) ,但我知道你也会这么做吧!

你会在有个地方被问到是否需要声卡支持。如果你没有 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/?]

只有后面的是给 Wave Table 合成器用的。其余是 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 modules 以及 make modules_install。详情请看 Sound HOWTO 或 Kernel 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)

如果你认为内存侦测有误 (有个人告诉我说他有张 AWE64 卡有 4096k,然而 ``侦测到'' 28672k !),请升级 awedrv 软件或是在 /usr/src/linux/drivers/sound/lowlevel/awe_config.h文档里指定内存, 如:

#define AWE_DEFAULT_MEM_SIZE  4096   /* kbytes */

抱谦,你必须再重新编译核心程序 (也许编译这些模块就够了,但我不确定)。

如果它成功动作了,你可能希望音效模块能自动载入。你可以使用 kerneld ( 在 1.4章节里有说明为何这是个坏点子) 或是在你的/etc/modules (Debian系统) 里头 加上一行包含 sound 或是加上 /sbin/modprobe -a sound 到你的启动命令手稿里。


Next Previous Contents