ALSA とブートペンギン


ぱぱんださんのページに感銘を受けて、サウンドなんてPCMが鳴って、CDが聞ければい いや、くらいに思っていたオレもALSAを入れてみることにした。

ぱぱんださんのページは本来ならトップページ以外への直リンクは現金厳禁な のだが、すまん!許してくれぇぇぇ!と声を限りに叫んで許してもらったことにする( すまん!)

でも、よくあれだけの内容の日記を毎日書けるよね。ほんと感銘。あれだけの情報量を 、たかが通信費だけの負担で、実質タダで読めるってんだから、ったく田中某だかので きるシリーズだのを買って読むヤツの気が知れぬわ。っつ〜か、これでわかった!イン トラネット!!とかいって、NT鯖にエくそチェンジを入れて、Win98 で Out of Memory ぢゃなかった OutLook とかゆ〜の入れて、イソターネット・エくそプローラでアウア ウやってたりするんだぜ。そんなんで、これでわかった!とか言っちゃえるようなもんなの?イントラネットってのわ。そんな本に金出して嬉しい?

できるだのこれでわかったのもう見飽きたわ。 そんなんですぐ見切れるくらいなら、誰も苦労なぞせぬ。

おっと脱線(笑)

てなわけで ALSA ね。でもやった作業といえば、ぱぱんださんのページに書いてあると おり。おしまい。

ぢゃしょうがないので一応書いておくと、まず alsa-driver-0.3.0 はpre4 が出て たからそれを取ってきた。alsa-lib-0.3.0 もpre4 が出て たからそれを。alsa-utils-0.3.0だけはpre3 のまま のようだったので、それを取ってきた。

で、kernel 附属の OSS/lite が残っていてはいけないのは確かなのだが、どうやら pre4 からは、kernel 2.2.x で使う場合は make config(なりmenuconfigなりxconfig)のsound の頭でいきなり N と答えてはいけないらしい。

ここで N として、完全なまでに kernel 2.2.x からサウンド関係をなくしてしまうと、いざ ALSA をインストールしても、module の insmod 時に、得体の知れないシンボル未定義 エラーという秘孔を突かれてしまうそうだ。ここに突かれた人が約1名いるので気を付 けようね。

alsa-driver-0.3.0-pre4.tar.gz を展開して出てくる INSTALL という文書にも、

Quick install
=============

1) If you have got 2.2 or later kernel, you must turn on sound support.
などと書いてあることだし。

で、後の作業は特にヒネリはないので簡単に書くと、alsa-driver の tar 玉を展開し て ./configure ; make install し、./snddevices という script を実行して /dev 以下にサウンド関係のデバイスを作った。

で、ぱぱんださんのページにも書いてあるとおり、これに続いて

cp utils/alsasound /etc/rc.d/init.d/
ln -s /etc/rc.d/init.d/alsasound /etc/rc.d/rc3.d/S89alsasound
ln -s /etc/rc.d/init.d/alsasound /etc/rc.d/rc5.d/S89alsasound
としておこう。SysVinit なディストリビューションを使っている人だけ、だけどね。

alsa-driver の configure には多数のオプションがあって、ISA PnP なカードの場合は --with-isapnp=yes を付けろ、とか書いてある。オレの使っているカードってのは SoundBlasterAWE64Value という、まさに ISA PnP なカードなんぢゃないかと思うのだが、常々 isapnp 関係のツールなぞなにも使わずとも普通に認識されていたので、今回も特に意識せず、ただ単に ./configure しただけなんだけど、何の問題もなかった。

で、alsa-driver が入ったら、alsa-lib に alsa-utils と続けて ./configure ; make install でホイホイ入れて、インストールそのものはおしまい。

インストールが終わったら、/etc/conf.modules を設定してやらなければならないのだが、これもカード枚のサンプルがきっちりと INSTALL に書いてあったので、それに従って書いた。こんな感じ。

# ALSA portion
alias char-major-116 snd
options snd snd_major=116 snd_cards_limit=1
alias snd-card-0 snd-sb16
options snd-sb16 snd_index=1 snd_id=SB64AWE snd_port=0x220 snd_irq=5 snd_dma8=1 snd_dma8_size=8 snd_dma16=5 snd_dma16_size=8
alias sound-service-0-3 snd-pcm1-oss
alias sound-service-0-4 snd-pcm1-oss
alias sound-service-0-5 snd-pcm1-oss
alias sound-service-0-12 snd-pcm1-oss
なんか、ぱぱんださんのところと char-major の番号とかからして違う(汗)んだけど、 INSTALL には kernel 2.2.x で使う場合は、alias char-major-116 snd って書いとけよ、って書いてあるんだもん。で、あとの設定、特に snd-sb16 に与えるオプションに付いては INSTALL に書いてあるカード毎の説明に従って、従来通り OSS/lite で与えていたのと同じ意味になるようにただ書いただけ。

