agp.ko と acpi_video.koと /dev/agpgart の関係。

カーネルモジュールのお話。特に DELL 製 NotePC 系でのお話。xorg.conf のお話。なんか、いろんなことが絡んでいるなぁ・・。

xorg が 7.2 になったので合せて色々なものが動く様になったり動かない様になったり、目に付くようになった今日このごろ、僕の持っている DELL X1 の NotePC において /var/log/Xorg.0.log を眺めていると、 /dev/agpgart が無いゼイッって怒られている行が合った。

/dev/agpgart が無いとどうなるのかと言うと drm が動かないので mplayer がフル画面で表示してくれないとか 3D が遅いかもとか言った弊害が出てくる。まぁ、そんなに大した問題では無いのだけどね(^^;;。

では、どうして /dev/agpgart が出来ないのか? どうやらカーネルモジュールをロードする時に問題がありそうだ。acpi_video.ko を先にロードしてから agp.ko、drm.ko、i915.ko をロードすると /dev/agpgart が生えてこないみたい。

そして、acpi_video.ko をロードしないようにすると /dev/agpgart が無事に生えてくる。この辺り、pciconf -lv するとデバイスの認識状況が楽しかったりします;-)。

それにしても、/dev/agpgart が生えてこないんだったら acpi_video.ko をロードしなければいいじゃん。となるんだけど、これがまたねぇ・・。DELL X1 は中途半端に suspend/redume するもんだから acpi_video.ko をロードしておかないとディスプレーのリセットとかできなくなってします。

解り易いのは acpi_video.ko をロードした時としない時の sysctl -a | grep video の違いを見れば一目瞭然。

前者の場合、外部ディスプレー出力にも対応しているのに対して、後者の場合は video 周りの ACPI (と言うか sysctl の MIB) は何も無い状態。その状態で acpiconf -s3 なんざ叩いたらマシンがあっと言う間に凍りついてしまう。

mplayer をフル画面で見たいがため、もしくは Xorg.0.log からエラーメッセージを除去したいがために acpi_video.ko をロードしないのはあまりにもナンセンスだ・・。

と、言うか、agp.ko と acpi_video.ko で drm 辺りが競合してしまうのに問題があると言うか、なんちゅーか本中華・・。

デスクトップの i915 だったら無条件で acpi_video.ko をロードしないと言う選択枝が取れるんだけどねぇ。NotePC の場合は悩ましい。

さて、あなたはどっちを選択しますか!?

konqueror と nspluginwrapper。

/usr/ports/www/nspluginwrapper はすごいらしい。flash7 で音が出るらしいと風の噂で耳にした。と、言うことで試してみた。

この ports をインストールした後に nspluginwrapper -v -a -i とコマンドを実行すれば ~/.mozilla/plugins に プラグインが格納される。

firefox の場合は www/linuxpluginwrapper を利用すれば www/linux-flashplugin7 は動いていたんだけど、konqueror では flash6 のプラグインしか動かなかったのよねぇ。

なので、僕は古い ports から www/linux-flashplugin の 6 のバージョンを持ってきて firefox の場合は linux-flashplugin7 を利用するけど、konqueror の場合は linux-flashplugin6 を参照するように設定してた。

けど、www/nspluginwrapper を利用すると konqueror でも linux-flashplugin7 が使えるようになってちょっと感激;-)。

ちなみに www/nspluginwrapper を FreeBSD/amd64 上でインストールすると、 /usr/local/lib/nspluginwrapper/amd64/freebsd と言うディレクトリができるので、ん? 64bit 環境で動くのかぁ? と期待を寄せてしまう;-)。こっちはまだ試していないんだけどねぇ。

今日の夜にでも試してみよう;-)。

hw.acpi.video.out0.activeが消えてしまった。

僕はDELL Latitude X1を持っているんだけど、現在 FreeBSD は 6.2-STABLE を追いかけている。

ports は ports-current を追いかけているんだけど、 xorg が 7.2 になったからなのか、最新の STABLE で 変更が入ったからなのか、 sysctl から hw.acpi.video.out0.active が消えてしまった・・。

DELL X1 は 一応 S1 っぽい S3 の suspend/resume ができるのだけど、今までは以下のようにすれば、 resume からの復活でディスプレーのバックライトが点いていたんだけど、この sysctl のパラメータが無くなってしまった・・。

# sysctl -w hw.acpi.video.crt0.active=0
sysctl -w hw.acpi.video.out0.active=0
sysctl -w hw.acpi.video.out0.active=1

 
なので resume から目覚めてもバックライトが点灯しないので画面は真っ暗・・。あぁ・・。どうしよう。多分原因と言うか、手が入ったのは acpi_video.ko だと思うのだけどねぇ。しばらくは調査の日々が続きそうです・・。

まだ、原因が特定できていないし回避策も見つかってはいません・・。

