前のページ 次のページ 目次

4. インストール

Linux でサウンド機能を使うためには、次の手順が必要となります。

  1. サウンドカードをインストールする。
  2. カーネルを設定し、再構築し、サウンド機能を組み込む。
  3. デバイスファイルを作成する。
  4. 再構築した Linux カーネルでブートし、テストする。

以下のセクションでは、これらの手順を詳しく説明していきます。

4.1 サウンドカードのインストール

マニュアルに従ってインストールするか、業者に依頼して インストールしてもらってください。

古いサウンドカードにはたいてい IRQ や DMA チャネルなどを設定するスイッチや ジャンパがありますから、設定をメモしておきましょう。よくわからない場合には、 工場出荷時の設定をそのまま使うのがいいでしょう。できる限り他のデバイス (イーサネットカード、SCSI ホストアダプタ、シリアル・パラレルポートなど)との 競合を避けるようにしてください。

4.2 カーネルの設定

Linux をインストールした直後であれば、おそらくコンパイル済みのカーネルを 使っていることでしょう。普通、そういうカーネルではサウンド機能を 使うことはできません。 自分で必要なドライバを組み込んでカーネルをリコンパイルしましょう。 カーネルのリコンパイルは、カーネルをバージョンアップしたり、 カーネルのサイズを最小化してメモリを節約するためにも必要となります。

カーネルを再構築する方法の詳細については、 Linux Kernel HOWTOを参照して下さい。 ここでは、サウンドカードに特有の点についてだけ説明します。

今までに一度もカーネルにサウンド機能を組み込んだことがない人は、 カーネルサウンドドライバに付属するすべての Readme ファイルを 読んで、カードに特有の情報をチェックするのがいいでしょう。 以下のような文書ファイルがカーネルサウンドドライバのディレクトリ(普通は /usr/src/linux/drivers/soundにインストールされています)にあります。

CHANGELOG         - 各リリースの変更点の説明
COPYING           - コピーと著作権に関する制約
Readme            - 最新でもっとも重要なニュース
Readme.aedsp16    - Audio Excel DSP 16 サウンドカードに関する情報
Readme.cards      - 特定のカードの設定に関する注釈
Readme.linux      - 独立にリリースされたサウンドドライバに関する注釈
Readme.modules    - ドライバをローダブルカーネルモジュールとして作成する方法
Readme.v30        - バージョン 3.0 サウンドドライバの新しい機能
experimental.txt  - 実験的な機能に関する注釈

カーネルの構築には、特に普通と変わった点はありません。 現状ではカーネル設定を行なうには3種類のやり方があります。 「make xconfig」とすると、X11 上で GUI を使って設定ができます。 「make menuconfig」とすると、テキストディスプレイ上で メニューベースの設定ができます。 ここでは「make config」で起動される伝統的なコマンドラインでの設定方法を 使用すると仮定しますが、やりかたはどの方法でもだいたい同じです。

サウンドドライバをカーネルローダブルモジュールとして作成することも 可能ですが、最初はドライバをカーネルに組み込んで作成することをおすすめします。 動作を確認してから、カーネルモジュールの方法を試してみるのがいいでしょう。

make configを実行した時、サウンド機能を有効にするためには 次の質問に「y」と答えて下さい。

Sound card support (CONFIG_SOUND) [M/n/y/?]

カーネル設定の質問に答え終ると、サウンド設定プログラムがコンパイル、 実行され、選択項目が質問されます。これらの質問には十分気をつけて 答えて下さい。誤って入力すると、それ以降の項目が質問されない場合が あるからです。例えば、最初の質問 (PAS16) には、本当に PAS16 を使っているの でなければ「y」と答えてはいけません。本当に必要なカード以外をイネーブル してはいけません。そんなことをしても余計なメモリを使うだけだからです。 また、ドライバによっては(MPU401 など)、SCSI コントローラーと競合して ブートできなくなってしまうおそれもあります。

