i810 シリーズはインテルの新しい統合型チップセット(ビデオ、サウンドの機能が組み込まれたチップセット)で、ビデオカードやサウンドカードを別途用意する必要がないため、安価なベアボーンマシンやエントリレベルのマシンでよく使われています。
Plamo Linux 2.0 から i810 のビデオ機能やサウンド機能を使うには、多少の設定が必要なので、この文書ではそれらの設定について解説します。
この lilo.confの中に lba32 という見慣れないオプションがあることに気づいた人がいるかも知れません。このオプションは lilo-21.4 以降でサポートされた over8G パーティションをアクセスするために拡張 BIOS コールを利用するための指定です。このあたりについては3/31のLinux Seminarで使った資料が参考になると思います。
XFree86 3.3.6 では XF86_SVGA のサーバが i810 をサポートしています。ただし、XFree86.org から配布されているバイナリでは i810 の機能は組み込まれていないため、手元でサーバを再構築するかPlamo 2.0 に付属のバイナリ を使う必要があります。また、XF86Setup や xf86config には i810 の設定は用意されていないので手動で設定する必要があります。手元で動いている XF86Config の例をこちらに用意しましたので参考にしてください。
上述のように i810 は主メモリの一部をビデオメモリとして利用するため、XF86_SVGA もメインメモリにアクセスする必要があります。そのための機能は agpgart.o というモジュールと /dev/agpgart というデバイスファイルで実現されています。
XFree86 を設定する前に、まず、このモジュールとデバイスファイルが存在するかどうかを確認してください。
kojima@i810# ls -l /dev/agpgart crw-r--r-- 1 root root 10, 175 Apr 30 22:03 /dev/agpgart kojima@i810# ls -l /lib/modules/2.2.14/misc/agpgart.o -rw-r--r-- 1 root root 8288 May 1 11:25 /lib/modules/2.2.14/misc/agpgart.o
/dev/agpgart が無い場合、mknod コマンドで作成してくださ。
# mknod /dev/agpgart c 10 175
agpgart.o モジュールは Intel の Web ページから入手できますし、こちらにもソースファイルを置いておきます。
agpgart.o モジュールは手動で組み込めば以下のようなメッセージが表示され ます。
# modprobe agpgart Linux AGP GART interface v0.03 (c) Jeff Hartmann -- Experimental distribution, only i810 enabled Got pages for a 64 megabyte mapping for the agp aperatur # lsmod Module Size Used by agpgart 4180 1
あるいは、/etc/modules.conf に以下のように設定しておき、X の起動時に自 動的に組み込むことも可能です。
/etc/modules.conf を修正すれば demod -a で依存関係を更新することをお忘 れなく。
# Device configured by xf86config: Section "Device" Identifier "i810 EndSection
ALSA のドライバはhttp://www.alsa-project.org から入手できます。手元では alsa-{driver,lib,utils}-0.5.7 というバージョンを利用しています。ALSA に含まれているドライバのうち、i810 のサウンド機能用のドライバは snd-card-intel8x0.o です。
ALSA のドライバ類は GNU autoconf で自動的に Makefile が作成されますので、ソースコードを展開したディレクトリで
# configure # make # make install
次に ALSA 用のデバイスファイルを alsa-drivers パッケージに含まれている snddevices スクリプトを使って作成します。
ALSA ドライバはそれぞれの機能がモジュール化されているため、/etc/modules.conf には以下のように設定をします。
# ALSA portion alias char-major-116 snd # OSS/Free portion alias char-major-14 soundcore # ALSA portion alias snd-card-0 snd-card-intel8x0 alias snd-card-0 snd-card-intel8x0 post-install snd-card-intel8x0 alsactl restore # OSS/Free portion alias sound-slot-0 snd-card-0 # OSS/Free portion - card #1 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
この設定で、ALSA のデバイス(char-major-116)を使うプログラム(例えば alsamixer)を使う際には必要なドライバが自動的にインストールされますが、OSS/Free のデバイス(char-major-14)を使うプログラム(例えば xmms)を使う際には ALSA のドライバは自動的にはインストールされません。そのため、snd-pcm-oss.o ドライバを起動時に組み込んでしまうのがいいでしょう。そのためには、例えば /etc/rc.d/rc.modules に
/etc/modules.conf の中だけでやる方がスマートだと思いますが、手元ではうまく実現できませんでした。いい方法法があれば教えてください。
alsamixer コマンドを使えば対話的に入出力のレベルを設定することが可能ですが、ALSA のドライバをインストールするたびに手動で設定するのも大変なので、alsactl プログラムが用意されています。
alsactl には save と restore というコマンドが用意されており、save を指定すればその時点での設定をファイル(デフォルトでは /etc/asound.conf)に書き出し、restore を指定すればファイルを読み込んで設定を行います。すなわち、一度 alsamixer で入出力レベルを適切な状態に設定しておき、その状態を alsactl save で保存しておけば、次からは alsactl restore でその状態を回復できるわけです。
上記 /etc/modules.conf の中で指定している
alias snd-card-0 snd-card-intel8x0 post-install snd-card-intel8x0 alsactl restore
なお、この指定が有効になるためには /etc/asound.conf を用意しておく必要があるため、一度手動で alsamixer を実行し、適切な入出力レベルに設定した上で alsactl save を実行しておいてください。手元で使っている /etc/asound.conf の例をこちらに置いておきます。