以下は、Linux の下で SB AWE をサポートするための条件です:
/usr/src/linux/drivers/sound/Readme
を確認してください)PnP カードの場合は下記のものも必要です。
これらのプログラムをどこから入手するかは ソース の項をご覧下さい。
Debian GNU/Linux システムの場合、これは
kernel-source-<version>
, awe-drv
そしてたぶん isapnptools
のパッケージが必要であることを意味します。
不可欠ではないけど他の awe-*
パッケージも欲しくなるでしょう。
カーネルのコンパイルとインストールを簡単に行うために、
kernel-package
を使うことを強く推奨します。
あなたはカードをマザーボードに正しく取り付け、たぶんすでに DOS あるいは Windows 環境下でテスト済みであるものと見倣します。
PnP カードの場合、次のステップはブート時にカードを初期化することです。 isapnptools をソースパッケージのドキュメントに従って、コンパイルしイン ストールします。 (または Debian バイナリパッケージを使うだけです)
【訳注】 Slackware 3.4.0 の場合、ディスクセット diska5 の中に pnp という
パッケージ名で isapnptools-1.10 というバイナリパッケージが入って
います。なお、最新バージョンは1998年5月末現在、1.15 です。
【訳注終り】
そして root 権限で次のようにします。
# pnpdump > /etc/isapnp.conf
これはうまくいけば適切な PnP カード用の設定ファイルを作ってくれますが、 全てのデバイスはコメントアウトされます。このファイルを注意深く編集して 可能であれば DOS あるいは Windows 環境下でのカードの DMA チャネル、I/O ベースアドレス、割り込み(IRQ)の設定値と比べてみて下さい。(Win95 の場合 デバイスマネージャのリソースの所でカードが使っているリソースをご覧下さい) 問題がある場合は、isapnptools のドキュメントを読んで下さい。
注: isapnptools は SB AWE ウェーブテーブルデバイスの3つの I/O ポート の検出に失敗することがよくあります。この HOWTO の最後に示した例と 比べながらあなたの isapnp.conf ファイルの WaveTable の entry を 注意深く見て下さい。必要に応じて 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 の人達も興味があると私は思い ます)に連絡して下さい。
注: pnpdump の古いバージョンでは、最後の行 (WAITFORKEY)が書き落とされて いる場合がありますから要注意です。
PnP カードが一つ(サウンドカード)だけの isapnp.conf
のサンプルが、
このドキュメントの最後にあります。
(
isapnp.conf のサンプルの項をご覧下さい)
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
/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 はモジュールがロードされる前にスタートしなければならないという 点に注意して下さい。(以下をご覧下さい)
【訳注】 Linux の起動時、システムの初期化と設定は Slackware の場合、 /etc/rc.d/rc.S と /etc/rc.d/rc.M スクリプトに書かれた内容に従って 次のような順序で行われます。(主なものだけを順に列記しました)
1. /etc/rc.d/rc.S # システム初期化スクリプト SysVinit (つまり Debian, RedHat, Caldera) の場合は /etc/rc.d/rc.sysinit が、これに相当します。
(/sbin/kerneld)
/etc/rc.d/rc.modules (モジュール)
/etc/rc.d/rc.pcmcia (PCMCIA)
/etc/rc.d/rc.serial (シリアル)
2. /etc/rc.d/rc.M # マルチユーザモードスクリプト
Screen blanks の設定
/etc/rc.d/rc.cdrom (CDROM)
crond の起動
HOSTNAME の設定
NET subsystem の初期化 (/etc/rc.d/rc.inet1 と /etc/rc.d/rc.inet2)
/etc/rc.d/rc.font (カスタム・スクリーンフォントのロード)
/etc/rc.d/rc.ibcs2 (インテル・バイナリ互換仕様)
/etc/rc.d/rc.keymap (カスタム・キーマップ)
/etc/rc.d/rc.local (ローカル設定)
トラブルを避けるために、ネットワークの設定の前 (/etc/rc.d/rc.M ではホスト
名のセットの後)に isapnp を走らせた方が良いかも知れません。
また、sound.o をモジュールにして /etc/rc.d/rc.modules から組み込む場合、
isapnp は rc.modules の呼ばれる前に組み込む方が問題が少ないと思われるため
/etc/rc.d/rc.S の中で rc.modules が呼ばれる前に 参考:
JF の PnP-FAQ (Linux Plug-and-Play FAQ)
【訳注終り】
カーネルのコンパイルをする前に、サウンドドライバに対して AWE Driver Extension を適用する必要があります。カーネルソースツリーの中に既に awedrv extension が入っている (これは /usr/src/linux/drivers/sound/lowlevel/ を確認して下さい) 場合でも awedrv ソフトウェアをアップグレードすることが できます。awedrv ソースディレクトリの中のインストール方法に従って下さい。 要するにカーネルソースにパッチをあてるインストール・スクリプトを実行する 必要があるのです。
インストール・スクリプトを実行した後でカーネルソースツリーをアップグレー ドした場合は注意して下さい。 このインストール・スクリプトはファイルが存在するかをチェックするだけで、 必要なパッチをあてることはしません。
【訳注】 このスクリプトは、ある特定のファイルが存在するかどうかをチェック
して(それを手がかりに)動作するので、もしそのファイルがすでに存在して(しま
って)いると必要なファイルにパッチが当てられない、という意味です。
【訳注終り】
カーネルソースをアップグレードした後、スクリプトを実行する前に
drivers/sound/lowlevel/awe_wav.c
ファイルを削除するようアドバイス
します。
次に、サウンドサポートのためにカーネルの構築をする必要があります。あなたが カーネルの構築に関して少しだけ知っていることを期待しますが、詳しくは Sound HOWTO と Kernel HOWTO をご覧下さい。カーネルソースのディレクトリ(例えば /usr/src/linux) に移動し、次のようにします。
# make config
または make menuconfig あるいは make xconfig とします。次に通常通りカーネ ルの設定をします。特別にあなたのシステムに合わせた、小さくて且つ強力なカー ネルをメイクするためにこの機会を使いましょう。 サウンドドライバをローダブルモジュールとしてインストールしたい (PnPカード の場合は必須です)なら、(きっとあなたはそうするでしょうけど) "Enable loadable module support" で必ず Y と答えてください。
あるところでサウンドカードをサポートするか(したいか)どうかを質問されます。 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 ファイルがあるならそれを見て下さい。私の場合は下記のデフォル ト値で OK でした。カーネルコンフィグレーションスクリプトからのデフォルト 値はだめなので注意して下さい。(特に 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.d
他の Linux ディストリビューションの場合は、新しいカーネルをコンパイルする 標準的な方法に従って下さい。また、下記の2つも忘れずに。
# make modules
# make modules_install
【訳注】Slackware の場合、# make config (または menuconfig , xconfig) の あと次のようにします。
# cd /usr/src/linux
# make dep
# make clean
# make
# make zlilo (カーネルのインストール。LILO を使っている場合)
# make modules
# make modules_install
# depmod -a
【訳注終り】
詳しくは Sound HOWTO とKernel HOWTO をご覧下さい。
新しいカーネルをインストールした後はリブートする必要があります。(手元に 動作するブートディスクを用意しておくこと) 起動することを祈りましょう。
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 は 4096KB のメモリを積んでいるにもかかわらず、28672KB と『検出された』 そうです) awedrv ソフトウェアのアップグレードをするか、または下記のように /usr/src/linux/drivers/sound/lowlevel/awe_config.h ファイルにメモリの量を定義 するかの何れかを試してみて下さい。
#define AWE_DEFAULT_MEM_SIZE 4096 /* kbytes */
申し訳ないけど、カーネルを再コンパイルする必要があります。(たぶんモジュー ルのコンパイルだけで十分だとは思いますが、確かではありません)
これが動いたら、サウンドモジュールを自動的にロードしたいと思うでしょう。
kerneld
を使う (これがなぜ良くないか 2.4項 で説明しました) か、または
/etc/modules
に(Debian の場合)
sound
という 1行を追加するか、あるいは起動スクリプトに
/sbin/modprobe -a sound
という追加します。