設定時の選択項目について簡単な説明を以下に示します。 それぞれの質問について、「y」(yes)または「n」(no)で答えて下さい。 "Y/n/?"とある場合には「y」がデフォルトで、"N/y/?"とある場合には「n」が デフォルトです。デフォルトを受け入れる場合には Enter キーを叩くだけで 良いのですが、デフォルト値が必ずしも正しい選択ではないと言うことは 覚えておいて下さい。

疑問符「?」を入力すると、その設定項目に関する短い説明が表示されます。

また、すべての質問がなされるとは限らないと言うことにも注意して下さい。 設定プログラムは、以前の選択によっていくつかの質問をしないことがありますし、 いくつかの選択を自動的にしてしまうこともあります。

Old configuration exists in /etc/soundconf. Use it Y/n/?

以前にサウンド機能を持ったカーネルをコンパイルしたことがある場合、 以前の設定がセーブされていることがあります。以前の設定をそのまま使う場合、 「y」と答えて下さい。別の設定を試す場合、あるいは新しいカーネルに更新した 場合には、「n」と答えて設定を続行する必要があります。

ProAudioSpectrum 16 support Y/n/?

Pro Audio Spectrum 16 や Pro Adudio Studio 16、あるいは Logitech SoundMan 16 を 使っている場合にだけ「y」と答えて下さい。その他の Media Vision や Logitech 製の カードは PAS16 互換ではないので、「y」と答えてはいけません。

SoundBlaster support Y/n/?

Creatvie Labs 製の純正 SoundBlaster カードや、100% ハードウェア互換のクローン (例えば Thunderboard や SM Games)を使っている場合には「y」と答えて下さい。 サポートリストに載っているカードを使っている場合には、 この質問に答える前に Readme.cards ファイルのそのカードに特有の指示に 従って下さい。リストに載っていないカードで SoundBlaster 互換だと書いてある カードの場合は、「y」と答えてみてもいいでしょう。

Gravis Ultrasound support Y/n/?

GUS あるいは GUS MAX を使っている場合には「y」と答えて下さい。GUS を使って いない場合には「n」と答えて下さい。このドライバはメモリを大量に消費するから です。

MPU-401 support (NOT for SB16) Y/n/?

この質問には気をつけて下さい。MPU401 インターフェースはほとんどのカードで サポートされていますが、ドライバの中にはそれ自身で MPU401 をサポートしている ものもあります。このようなカードで MPU401 オプションをイネーブルすると、 競合を起こすことがあります。また実際には MPU401 を持っていないシステムで MPU401 をイネーブルした場合にも問題が生じることがあります。使っているカードが サポートリストに載っている場合には、Readme.cards ファイルのそのカードに 特有の指示に従って下さい。純正 MPU401 MIDI インターフェースカードを持っている 場合には、「y」と答えても安全です。

6850 UART Midi support Y/n/?

この質問には、常に「n」と答えて大丈夫です。6850 UART インターフェースは 滅多に使われていませんから。

PSS (ECHO-ADI2111) support Y/n/?

Orchid SW32 や Cardinal DSP16 あるいはその他の PSS チップセット(AD1848 codec + ADSP-2115 DSP チップ + Echo ESC614 ASIC チップ)ベースのカードを 使っている場合だけ「y」と答えて下さい。

16 bit sampling option of GUS (not GUS MAX) Y/n/?

GUS に 16 bit サンプリングドーターカードをインストールしている場合には 「y」と答えて下さい。GUS MAX を使っている場合には「n」と答えて下さい。 このオプションをイネーブルすると、GUS MAX のサポートがディセーブルされます。

GUS MAX support Y/n/?

GUS MAX を使っているときだけ「y」と答えて下さい。

Microsoft Sound System support Y/n/?

この質問に「y」と答える前に、よーく考えて下さい。 Microsoft 製の純正 Windows Sound System カードや Aztech SG 16 Pro (または NX16 Pro)カードを使っているなら、「y」と答えても安全です。また、前に示した リストに載っていないカードの場合には、「y」と答えてみてもいいでしょう。 VoxWare でサポートされているカードについては、Readme.cards のそのカード 特有の説明を参照して下さい。いくつかのドライバはそれ自身で MSS をサポート していて、このオプションをイネーブルすると競合を起こすことがあります。

