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

你会在有个地方被问到是否需要音效卡支援。如果你没有 PnP卡的话 你可以自由回答 Y 或 M ,如果你要做成模组的话而且是 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_IRQ 和 SB_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