あ、後、良い事も一つあって、レジューム後は CPU 速度が自動的に可変に動作するようになりました。今までは ntpd をリスタートしないと CPU 速度が固定だったのだけどねぇ。

DELL X1 の詳細については DELL Latitude X1(7-CURRENT) もご覧下さい。ちょっと古いんですけど・・。

xorg-7.2。

5/19 の cvsup からかな。X11 と言うか xorg が大きく変更された・・。僕は今日、cvsup したんだけどねぇ。ports は xorg-6.9 から xorg-7.2 にバージョンアップしたんだけど、/usr/X11R6 を使わなくなっているやないのっ!!

まじかよっ!! って感じなんだけど、まぁ、考えてみると、僕の UNIX 生活は X11R4 から始まっているわけで、/usr/X11R4 が最初だった気がする。そのあとバージョンがあがって長い間 /usr/X11R6 だったな。

でもって、xorg-7.2 からは /usr/local/ になりました。これも UNIX の歴史の一部なのかなぁ。

ports からインストールする人は /usr/ports/UPDATING に従ってバージョンを上げましょう;-)。

/usr/X11R6/bin や /usr/X11R6/lib の中がちょっとづつ無くなって行くサマはそれなりに悲しいものですが・・。

自宅サーバを最新 STABLE へ。

デスクトップと NotePC の FreeBSD は最新の 6.2-STABLE にしていたんだけど、サーバはなかなか最新にする勇気が無かった・・。

そー。sendmail 回りがガガガとバージョンアップしたからねぇ。メールの送受信に問題が発生すると困るのでなかなかその勇気がでなかった(^^;;。

ちなみにうちのサーバは sendmail+procmail で courier-imap を利用していて、更に majordomo が動いているので sendmail は結構真剣に作らなければならないのでした。

majordomo はバーチャルホストで複数のドメインを利用しているので以前に書いた local-host-names を利用しないようにするための sendmail.cf にしなければいけないしねぇ。

と、言うことでちゃんとバックアップして、恐る恐る最新の STABLE にして、ただちに sendmail.cf を作って一応事なきを得た。と言う感じ。

作業中、spam がガンガン届くんだけど、これって、MTA の設定に不備がないかの目安になってある意味役に立つかも;-)。spam が届かなくなったら sendmail.cf の設定が悪いんだって事だからねぇ・・。

ちゅーこってこれで自宅の全ての UNIX ベースの OS は sendmail-8.14.1 になったな;-)。

iPod と konqueror の関係。

iPod miniを持っている。自宅では MacOSX を利用しているのでカレンダーなどを同期している。

会社では iPod にバッテリーが無い時だけ FreeBSD に接続し充電だけしている。まぁ、iPod を HFS+ にしているとファイルシステムとしては認識しなくて全然利用できないので ISMS 的にはなんの問題もないのだど、 ISMS の審査員がそこまで知っているか?と言えば知らないと思うので明らかにアウトだな。

で、話は konqueror との相性です。以前に KDE と hald の関係について書いたけど、hald がちょっと頑張りすぎる傾向にあるみたい。

FAT32 にした iPod を KDE が動作している FreeBSD に接続すると、mount しようとして hald が頑張るんだけど konqueror はそれをうまく認識できなくて、一人でブクブク太っていってしまう。気がついたら konqueror がメモリを食いつぶしていた。なんてことが多々あるわけですよ。

何回かに一回位は hald が拾ってくれる時があるんだけどねぇ。

後、iPod をつなげた瞬間に X が固まることもあったりするし、iPod をつなげたままリブートすると再起動中に途中で止まったりするし・・。

しかし、これらの現象、iPod を USB から引っこ抜くと全てちゃんと動き出す。iPod 恐るべし;-)。

ちなみに僕の持っている iPod は黄緑色の mini です。

リコー imagio PM C4500SP。

FreeBSD で印刷。これは永遠のテーマですね。gs ドライバがヘボいと、たとえ cupsd 経由で印刷したとしても日本語が文字化けするしで使い物にならないことが多い。

そんな状態で、リコー imagio PM C4500SP を FreeBSD から利用する機会があった。PM C450SP では lpr が動作していて、FreeBSD においては ipp プロトコルで通信し、利用するためには IP アドレスとキュー名を FreeBSD 側で指定する必要がある。

ちなみに、このプリンター、OS は NetBSD と言うウワサあり。IPv6 で ipp プロトコルの通信ができるプリンターらしい;-)。

僕は、KDE3 を利用しているのだけど、KDE3 にはメニューに [設定]->[プリンタ] と言うのがあって、プリンタの設定があっと言う間に行える。

プリンタの設定ウィサードを起動する前に cupsd_enable=”YES” として cupd を起動し、ウィザードの下のほうにある [現在の印刷システム] を CUPS にすればええだけ。後はプリンターを登録するだけ。かんたーーん;-)。

で、ちゃんとした PS プリンターであれば簡単に動くんだけどねぇ、gs 経由で印刷する時は日本語が表示できなくてイヤになる時が多々ある。この辺りになるとプリンタの性能がモノを言うかな・・。