Ensoniq Soundscape support Y/n/?

Ensoniq SoundScape チップセットベースのサウンドカードを使っている場合には 「y」と答えて下さい。この種のカードは Ensoniq や Spea、それに Reveal で 作られています (Reveal はそれ以外のカードも作っています)。

MediaTriX AudioTriX Pro support Y/n/?

AudioTriX Pro を使っていれば「y」と答えて下さい。

Support for MAD16 and/or Mozart based cards?

Mozart (OAK OTI-601) や MAD16 (OPTi 82C928 または 82C929) オーディオ インターフェースチップを使ったカードの場合には「y」と答えて下さい。 これらのチップは無名のカードによく使われています。 また MAD16 チップは Turtle Beach (Tropez) や Reveal (いくつかのモデル)、 Diamond (最近のもの) などの有名メーカー製のカードにも使われています。

Support for Crystal CS4232 based (PnP) cards Y/n/?

Crystal CS4232 チップセットベースのカードを使っている場合には「y」と 答えて下さい。

Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers Y/n/?

これらのカードを使っている場合には「y」と答えて下さい。

SoundBlaster Pro support Y/n/?

SoundBlaster Pro または SoundBlaster 16 を使っている場合にはこのオプションを イネーブルしてください。また、SoundBlaster Pro のクローンカードを使っている 場合にもイネーブルして下さい。「n」と答えるとメモリをいくらか節約できますが、 「y」と答えるのが安全です。

SoundBlaster 16 support Y/n/?

SoundBlaster 16 や AWE32 を使っている場合にはイネーブルして下さい。

Audio Excel DSP 16 initialization support Y/n/?

Audio Excel DSP16 カードを使っている場合にはイネーブルして下さい。 詳しくはReadme.aedsp16ファイルを読んで下さい。

その後、設定プログラムは高レベルサービスについての質問をしてきます。 これらの質問には「y」と答えることをお勧めします。必要ないと確信できる オプションにだけ「n」と答えて下さい。

/dev/dsp and /dev/audio support (usually required) Y/n/?

「n」と答えると /dev/dsp/dev/audio、つまり A/D と D/A の変換デバイスがディセーブルされてしまいます。「y」と答えて下さい。

MIDI interface support Y/n/?

「n」と答えると、/dev/midixx デバイスがディセーブルされ、 /dev/sequencer/dev/music を使った MIDI ポートへの アクセスが禁止されます。このオプションは MPU401 や General MIDI 互換デバイスのすべてに影響を与えます。

FM synthesizer (YM3812/OPL-3) support Y/n/?

この質問には「y」と答えて下さい。

/dev/sequencer support Y/n/?

「n」と答えると/dev/sequencer/dev/musicが ディセーブルされます。

Do you want support for the mixer of SG NX Pro ?

Sound Galaxy NX Pro サウンドカードを使っていて、その拡張ミキサー機能を 使いたい場合に「y」と答えて下さい。

Do you want support for the MV Jazz16 (ProSonic etc.) ?

MV Jazz16 サウンドカードを使っている場合は「y」と答えて下さい。

Do you have a Logitech SoundMan Games Y/n/?

Logitech SoundMan Games サウンドカードを使っている場合は「y」と答えて 下さい。

これらの質問の後、設定プログラムはカードに特有な設定情報を聞いてきます。 通常は I/O アドレスや IRQ、DMA 番号が質問されます。 カードによっては、初期化時に使用されるファイルが要求されます。 このファイルは DSP チップやマイクロプロセッサを持ったカードにプログラム (マイクロコード)をダウンロードして初期化するために使われます。 このファイルは設定プログラムによって .h ファイルに書き込まれ、コンパイル によってドライバに組み込まれる場合もあります。 これに関してもReadme.cardsファイルのカード特有の情報を読んで下さい。

