☆ VMWare の仮想OSで音を鳴らそう!! ☆ 以下のいくつかのことを実行可能にするためにカーネルを再構築する. ・ 仮想OSで音を鳴らす. ■ カーネルの再構築 & インストール □ パッケージのインストール カーネルを再構築するために, 以下のパッケージをインストールする. ・ kernel-source-2.4.18 ・ kernel-package ・ bzip2 ・ bin86 ・ libncurses5-dev □ ソースの展開 〜 menuconfig ここらへんは postelなど でのドキュメントを参照のこと □ カーネルの設定 <サウンドの設定> ● Sound ・ [*] Sound Card support (これ以外にはあえてチェックをつけないこと) 設定が完了したら, Exit する. ここまでの設定を保存するか聞かれるので Yes を選択. ちなみにこの設定は /usr/src/linux/.config に書き込まれている. □ カーネルイメージの作成 以下のコマンドで, カーネルイメージを作成する. # make dep # make-kpkg clean # make-kpkg --revision shadow-2003-07-31 kernel_image するとカーネルのコンパイルがはじまり, カーネルイメージが 作成される. □ カーネルイメージのバックアップ 上記の作業で /usr/src/ 以下に kernel-image-2.4.18_shadow-2002-07-31_i386.deb というカーネルイメージ ファイルが作成されるはずである. カーネルの作成には時間がかかるので, このファイルをどこかに バックアップをとっておくと良いかもしれない. □ インストール # dpkg -i /usr/src/kernel-image-2.4.18_shadow-2002-07-31_i386.deb □ 再起動 インストールが終了したら再起動を行う. ■ alsa のインストール □ 必要なパッケージのインストール ・ alsaconf [0.4.3b-4] + alsa-base [0.9+0beta12] + alsa-headers [0.9+0beta12-3] + alsa-utils [0.9+0beta12] + libasound0.4 [0.9.0beta10] ◆ インストール中の質問 (alsaconf) ┌───────────────────────────┐ |いくつかのチップセットでは、ドライバをロードしたまま | |マシンをサスペンド するとレジュームした時に kernel | |がハングする事があります。Yes を選択 すると | |Debian ALSA システムがマシンをサスペンドする前に | |ドライバをロード することで kernel がハングしない | |ようにします。 | | | |サスペンドの前に強制的に ALSA ドライバを終了しますか? | └───────────────────────────┘ サスペンドはよく行うため,「Yes」 なお, この設定は /etc/alsa/alsa-base.conf に 書き込まれる. …が, どうやらうまく働いていないらしい. /etc/alsa/alsa-base.conf を以下のように編集すること. force_stop_modules_before_suspend=false ↓ force_stop_modules_before_suspend=true ・ alsa-source ◆ インストール中の質問 ┌───────────────────────────┐ |You can choose cards to be built by selecting cards | |you want. Each selection is a same name to a option | |of configure script '--with-cards'. The following | |lists are short descriptions of the options to show | |what they mean. | | | | : | | : | | | | sb16 -- ISA: Sound Blaster 16 | | sb8 -- ISA: Sound Blaster 1.0/2.0/Pro | | sbawe -- ISA: Sound Blaster AWE 32/64 | └───────────────────────────┘ 一応目を通して「OK」 ┌───────────────────────────┐ |Select cards to be built. | | | | [ ] ad1816a | | : | | [*] sb16 | | : | └───────────────────────────┘ sb16 でマークをつけて「OK」 ┌───────────────────────────┐ |あなたのコンピュータが ISA PnP をサポートしていない | |場合、 ALSA ドライバを ISA PnP モードで構築すると、 | |カードを認識できなくなる 等の不具合が起こることが | |あります。そのため、もし ISA PnP をサポートして | |いない場合、No と答えてください。 | | | |構築される ALSA ドライバに ISA PnP サポート | |を組み込みますか? | └───────────────────────────┘ VMware のサウンドカードは PnP 対応していないので「No」 ┌───────────────────────────┐ |ドライバのデバッグに役立つデバッグコードをドライバに | |組み込む場合、 Yes を選択してください。 | | | |構築される ALSA ドライバにデバッグコードを | |組み込みますか? | └───────────────────────────┘ 必要ないので「No」 上記の質問の返答は /etc/alsa/alsa-source.conf に登録される. …はずだが, うまく反映されていないので手動で書き換えた. ※後で追記予定※ □ alsa モジュールの作成 & インストール ソースコードが /usr/src/alsadriver.tar.gz と言う名前で置かれる. これを展開する. # tar zxCvf /usr/src /usr/src/alsadriver.tar.gz おそらく, /usr/src/modules/alsa-driver にソースが展開される はずである. それが確認されたら, /usr/src/linux に移動し, make-kpkg コマンドでモジュールを作成する. # cd /usr/src/linux # make-kpkg modules_image すると, 親ディレクトリに alsa-modules-2.4.18_0.9+0beta12+3+p0+shadow+2003+07+31_i386.deb のようなパッケージが作成される. ちゃんと作成されたようなら, /usr/src/linux に移動し, clean してゴミ掃除 # cd /usr/src/linux # make-kpkg clean その後, いよいよこの deb パッケージをインストール # dpkg -i alsa-modules-****_i386.deb でインストールする. ◆ インストール中の質問 dpkg -i でインストールしようとすると, 「 It looks like you have installed alsaconf pacakge for version 0.9. This can configure ALSA version 0.9 card easily. Would you like to configure ALSA now? (y/n) [y]」 と聞かれるが, 後で alsaconf を自分で起動して 設定するので「n」を押す. □ alsaconf にて設定 alsaconf コマンドで設定を行う # alsaconf ┌────────────────────────────┐ | ALSA CONFIGURATOR | | version 0.4.3b | | | | (c) 1998,1999,2000 | | Jan ONDREJ (SAL), | | Many fixes and improvements by Bernd Kaindl, SuSE | | | | This script is a configurator for Advanced Linux Sound | | Architecture driver. | | If alsa is running, you should close all sound apps | | now and run "/etc/init.d/alsa stop" | | to remove the drivers. alsaconf will try to do this, | | but it cannot kill your apps. | | You need ALSA 0.5.0 or higher now. | | | | (Detected ALSA version: ) | └────────────────────────────┘ 何はともあれ「了解」 --"Select Card" --「サウンドカード選択」 VMware のサウンドカードである「SoundBlaster_16_(PnP)」 を選択. --"Card identifier" --「カードの識別名選択」 基本的にサウンドカードは 1 つしか使う気が無いので デフォルトの「CARD_0」 --"IO port" --「I/O ポート選択」 選択肢は - 0x220 - 0x240 - 0x260 である. VMWare のマニュアルより「0x220」を選択. --"MPU IO port" --「MPU I/O port」 選択肢は - 0x300 - 0x330 - -1 である. VMWare のマニュアルより MPU は利用できない らしいので「-1」を選択. --"IRQ" --「IRQ 選択」 選択肢は - 5 - 7 - 9 - 10 である. VMWare のマニュアルより「5」を選択. --"8-bit DMA" --「8ビット DMA」 選択肢は - 0 - 1 - 3 である. VMWareのマニュアルより「1」を選択. --"Max. 8-bit DMA size in kB" --「8ビット DMA のサイズを指定」 最大の「64」を指定. --"16-bit DMA" --「16ビット DMA」 選択肢は - 5 - 6 - 7 である. VMWare のマニュアルより「7」を選択. --"Max. 16-bit DMA size in kB" --「16ビット DMA のサイズを指定」 最大の「128」を指定. --"Mic. Auto-Gain-Control" --「マイクの自動ゲインの設定」 Debian 徹底入門に従い, 「0 Disable」を選択. --"Select Card" --「サウンドカード選択」 再び最初のサウンドカード選択画面に戻る 既に設定は終了しているので「No_more_cards」を選択. --"Do you want to modify /etc/alsa/modutils/0.5?" 「はい」を選択. ┌────────────────────────────┐ | OK, 1 card(s) configured. | | | | ALSA CONFIGURATOR | | version 0.4.3b | | | | will prepare the card for playing now | |Now i'll run '/etc/init.d/alsa start', | |then use i'll use amixer to raise the 'Master' and 'PCM'| |volumes. IF you want to use the commanline-based mixer | |amixer also, read the man page man amixer | └────────────────────────────┘ 最後に上記のような画面が出る. 「了解」を押して完了. なお, この結果は /etc/alsa/modutils/0.5 に反映される. しかし実際に読み込まれるファイルは /etc/alsa/modutils/0.9 なので, コピーする必要がある. (コピー後に, update-modules をしないと反映されないので 注意). # cp /etc/alsa/modutils/0.5 /etc/alsa/modutils/0.9 # update-modules □ /etc/alsa/modutils/0.9 の編集 alsaconf により /etc/alsa/modutils/0.9 の雛型が出来る訳だが, alsaconf によって作成されるものは少々古くてそのまま 使えない. いくつか編集が必要になる. ・ snb-card-sb16 を snd-sb16 に変更 0.9 (本当は0.5) 内に書き出される SoundBlaster16 モジュール の名前は snb-card-sb16 になっているが, 実際には snb-sb16 なので (/lib/module/2.4.18/snd-sb16.o が それに対応する), 書き換えが必要. その他にもいくつか編集が必要そうなのだが, 結局うまくいかず 良く分からない. ただ, 編集後は update-modules コマンドを実行して /etc/modules.conf に内容を反映させること. □ ミキサーのインストール ミキサーのソフトウェアとして amixer があるので, このパッケージである. xamixer をインストールする. # apt-get install xamixer-0.4 libasound0.4 また, gnome 付属のミキサー gmix 用パッケージも インストールしてみる # apt-get install gnome-media □ 困ったこと ◆ 今までにおこなったこと ・ カーネルの再構築とインストール ・ alsa ドライバの構築とインストール ・ alsaconf により, モジュールの組み込み方を操作 本当は上記の作業が完了した時点でなんらかの 音が聞けても良さそうなものだが, うまくいかない. 最大の問題点は ・ 本当なら /proc/pci や lspci によって見えていても 良いはずの Multimedia Audio デバイス (つまりはサウンドカード) が見えていない. ことである. ドライバのはずの snd-sb16 モジュールは 組み込もうとすると /lib/modules/2.4.18/alsa/ snd-sb16.o: invalid parameter parm_snd_dma8_size snd-sb16.o: insmod /lib/modules/2.4.18/alsa/snd-sb16.o failed snd-sb16.o: insmod snd-sb16 failed となる. □ これからやる作業 - カーネルの再構築 - alsa ドライバの再構築 (PnP 無し, DEBUG 無し, CARDS は sb16 のみ) + /etc/alsa/alsa-source.conf はたぶん直接編集 - /etc/alsa/modutils/0.9 の編集 + snd-card-sb16 は snd-sb16 に + options snd-sb16 のオプションをいろいろ試す. + sb_isapnp=0 を加えてみるとか. - どこで Sound Blaster が認識されるかチェック. + dmesg + lspci [すべての PCI デバイスを表示] (Multimedia とか Audio とか) + /proc/pci (audio とか) - modprobe で snd や snd-sb16 モジュールを組み込んで反応を見る. - PCI BUS POWER MANAGEMENTです。 この部分はDISABLEとAUTOMATIC - Windows98 をインストールして本当のサウンドデバイスがなにかを 調べる. - モジュールを一度に組み込むコマンド modprobe snd-ainstr-fm; modprobe snd-hwdep; modprobe snd-mixer-oss; modprobe snd-mpu401-uart; modprobe snd-opl3-lib; modprobe snd-opl3-synth; modprobe snd-pcm-oss; modprobe snd-pcm; modprobe snd-rawmidi; modprobe snd-sb-common; modprobe snd-sb16-csp; modprobe snd-sb16-dsp; modprobe snd-sb16; modprobe snd-seq-device; modprobe snd-seq-instr; modprobe snd-seq-midi-emul; modprobe snd-seq-midi-event; modprobe snd-seq-midi; modprobe snd-seq-oss; modprobe snd-seq; modprobe snd-timer; modprobe snd