で、これでリブートしたところ、確かに音が鳴らぬわ!

噂に聞いていたとおり(っつ〜かぱぱんださんのハマりを読んで知恵を付けただけ)、 ALSA ってインストール直後は何が何でもミュート されているんだわ。alsamixer を起動すると、CUI ながら +, -, |, # で表現されたグ ライコみたいな画面になるから、カーソルの左右キーで一番上に +MM+ と書いてあるバ ーに移動し、M を押してミュートを解除しよう。カーソルの上下でレベルの上下、ESC で抜けだ。

これでレベルが設定できたら alsactl store として(root でね)設定内容を保存しよう。次回から はブート時に復元してくれるようになる。

実はこの alsactl store の技を知らず、amixer -w などとして保存し、rc.local で amixer -r などとして読ませるというダッサイ設定に最初はしていたのだが、_tom_ さ んに、なにそれダサダサ〜と突っ込まれ、教えてもらったのだった(笑)

実際、音のほうはどうか、というと、いいぞ!すっ げぇいい!良すぎ〜!!

なんてことわなかった(笑) オレごときの詰まった耳でわわからないのか… 心の耳で聞くのだ!とほほる!と思ったのだが、とほほるはまだレベルが足りず、その魔法は覚えていないのだった(笑) まぁ多少は良くなったんじゃないかなぁ(プラシーボ全開) あ、でも alsamixer ってホ ラ、Bass とか Treble とか設定できるし。それも個別に。そゆとこいいなぁ、なんて( く、苦しいか)

で、次は TiMidityたすたすを入れる予定だったのだが、考えてみればオレってば渡米するときに Nifty を解約してしまっていて、MIDI ファイルなら Nifty にいいのがいっぱいありま すよ、などと教わっても聞くことはかなわぬ。で、TiMidity 入れるぞ、と萌え萌えだ ったのがちょっと萎え萎えに。

その間、せっかく kernel を再構築するのだから、ウワサのブートペンギンを拝んでみ たいものだ、と思ってそっちに作業を切り替えてしまった。

ブート時にペンギンロゴを表示させること自体はとても簡単で、kernel の make config(でも menuconfig でも xconfig でも)の時に、fbconを使えるように

Console Drivers で
VGA Text Console を Y
Video mode selection support を Y
Support for frame buffer devices を Y
VESA VGA graphics console を Y

などとしてkernelを再構築して、あとは /usr/src/linux/Documentation/fb/vesafb.txt を良く読んで、自分の使っているディスプレイ・カードに合せた magic number を /etc/lilo.conf の append に書いた。オレは Matrox Millennium II 8MB PCI を使っ ているので

append="video=matrox:vesa:0x117"

などとしている。これで fbcon で 1024x768x24bppという指定だ。

さらに、PPro か PenII(Celeronもかな?)を使っている人は、video=hogehoge:mtrr などとして、mtrr という謎の呪文を追加すると、xengine の測定値が1.5〜2倍くらいに向上するそうだ。

まぁ xengine 自体は厳密な測定じゃないんだけど、X の描画が速くなるのは確からしい。linux-users ML で沖さん という方に教えていただいたのだ。本当はその mail にリンクを張りたいんだけど、まだ linux-user ML のアーカイ ブ検索サーバには残念ながら登録されてなかった。1週間くらいすれば登録さ れると思うから、linux-users:45310 を読んでみるといいかも。linux-users:46697 で さらに詳細に、なぜ速くなるのか、どこが速くなるのか、を投稿してくださっている。 が、46697 は今日の配信だから、アーカイブに入るのはまだしばらく先かな。

沖さんは Linuxのみならず x86 なハードに深遠なまでに詳しい方で、時折、珠玉なメールを linux-users に投稿なさるので、実は秘かにチェック入っていたのだ。以前、オレがプリンタを購入するさいにも、うっかりWindowsでしか使えぬ破壊された仕様のプリンタを買わないように誘導してくださったし。で、実はオレゴン在住な方なのだ(笑) だもんで、オレがカリフォルニアに帰る前に、一度だけ晩飯を御一緒させていただいた ことがあるんだぜ(えっへん)

もとい。この mtrr って呪文は、fbcon を有効にする以前に、kernel config の Processor type and features で MTRR support を Y にしてないと効果ないのだろう と思う。デフォルトが Y だったと思うから、まぁ誰もが Y にしてるとは思うけど念のため。あ、そうそう MMX Pentium じゃ当然ながら効果はなかった(泣) オレの Processor って MMX200… はやく来い来い Dual Celeron(爆)

しかもこのブートペンギン、SMP で プロセッサ2個だと2匹で出るんだって。早く見た いなぁ双子ペンギン。わはは。


メール 戻る