#navi(FAQ) カテゴリー: ハードウェア対応
まず,マシンにサウンドカードが載っている,のが大前提になりますが,ほとんどのセットアップ PC なら間違いなく載っているでしょう.自作機の場合は,いわずもがなですね.
マシンのサウンドカードは,どんなチップ/サウンドコントローラを使っているのか? を調べるには,/sbin/lspci コマンドを使います.
lspci は,PCI バスに接続されているすべてのデバイス情報を出力します.
PCI バス接続のサウンドボードや,マザーボード上に組み込みで載っているものなら,これで調べることができます.(ISA バス接続については,ここでは触れません.)
/sbin/lspci はユーザでも実行できますから,コンソールや X 上の kterm などで,次のように入力します.(~$ は bash のユーザプロンプトです.)
~$ /sbin/lspci
出力された内容から,audio,Multimedia,sound,といった単語が含まれている行を確かめてください.それがあなたのマシンのサウンドチップ/コントローラの情報です.
サウンドチップ/コントローラがわかったら,次に,それに対応するサウンド・ドライバ・モジュールをロードすれば音が鳴るわけですが,ここが難点かもしれません.
plamo をインストールした時点での kernel の場合,サウンド関係のドライバ類は,ほとんどのものがモジュールとして組み込まれていますので,よほど特殊なカードを除いて,
カーネルの再構築をしなくても認識されるはずです.
ここで紹介するスクリプトは,/sbin/lspci -n の結果から,対応するサウンドモジュールを自動的に決定するものです.
このスクリプトは,plamo 4.0 以降のバージョンに実装されています.複数のカードには対応していないことと, ALSA(Advanced Linux Sound Architecture)と OSS(Open Sound System,カーネルソースに最初から入っているサウンドモジュール) というように同じカードに対する複数のドライバがあった場合を使い分けられない,といった制限はあるものの,それ以外であれば自動的に適切なサウンドモジュールを選択してくれます.
※ 複数のカード/複数のドライバ対応については,plamo-ML の記事, [plamo:21865] を参照してください.
スクリプトの内容は以下の通りです.
(plamo 4.0 以降のバージョンに実装されているものは,自動的にモジュールのロードまで行なうようになっていますが, ここでは,モジュール名を出力するところまでで終了しています.)
#!/bin/sh vers=`uname -r` v_id="0x0000"`/sbin/lspci -n | grep 0401 | gawk '{print $4}' | cut -f 1 -d ':' | head -1` p_id="0x0000"`/sbin/lspci -n | grep 0401 | gawk '{print $4}' | cut -f 2 -d ':' | head -1` mod=`grep $v_id /lib/modules/$vers/modules.pcimap | grep $p_id | head -1 | gawk '{print $1}'` echo $mod
さて,このスクリプトの使い方は 2 種類あります.
それぞれの実行の結果は,便宜的に i810_audio と出力されたと仮定します.
この例では,plamo をインストールした直後に実行することを想定していますので,OSS のドライバを検知する結果になります.
ただし,plamo-4.x シリーズでは 標準で ALSA を使うようになっています.
(ALSA をインストールした場合は,モジュール名が snd-intel8x0 と異なったものになります. ALSA には,サウンドカード毎の設定情報もあります.)
~$ chmod +x snd-module.sh最後に次のように実行します.
~$ ./snd-module.sh i810_audio ~$
~$ vers=`uname -r` ~$ v_id="0x0000"`/sbin/lspci -n | grep 0401 | gawk '{print $4}' | cut -f 1 -d ':' | head -1` 以下同じようにスクリプトの 4 行目,次に 5 行目を入力します. 最後に下記のように 6 行目を入力します. ~$ echo $mod i810_audio ~$
これで,どのモジュールを使えばいいのかもわかりました.
このように出力された場合は,i810_audio がモジュール名ですから,root になり次のコマンドを使ってモジュールをロードします.
~$ su Password: ~# /sbin/modprobe i810_audio
modprobe を実行後,なにもメッセージが出ないで通常のプロンプト(~#)に戻れば,マシンに装着されているサウンドカードに対応したモジュールがロードされたことになります.
※ 参考までに,ALSA を使っている場合は,以下のコマンドを順次実行します.$mod には,上記のスクリプトを実行した結果,出力されるモジュール名を入力します.
~# /sbin/modprobe $mod ~# /sbin/modprobe soundcore ~# /sbin/modprobe snd-mixer-oss ~# /sbin/modprobe snd-pcm-oss ~# /sbin/modprobe snd-seq-oss ~# /usr/bin/aumix -q -v85 -w88
※ これも参考までに,モジュールをロードするコマンドとしては他に /sbin/insmod もあります.
(実際のところ,moprobe は insmod へのリンクになっています.)
モジュールをアンロードするコマンドは,/sbin/rmmod です.
もし,以下のようなエラーメッセージが出る場合は,正しいモジュールを選択していないことになります.
~# /sbin/modprobe i810_audio /lib/modules/2.4.22/kernel/drivers/sound/i810_audio.o: init_module: No such device Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters. You may find more information in syslog or the output from dmesg /lib/modules/2.4.22/kernel/drivers/sound/i810_audio.o: insmod /lib/modules/2.4.22/kernel/drivers/sound/i810_audio.o failed
エラーメッセージがでなければ,ここで次のコマンドを使ってモジュールがロードされているか確かめてみましょう.
~$ /sbin/lsmod
lsmod の出力に,i810_audio と soundcore (ac97_codec もでているかも知れません)があれば間違いなくロードされています.
以上で音をだす準備は終了です.では,実際に音がでるか確かめてみましょう.スピーカーのボリュームをあげるのを忘れないでください.
plamo を「お勧め」でインストールした場合なら,esdplay という wav や au といったサウンドファイルを再生するプログラムがインストールされているはずですから, 次のコマンドで,所在を確かめておきます.
plamo-4.x シリーズでは aplay もあります.
~$ which esdplay /usr/bin/esdplay
このように出力されれば,/usr/bin/ 以下に esdplay があります.
which: no esdplay in (/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/netpbm:/usr/openwin/bin:/usr/games/bin:/usr/games:/usr/games)
と出力された場合は,インストールされていませんので, Plamo-3.x/contrib/WM/Enlightenment/esound.tgz をインストール してください.
Plamo-3.x/contrib/Sound/ 内には,他にも xmms.tgz や sox.tgz, mpg123.tgz 等々のサウンド関係のパッケージがありますので, Plamo-3.x/contrib/Sound/diskso1 を読んで必要なものがあればインストールすればいいでしょう.
サウンドファイルは,/usr/X11R6/lib/X11/afterstep/sounds/ 内に au ファイルがありますし,KDE もインストールした場合は,/opt/kde/share/sounds/ 内に wav ファイルがあります.
では次のコマンドのように,どれか適当な au や wav ファイルを使って,実際に音を鳴らしてみましょう.
~$ esdplay /usr/X11R6/lib/X11/afterstep/sounds/gong.au ~$ esdplay /opt/kde/share/sounds/KDE_Startup_new.wav
音がでたなら,次は,plamo の起動時には自動的にサウンドモジュールをロードするように設定しておきましょう.
基本的には,起動時にサウンドモジュールをロードする設定は,/etc/rc.d/rc.modules に追加します.
kmod の機能を使って,サウンド関係のデバイスを使用する時には,対応するサウンドモジュールを自動的にロードするように設定するには,/etc/modules.conf にモジュール情報を追加します.
/sbin/modprobe i810_audio※ ALSA の場合は,上記の参考の内容 をすべて書き込みます. エディタを使わずに,コマンドラインから入力するには,次のようにします.
~$ su Password: ~# echo '/sbin/modprobe i810_audio' >> /etc/rc.d/rc.modulesこの場合は,/etc/rc.d/rc.modules の最下行に追加されます.
alias char-major-14 i810_audio または, alias sound-slot-0 i810_audioエディタを使わずに,コマンドラインから入力するには,次のようにします.
~$ su Password: ~# echo 'alias char-major-14 i810_audio' >> /etc/modules.conf または, ~# echo 'alias sound-slot-0 i810_audio' >> /etc/modules.confこの場合は,/etc/modules.conf の最下行に追加されます. ※ 参考までに,ALSA の場合は,上記の参考の内容 に従って次のように書きます.$mod はモジュール名です.
alias char-major-116 snd alias char-major-14 soundcore alias snd-card-0 $mod 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
最後に /etc/rc.d/rc.modules や /etc/modules.conf を編集した場合は,depmod -a コマンドを実行して,モジュールの依存関係情報を更新します.
~$ su Password: ~# /sbin/depmod -a
/etc/modules.conf を編集した場合は,depmod -a を実行すれば,上記の esdplay を使ってすぐに音が鳴ります.
/etc/rc.d/rc.modules を編集した場合は,depmod -a を実行した後に,次のコマンドを実行すると,esdplay を使って音が鳴ります.
~# /etc/rc.d/rc.modules restart
なお,一般的な /etc/modules.conf の説明や,ALSA のドライバモジュールについては, [plamo:19717] を参考にしてください.ALSA で音の設定が保存できず,再起動すると音が鳴らない場合は,6. alsactl コマンド を参考にしてください.
この件に関して追加情報などありましたら、以下にどうぞ;