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 �堙A要看被介面卡所使用的資源可在 設備管理員下的 資源 看)。 如果你遇到問題,請小心地讀一下和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 套件來給音效驅動程式使用。就算你 的核心原始程式目錄�堣w經有 awedrv 延伸套件了 (請檢查 /drivers/sound/lowlevel/ 看看), 你可能想要升級 awedrv 軟體。依照安裝在 awedrv 原始目錄�堛澈�示。簡單地說,你必須執行 一個修補核心原始程式的安裝命令手稿。

請小心你已經在執行完安裝命令手稿後已經升級了核心原始程式了。這個命令手稿 只是在檢查看看一些特定檔案是否已經有了,如果有了,它不會有任何需要的修補動作。 你升級核心原始程式後在執行命令手稿前會被建議將 drivers/sound/lowlevel/awe_wav.c 檔案移除。

接下來你必須建構核心程式來支援音效。我希望你知道怎麼來編譯核心程式;詳情請參考 Sound HOWTO 以及 Kernel HOWTO。到核心原始程式的目錄�堙A (例如 /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/�堛漱憟鞳C這�埵陪荋ㄔ隉G

# 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 卡,請確認在開機啟動命令手稿�堜峎O手動地執行 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系統) �媕Y 加上一行包含 sound 或是加上 /sbin/modprobe -a sound 到你的啟動命令手稿�堙C


Next Previous Contents