FreeBSDは標準ではサウンド機能が無効になっています。
しかし、ドライバーを組み込むことにより有効にできます。
FreeBSDの標準kernel(GENERIC)ではサウンド機能が無効になっていませんが、ドライバー(カーネルモジュール)をロードすることにより有効にできます。
自分のPCのサウンドカードが鳴るのかを知るために、最初に
> su
# kldload snd_driver
# cat /dev/sndstat
としてみてください。
sndstat内のInstalled devicesの下にpcm0と出ればサウンドカードが認識されています。
# cat /dev/sndstat
FreeBSD Audio Driver(newpcm)
Installed devices:
pcm0: <Intel ICH4 (82801DB)>〜
次回以降の起動時にもサウンドカードを認識させたい場合は、/boot/loader.confにカーネルモジュールをロードするように記述するか、kernelを再構築する必要があります。
/boot/loader.confで設定する場合は
# vi /boot/loader.conf
snd_driver_load="YES"
snd_pcm_load="YES"
と記述してやります。
または、kernelのコンフィグファイルに
device pcm
と記述しkernel再構築します。
再起動すれば、kldloadコマンドを打たなくてもサウンドカードが有効になります。
上記で紹介した方法ですとFreeBSDがサポートしている全てのドライバーを読み込んでしまいます。
ただし必要なのは自分のPCのサウンドカードに対応しているものだけで良いので、自分のPCのサウンドカード(サウンドチップ)が分かっている場合は、そのサウンドドライバーだけを読み込むように/boot/loader.confを設定させることもできます。
全てのドライバーを読み込むとメモリを必要以上に食うため、出来ればこの方法をとった方が良いでしょう。
ただし、これは/boot/loader.confに記述してロードさせた方のみを対象としており、kernel再構築によって対応させた方は既にkernel自体に全てのドライバーが含まれていますので不可能です。
サウンド関連のドライバーの一覧は/boot/default/loader.confのSound Moduleセクションにあります。
snd_driver_loadが全てのドライバーを読み込む設定で、それ以外の項目が個別のドライバーのみを読み込む設定例です。
例えば、私の使っているLavieMはAnalog DevicesのAD1981というIntelのICH4のAC'97 codecを使用しているため、読み込むべきドライバーはIntel ICHのドライバーとなります。
よって、/boot/loader.confに
# vi /boot/loader.conf
snd_ich_load="YES"
snd_pcm_load="YES"
と、snd_driver_loadの代わりに記述してやれば良いわけです。
と言ってしまえば簡単のような気がしますが、実際サウンドチップの詳細を調べたりするのは結構難しいので手っ取り早い方法を紹介します。
まず最初に全てのドライバーをロードします。
# kldload snd_driver
全てのドライバーが読み込まれたことはkldstatコマンドで確認ができます。
ただし、kldstatコマンドはサウンド以外のカーネルモジュールも表示させてしまうので
# kldstat |grep snd
snd_driver.ko
snd_ad1816.ko
〜
としてサウンド関連のみ表示させます。
上記のように全てロードされていることがわかります。
次に/dev/sndstatを使用中にします。これによって現在使っている(PCのサウンドチップ)モジュールを使用中にします。
sndstatを開いていれば何でも良いのですが、今回はtailという「ファイルの最後を部分を表示させる」コマンドを使って使用中にします。
tailには-fオプションを付けるとファイルの最後に達しても終了せず、追加されるデータを待つようになります。
# tail -f /dev/sndstat
FreeBSD
FreeBSD Audio Driver(newpcm)
Installed devices:
pcm0: <Intel ICH4 (82801DB)>〜
と出たらCtrl+Zを押し、tailをバックグラウンドで動作させます。
するとコンソールに入力できるようになるので、
# kldunload snd_driver
として、ドライバーを全てアンロード(取り外し)します。
ただし、tailによって使用中のドライバーはアンロードされませんので組み込まれたままとなります。
# kldstat |grep snd
snd_ich.ko
となり、PCのサウンドチップは例ではsnd_ichを組み込めば良いことが分かります。
/boot/loader.confに記述するときには後ろに_loadを付けてやれば良いので、/boot/loader.confには
snd_ich_load="YES"
snd_pcm_load="YES"
と記述します。
また、tailが実行中ですので、
# jobs
[1] + 1234 Suspended tail -f /dev/sndstat
# fg 1
Ctrl+C
として終了させてください。
ESSのMaestro3系のサウンドチップ(ESS Maestor3i、ESS Allegro等)は、device pcmを追加したkernelにドライバーは含まれているのですが、ライセンスの問題で手動でロードしてやらなくてはいけません。
なので、Maestor3系のチップの方はたとえkernelのコンフィグファイルでdevice pcmが記述してあっても、/boot/loader.confに
snd_maestro3_load="YES"
としないと有効になりませんので注意してください。
ビープ音を有効にするには、/boot/loader.confに
speaker_load="YES"
とするか、kernelのコンフィグファイルに
device speaker
と記述してkernelを再構築してください。