最後に、次のようなメッセージが表示されます。

The sound driver is now configured.
Save copy of this configuration to /etc/soundconf [Y/n/?]

通常は「y」と答えて、後でカーネルをコンパイルする時に同じサウンドドライバの 設定を使えるようにします。

古いサウンドドライバをアップグレードする場合には、 /usr/include/sys/soundcard.h/usr/include/sys/ultrasound.h/usr/include/linux ディレクトリの対応するファイルへのシンボリックリンクになっているか、 あるいはそれぞれ #include <linux/soundcard.h>#include <linux/ultrasound.h> という行を 含んでいることを確認して下さい。

あとはカーネルをコンパイルして、新しいカーネルをインストールしてください。

4.3 デバイスファイルの作成

初めてカーネルサウンドドライバを設定した時には、サウンドデバイスファイルを 作成する必要があります。 /usr/src/linux/drivers/sound ディレクトリの Readme.linux の最後についている短いシェルスクリプトを 切り出して、root の権限で実行するのが簡単な方法です。

訳注 Readme.linux から必要な部分をエディタなどを使って切りだし、適当な 名前でセーブします(ここでは make-sound.sh とします)。ルートになって、 sh < make-sound.sh とするか、chmod +x make-sound.sh と そのファイルを実行可能にしてから make-sound.sh を実行すれば、 サウンド用のデバイスファイルが作成できます。

デバイスファイルがすでに存在している場合には、正しいものかどうか確認した 方がいいでしょう。間違っていたり疑わしい場合には、上記のスクリプトを実行 すれば、正しいものと置き換えてくれます。

昔の Linux パッケージのインストールスクリプトには、間違ったサウンドデバイス ファイルを作成してしまうものもありました。デバイスファイルを作成するには /dev/MAKEDEV を使うこともできますが、最新のサウンドデバイスの サポート状況を反映するためには、上記の方法を使った方がいいでしょう。

スクリプトを走らせた後で、サウンドデバイスファイルは次のようになっている はずです。

lrwxrwxrwx   1 root        11 Aug 22 00:01 audio -> /dev/audio0
crw-rw-rw-   1 root   14,   4 Aug 22 00:01 audio0
crw-rw-rw-   1 root   14,  20 Aug 22 00:01 audio1
lrwxrwxrwx   1 root         9 Aug 22 00:01 dsp -> /dev/dsp0
crw-rw-rw-   1 root   14,   3 Aug 22 00:01 dsp0
crw-rw-rw-   1 root   14,  19 Aug 22 00:01 dsp1
crw-rw-rw-   1 root   14,   2 Aug 22 00:01 midi00
crw-rw-rw-   1 root   14,  18 Aug 22 00:01 midi01
crw-rw-rw-   1 root   14,  34 Aug 22 00:01 midi02
crw-rw-rw-   1 root   14,  50 Aug 22 00:01 midi03
crw-rw-rw-   1 root   14,   0 Aug 22 00:01 mixer
crw-rw-rw-   1 root   14,  16 Aug 22 00:01 mixer1
crw-rw-rw-   1 root   14,   8 Aug 22 00:01 music
crw-rw-rw-   1 root   14,  17 Aug 22 00:01 patmgr0
crw-rw-rw-   1 root   14,  33 Aug 22 00:01 patmgr1
crw-rw-rw-   1 root   14,   1 Aug 22 00:01 sequencer
lrwxrwxrwx   1 root        10 Aug 22 00:01 sequencer2 -> /dev/music
crw-rw-rw-   1 root   14,   6 Aug 22 00:01 sndstat

デバイス名と、4番目の欄に記載されているメジャーデバイス番号、 5番目の欄に記載されているマイナーデバイス番号には特に注意して下さい。

PC スピーカーサウンドドライバを使っている場合、パッケージに付属する 文書を読んで、どういうデバイスファイルを作成すればいいか決めて下さい。

