[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:19717] Re: SOUND DriverALSAの組み込み方



こじま@梅雨末期の大雨であちこち大変みたいですね,です.

From: naomijj@hi-ho.ne.jp
Subject: [plamo:19716] Re: SOUND Driver ALSAの組み込み方
Date: Mon, 21 Jul 2003 11:12:17 +0900

> (他のmodulesを組み込む時もメジャー、マイナー番号の付け方が解りません。)
> ALSAに限らず、modulesを使う時いつも気になります。
> 検索をかけては、真似ているのですが、番号の割り出しをどのようにするのか。
> いつも疑問ですし、興味があります。
> 検索をかけたりしますが、まだはっきり解りません。
> PCIスロットなどに差すと、スロット位置で変わったりするのか?と思ったりしてます。

ここしばらく苦労している某解説書で,ちょうどこのヘンの話を書いてたので
ご参考までに.

# 出版されるかは不明だけど(^^;),

-----------------------------------------------
-- /etc/modules.conf

Linux では,ほとんどのドライバがモジュール化され,動作中でも必要に応じ
て組み込めるようになっています.そのために,どのモジュールドライバがど
のデバイスに対応するかを指定するための設定ファイルが /etc/modules.conf 
です.以下に RH8.0 の /etc/modules.conf を示します.

alias parport_lowlevel parport_pc
alias eth0 pcnet32
alias scsi_hostadapter BusLogic
alias usb-controller usb-uhci
alias char-major-14 sb
options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330

RH8.0 の場合,ハードウェアを自動的に識別する機能が組み込まれているため,
/etc/modules.conf は自動的に作成され,比較的簡単な構成になっています.

上記の例のように,/etc/modules.conf では alias の指定によって仮想的な
デバイス名と実際のモジュールデバイスが対応づけられ,options によって,
そのモジュールデバイスを組み込んだ際に与えられるパラメータを指定できま
す.例えば,

alias char-major-14 sb 

は,メジャー番号 14 のデバイス(/dev/sequencer や /dev/dsp 等,サウンド
関係のデバイス)を利用する際には,sb.o というモジュール(Open Sound
System 製のサウンドブラスタ用ドライバ)を組み込む,という意味になります.
また,

options sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330

という指定は,sb.o というモジュールを組み込む際には,パラメータとして 
"io=0x220.." を与える,という意味になります.

同様に,

alias eth0 pcnet32

イーサネットを利用する際は,pcnet32.o というモジュール(AMD PCnet32 ネッ
トワークカード用のドライバ)を利用する,という意味です.

もう少し複雑な例として,Plamo-3.1 の /etc/modules.conf の中から 
ALSA(Advanced Linux Sound Archtecture)を利用する際の設定を紹介します.

alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-intel8x0
post-install snd-card-0 alsactl restore
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss

上記の例の 1 行目は, ALSA の場合デバイスのメジャー番号として 116 が割
りあてられているため,メジャー番号 116 のデバイスを利用する際には snd 
というモジュールドライバを利用するという意味の設定です.

Linux のサウンド機能は,従来 OSS(Open Sound System) が担っており,OSS 
用に開発されたアプリケーションも多数あるため, ALSA には OSS と共存す
る機能も用意されており,OSS 用のデバイス(メジャー番号 14 のデバイス)が
必要になった際は OSS が提供している soundcore モジュールドライバを利用
する,という指定が 2 行目です.

ALSA の場合,複数のサウンドカードを同時に利用することができるため,実
際のサウンドカード用のモジュールドライバはカードごとに snd-card-0 から 
snd-card-7 まで指定することができます.上記の例の 3 行目が実際のサウン
ドカード用のモジュールドライバの指定で,snd-card-0 として snd-intel8x0 
モジュールドライバを利用する,という設定になっています.4 行目の 
post-install は,snd-card-0 で指定したモジュールドライバをインストール
した後に実行するコマンドの指定で,上記の例では alsactl restore コマン
ドを実行し,ボリューム等の設定を復旧するようにしています.

5 行目以下の指定は OSS を前提としたアプリケーションに対して ALSA が提
供する機能を指定するものです.5 行目は OSS が利用する一枚目のサウンド
カード(sound-slot-0)として ALSA の snd-card-0(実体は snd-itel8x0)を割
り当て,6 行目以降の sound-service-0-X はそのサウンドカードを用いて提
供する各種サービスに対して ALSA のモジュールを割りあてています.X の部
分は OSS が提供するサービスのマイナー番号に対応しており,(14, 0)は
/dev/mixer, (14, 1)は/dev/sequencer,(14, 3)は/dev/dsp0,(14, 8)は
/dev/music,(14, 12)は/dev/adsp0 にそれぞれ対応する機能を提供するため
のモジュールを指定しています.

/etc/modules.conf にはこのように複雑な依存関係を指定することができます
が,高機能な分,モジュールを読み込む度にチェックするのは大変な作業にな
ります.そのため,ld.so.conf と ld.so.cache の関係と同様,どのモジュー
ルを使う際にはどのモジュールを読み込む必要があるかという情報をあらかじ
め用意しておくことになっています.このためのコマンドが depmod で,
depmod -a コマンドを実行すると /etc/modules.conf に記述に従って存在す
るモジュールドライバを調べ, "/lib/modules/<カーネルのバージョン>/modules.dep" 
というファイルに依存関係を記述します.すなわち,/etc/modules.conf を修
正した場合は depmod -a コマンドを実行して依存関係情報(modules.dep)も更
新しておく必要があります.

/etc/modules.conf のより詳細な説明は modules.conf の man ページを,モ
ジュールを読み込むためのコマンドについては modprobe や insmod の man 
ページを参照してください.

References
[plamo:19715] Re: SOUND Driver ALSAの組み込み方, HOTTA Sadamichi
[plamo:19716] Re: SOUND DriverALSAの組み込み方, naomijj

[検索ページ] [メール一覧]
Plamo ML 公開システム