後、CUPS 経由で印刷する場合、ベンダが提供している MacOSX のドライバが役に立つときがある。Linux 版が無い場合は MacOSX 用のドライバを利用してみましょう;-)。

ただし、FreeBSD でどうやって dmg アーカイブを溶かすんだ?って話はあるんだけどね(^^;;。

SD Bus Host Adapter。

最近の NotePC には SD スロットが付いている。しかし、FreeBSD ではドライバが無くて、none なデバイスである・・。pciconf -lv すると以下のような感じ。

none2@pci2:1:2: class=0x080501 card=0x01a31028 chip=0x08221180 rev=0x17 hdr=0x00
device     = 'SD Bus Host Adapter'
class      = base peripheral

 
しかし、世の中にはすごい人がいるものですねぇ。FreeBSD 用のドライバを書いてくれた人がいます。

http://lists.freebsd.org/pipermail/freebsd-drivers/2006-September/000243.html
http://www.sashi.de/en/freebsd/sdhci/index.html

早速ダウンロードして試してみました。make して kldload sdhci.ko しておしまい。再度、pciconf -lv してみると以下のような感じ。おーーー。

sdhci0@pci2:1:2:        class=0x080501 card=0x01a31028 chip=0x08221180 rev=0x17 hdr=0x00
vendor     = 'Ricoh Co Ltd'
device     = 'SD Bus Host Adapter'
class      = base peripheral

 
しかし、messages にはログがガンガン吐かれている。あぁ。と、言うことで常時 kldload しているわけには行かないみたい。必要な時に kldload するようにするか・・。あ、ちなみにデバイスと認識させただけで、実際にデータ転送とかしたことないですよ。僕;-)。ヒトバシラーな方、頑張ってください。

僕が思うに、devd もしくは hald と連携して、SD カードが挿入された時点で kldload するようにしたらええんかな? あ、けど、SD カード挿入前には /dev/sdhci0 が生えてなければならないので、ちょっち無理かなぁ・・。

KDE3 と hald。

最近の KDE3、大体 3.3.5 辺りですかねぇ。インストールが終わると以下の設定を rc.conf 辺りに書くと幸せになれるよ。みたいなのが表示される。

dbus_enable="YES"
polkitd_enable="YES"
hald_enable="YES"

 
で、これらを実際に書いて、それぞれのデーモンが起動すると、KDE3 は CD-ROM が突っ込まれたのを検知して、WindowsXP のように以下のウィンドを表示してくれる。

konqueror3.png

なんか、すげーぞ。amd 必要ないじゃんみたいな感じ。konqueror では system:/media/ でいろいろなメディアを見る事ができる。

実際に ps -ax してみると hald が CD の動作を監視している感じ、dbus とか hald って ドキュメントが少ないんだけど、FreeBSD な話では devd 辺りと連携して、今後はもっといろいろなデバイスを認識してくれるようになるみたい。

KDE3 使っている人は是非、上記三つを YES にしてみてください;-)。

qt-3.3.8 世代の konsole のフォントの指定方法。

前回、ブログで qt-3.3.8 では QT のフォントの扱いが随分変わりました。と書きました。 QT のフォントパッチが適用できなくなったのでどうしようか悩んでいたのですが、この際、パッチを更新する作業は止めようかと思っています。

FreeBSD を使っている方は、/etc/make.conf で KDE_PATCHES=”yes” と指定してください。そうすると、xxxx-qt-font-default-subst.patch が適用され、フォント名は日本語で表示されるようになるはずです。

で、ここまではいいんだけど、konsole では自分の好きな等幅フォントが使えなくなり非常に困ってしまいます。

以上が前回に書いた内容でした。では、konsole で任意の等幅フォントを使えるようにするにはどうしたらよいか?実は一個だけ方法が残っていたんですねぇ;-)。

~/.kde/share/config/konsolerc の以下の行を任意のフォント名にしてしまえばいいんですねぇ;-)。

    :
defaultfont=MS ゴシック,12,-1,5,50,0,0,0,0,0
    :

 
フォント名である「MS ゴシック」はどこから持ってくるかと言うと、konqueror の設定ウィンドの「フォント」に表示されている日本語のフォント名をそのまま記述すれば大丈夫でしょう。「フォント」の等幅フォントの一覧に表示されているフォントであれば konsole で利用できるので使えるフォントの数は格段に多くなります;-)。

ちなみに、KDE-3.5.6 をインストール直後の状態で default の konsolerc がどこにあるのかという点についてですが、探してみましたが見当たりませんでした(^^;;。なので、システム標準として「さざなみゴシック」を利用するとか言う設定を埋め込むのは難しそうです。

Vine Linux の皆さん。どうも済みません・・。

と、言うことでこれにて完全に qt のフォントパッチの更新については終了と言うことになりそうです。今まで利用してくださった皆さん。有り難うございました。