普通はカーネルを構築する際に使った設定をそのまま使って大丈夫なはずですが、 例えば LILO からカーネルコマンドラインに引数を渡してブート時にサウンド ドライバを設定することもできます。これらの引数は Readme.linux に定義されていますが、使う必要はほとんどないはずです。これらは 主に複数タイプのサウンドカードをサポートするカーネルを作成する目的で、 Linux ブートディスクの開発者用に用意されているものです。

4.4 Linux のブートとインストールのテスト

この時点で、新しいカーネルでブートしてサウンドドライバをテストする 準備が整っているはずです。 いつもやっているやり方で、新しいカーネルをインストールし、 リブートして下さい(もちろん、問題が起こった時のために、古いカーネルも ブートできるように残しておいてください)。

ブート中に、次のようなメッセージが表示されることを確認して下さい (スクロールが速過ぎて読めない場合には、「dmesg」コマンドを使って後から 確認することもできます)。

訳注: Shift+PageUp で、画面を逆スクロールすることもできます。

snd2 <SoundBlaster Pro 3.2> at 0x220 irq 5 drq 1
snd1 <Yamaha OPL-3 FM> at 0x388 irq 0 drq 0

このメッセージは、サウンドカードのタイプとジャンパ設定(もしあれば)と 一致しているはずです。

ブート中、ドライバからエラーメッセージや警告メッセージが表示されることも あります。サウンドドライバの設定後初めてブートする時には、このような メッセージが出ないかどうか、注意して見ていて下さい。

次に、/dev/sndstat デバイスファイルをチェックしてください。 これはサウンドドライバのステータスデバイスファイルで、読み出すと サウンドカードドライバが適切に初期化されたかどうかが分かります。 次に出力例を示します。

% cat /dev/sndstat
Sound Driver:3.5.2-960330 (Tue  4 16:31:10 EDT 1996 root,
Linux fizzbin 2.0.0 #1 Mon Jun 3 16:59:37 EDT 1996 i386)
Kernel: Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386
Config options: a80002

Installed drivers:
Type 1: OPL-2/OPL-3 FM
Type 2: SoundBlaster
Type 6: SoundBlaster 16bit
Type 7: SB MPU

Card config:
SoundBlaster at 0x220 irq 5 drq 1,5
OPL-2/OPL-3 FM at 0x388 irq 0 drq 0

Audio devices:
0: SoundBlaster Pro 3.2

Synth devices:
0: Yamaha OPL-3

Midi devices:
0: SoundBlaster

Timers:
0: System clock

Mixers:
0: SoundBlaster

以上で、簡単なサウンドファイルを再生する準備は整いました。 サンプルサウンドファイルをサウンドデバイスに送って、 サウンド出力機能の基本的なチェックをしてみましょう。

% cat endoftheworld >/dev/dsp
% cat crash.au >/dev/audio

(上のコマンド中の「>」を抜かさないように気をつけて下さい)。

サンプルサウンドファイルは、 ftp://tsx-11.mit.edu/pub/linux/packages/sound/snd-data-0.1.tar.Z から入手可能です。

次に、サウンド録音を試してみましょう。 カードがサウンド入力機能を持っている場合、次のようにして簡易なテストを することができます。

# マイクロフォンから4秒録音
EDT% dd bs=8k count=4 </dev/audio >sample.au
4+0 records in
4+0 records out
# 再生
% cat sample.au >/dev/audio

もちろん、このテストをするためにはサウンドカードにマイクロフォンをつなぎ、 それに向かって喋る必要があります。また、マイクロフォンを入力デバイスとして 設定し、録音レベルを設定するために、ミキサープログラムが必要になるかも しれません。

これらのテストがうまくいったら、サウンド D/A と A/D のハードウェアと ソフトウェアは正しく動作していると思っていいでしょう。 問題が生じた場合には、次のセクションを参照して下さい。

4.5 トラブルシューティング

ここに書いてある通りにしたのにうまく行かなかった場合には、 以下の項目をチェックしてみてください。 以下の項目は、簡単なものから複雑なものへと順番に並べてあります。 一つの項目が失敗したら、その問題を解決してから次に進んで下さい。

ステップ1: 本当にコンパイルしたカーネルが使われているかどうか確認する。

サウンド機能を組み込んだカーネルを使っているかどうかは、 カーネルのタイムスタンプをチェックすることによって確認できます。 このためには uname コマンドを使うこともできますし、

% uname -a
Linux fizzbin 2.0.0 #1 Tue Jun 4 16:57:55 EDT 1996 i386

あるいは /proc/version ファイルを見てみることもできます。

% cat /proc/version
Linux version 2.0.0 (root@fizzbin) (gcc version 2.7.0) #1 Tue Jun 4 16:57:55 EDT 1996

タイムスタンプがカーネルをコンパイルした時間と異なっている場合には、 古いカーネルを使っていることになります。本当にリブートしましたか? LILO を使っている場合には、再インストールしましたか(通常 /etc/lilo/installを走らせます)? フロッピーからブートしている場合、新しいブートフロッピーを作成して それを使ってブートしましたか?

ステップ2: カーネルサウンドドライバが組み込まれていることを確認する。

どんなドライバが組み込まれているかは、/proc/devices を見ることに よって分かります。

% cat /proc/devices
Character devices:
 1 mem
 4 tty
 5 cua
 6 lp
14 sound
15 Joystick

Block devices:
 2 fd
 3 hd
25 sbpcd

ここで探すのは、「sound」と名前がついているキャラクタデバイス14です。 サウンドドライバがここに表示されない場合、カーネルの設定か構築に 何か間違いがあったことになります。 もう一度カーネルのインストールをやり直して下さい。

ステップ3: ブート時にカーネルはサウンドカードを認識しましたか?

ブートしたカーネルでサウンドカードが認識されていることを確認して下さい。 ブート時にメッセージが表示されているはずです。メッセージが画面から スクロールして見えなくなってしまった場合、

% dmesg

あるいは

% tail /var/adm/messages

とすればもう一度メッセージを見ることができます。

サウンドカードが認識されていない場合、何か不具合があることになります。 まず、本当にカードがインストールされているかどうか確認して下さい。 サウンドカードが DOS で動作する場合、ハードウェアは動作していると思って 間違いないでしょうから、カーネルの設定に問題がありそうです。 サウンドカードのタイプやパラメタの設定が間違っていたか、 そのサウンドカードが Linux のカーネルサウンドカードドライバでサポート されていないかのどちらかでしょう。

「互換」サウンドカードの中には、DOS ドライバで初期化する必要があるものも あります。 DOS でブートして、ベンダから供給されるサウンドカードドライバをロードして ください。それから Control-Alt-Delete で Linux をソフトブートし、 カードの I/O アドレスや DMA、それに IRQ の設定が Linux と DOS とで 一致していることを確認して下さい。サウンドドライバソースパッケージの Readme.cardsファイルを読んで、使用しているタイプのカードの設定に ついてヒントを探して下さい。

サウンドカードがこの文書に載っていない場合、Linux ドライバでサポートされて いない可能性があります。この文書の最後にある参考文献のリストをチェックすれば、 何か情報が得られるかもしれません。

ステップ4: dspデバイスからデータを読めますか?

/dev/audio デバイスから dd コマンドを使ってデータを読み出して 見て下さい。エラーなく読み出せれば OK です。

訳注: 次のようにします。

% dd if=/dev/audio
しばらく待ってエラーにならなかったら、Ctrl-C で止めます。

これがうまくいかなかった場合には、デバイスファイルに原因があると考えられます。 /dev ディレクトリにデバイスファイルが存在して、メジャーデバイス番号と マイナーデバイス番号が正しいこと、デバイスファイルのパーミッションが 読み出しと書き込みを許可していることを確認して下さい。

可能性としては低いのですが、ハードウェアの問題かもしれません。 DOS でテストしてみてください。

どうしてもうまく行かない場合

それでもまだ問題が解決しない場合には、最後に以下を試してみて下さい。

訳注: もちろん最後は冗談です。


前のページ 次のページ 目次