12月 252009
 

以前は cvsup(net/cvsup-without-gui) を利用していたのだけど、最近は csup(1) を利用して ports とか STABLE の最新のソースを持ってくるようになった。

csup(1) は IPv6 に対応しているのだけど、 cvsupd(net/cvsup-mirror) が IPv6 に対応していないくて、IPv4 でしか応えてくれないので、csup の一発目は必ずエラーになる。

あ。僕は自宅のサーバに cvsupd を起動しているので cvsup3.jp.freebsd.org とかから定期的に持ってきているので、自宅の FreeBSD は自宅で起動している cvsupd なサーバから持ってきています。cvsup.icmpv6.org がそれになるわけですけども;-)。

で、自宅のネットワークには IPv6 があってウェブとかメールサーバは IPv6 に対応しているのに cvsupd が IPv6 に対応していないのは非常に悲しいので、今回 cvsupd を IPv6 に対応させてみたいと思います。ただ、net/cvsup-mirror のソースコードを改変して IPv6 対応するのは非常に大変なので、今回はネットワーク的に IPv6 への到達性を確保します。IPv6->IPv4 トランスレータ機能を利用します。お題目は以下です;-)。

faith0 インターフェースと faithd を利用して cvsupd を IPv6 対応にしてみましょう。

まぁ、まずは何はなくとも man faithd と叩いてみましょう。そこから始まりますが、man を読んで解った事は、アドレスプレフィックス部分の /96 と IPv4 アドレス部分の /32 に分かれていて、IPv4 部分で IPv4 サーバを特定してそこにパケットを投げますよ。みたいな感じです。

では早速設定を見ていきましょう。今回のネットワーク構成はこんな感じにしてみました。

ipv6_faith.png

以下にちょっと箇条書きにしてみます。

  • 今回ターゲットとなる cvsupd は IPv4/IPv6 のデュアルスタックなサーバ上で動作します。
  • IPv4 ルータは PPPoE などでグローバルあドレスが付きますがサーバは NAT されています。ポート 5999 は cvsupd サーバにポートフォワードされています。
  • IPv6 ルータは外部のグローバル IPv6 ネットワークに接続しています。
  • cvsupd へは rtadvd により IPv6 のグローバルアドレスを払い出しています。
  • IPv4 は 192.168.0/24 です。
  • IPv6 は 2001:200:161:1400::/64 です。
  • トランスレータ用のプレフィックスは 2001:200:161:1400:5999::/96 です。

さてと。これだけでほぼ準備が整いました;-)。

まず、cvsupd サーバでの設定ですが、 faith0 インターフェースに飲み込まれる IPv6 プレフィックスを route(8) で設定します。その後、faithd を起動して特定のポートを faith0 に飲み込むようにします。

起動スクリプトは以下になります。rcNG ではなくて申しわけないですが(^^;;。

#!/bin/sh
#
# faithd start
#
HOME=/
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin/:/usr/local/bin
export HOME PATH
faith_ipv6='2001:200:161:1400:5999::' faith_ipv6_prefix='96'
case $1 in 'start' ) if [ -f /usr/sbin/faithd ]; then sysctl -w net.inet6.ip6.accept_rtadv=0 sysctl -w net.inet6.ip6.forwarding=1 sysctl -w net.inet6.ip6.keepfaith=1 ifconfig faith0 create ifconfig faith0 up route add -inet6 $faith_ipv6 -prefixlen $faith_ipv6_prefix ::1 route change -inet6 $faith_ipv6 -prefixlen $faith_ipv6_prefix -ifp faith0
/usr/sbin/faithd 5999 fi echo 'faithd 5999 Start.' ;; 'stop' ) killall faithd
route delete -inet6 $faith_ipv6 -prefixlen $faith_ipv6_prefix sysctl -w net.inet6.ip6.accept_rtadv=0 sysctl -w net.inet6.ip6.forwarding=0 sysctl -w net.inet6.ip6.keepfaith=0
ifconfig faith0 down ifconfig faith0 destroy
echo 'faithd Stop.' ;; 'restart' ) /usr/local/etc/rc.d/faithd stop /usr/local/etc/rc.d/faithd start ;; * ) echo "usage : faithd {start|stop|restart}" ;; esac

 
まず最初に sysctl で必要な mib のステータスを変更します。 ifconfig faith0 up した後に route add してから route change します。この時、プレフィックスは /96 です。残りの /32 は IPv4 アドレスになります。

今回の cvsupd サーバは 192.168.1.2 が付いているので、それを IPv6 に直すと以下になります。

2001:200:161:1400:5999::c0a8:102

この IPv6 アドレスを DNS に登録します。すると、csup コマンドを叩いた時に supfile の *default host 行に FQDN を書けば IPv6 でアクセスが可能になります。

と、思いきや・・。外部の FreeBSD からだとアクセスできないですね。 IPv6 ルータは 2001:200:161:1400::/64 ではルーテイングが設定してあるのですが、2001:200:161:1400:5999::/96 のルーティングができていないので IPv6 ルータに対して route add コマンドで 2001:200:161:1400:5999::/96 を cvsupd が起動しているサーバのリンクローカルアドレスに向けて上げます。

# route add -net -inet6 2001:200:161:1400:5999:: -prefixlen 96 fe80::2ae:90ff:fe11:a85%bge0

 
これで設定は全て完了です。外部の IPv6 機器から接続できるか確認してみましょう。

トラブルシューティングですが、まず、cvsupd サーバのローカルホストから telnet cvsup.icmpv6.org 5999 などと FQDN で指定し cvsupd に接続できるか確認してみましょう。

そこで問題があれば、指定したプレフィックスが /96 になっているか、IPv4->IPv6 の変換時の IP アドレスや DNS の設定、faithd 、sysctl mib などを見直してみましょう。

外部から接続ができない場合、DNS のアドレスの設定の確認と、IPv6 ルータでの /96 のルーティングの設定を確認しょう。

今回は faith0 と faithd の設定を見てきましたが、これらは tcp しか通過できません。 udp には対応していないんですね。そもそも faithd は KAME のリファレンスコードなので「tcp は実装するけど、他のプロトコルは自分で書いてね。」的要素が強いのかな?などと、僕個人的には思っています。

tcp しか通らないので、当然 ping や traceroute も通りません。tcping は IPv4 にしか対応していないし・・。とわいえ、ume さん が tcping の IPv6 対応パッチを書いてくださったのでそれを適用した tcping を利用すると良いかと思われます。以下の URL にパッチを転がしておきます;-)。ports の net/tcping で利用してください。

http://icmpv6.org/Prog/FreeBSD_ports/tcping-ipv6.diff

さてと。これで cvsupd サーバは IPv6 Ready になりました。このサーバ上で IPv4 にしか対応していない色々なデーモンを起動すればなんでも IPv6 Ready になります。では、IPv4 にしか対応していないデーモンは一体何が?とハタと考えた場合、古いソースコード(バージョン)で運用しているデーモンとか位しか思い浮かばなかったのですが、DSS(net/DarwinStreamingServer) なんかは IPv4 にしか対応してないので、こう言ったものを IPv6 Ready にすることが可能です。その場合、必要なポートを指定して faithd を起動する必要があります。DSS であれば以下のように感じでしょうか。上記のスクリプトに加筆します。

/usr/sbin/faithd 554
/usr/sbin/faithd 5000
/usr/sbin/faithd 5100

などなど、必要そうなポートにたいして faithd を起動するとそのポートに来たパケットは faith0 に突っ込んでくれるようになります;-)。

で、ここでまた、ハタと考えた・・。Apple 謹製の QiuckTime Player は IPv6 に対応しているのかぁ? あぁ。multimedia/mplayer で試せば良いかぁ。みたいな(^^;;。

大体こんな感じで faith0 と faithd を使えば比較的楽に楽しく利用できるかなぁ。と思った次第です。本来であれば IPv6->IPv4 トランスレータとして、dns/totd と組み合わせて使う大掛かりなルータってイメージがあるんだけど、ローカルホストのために利用する faith0 と faithd というのもまたアリかなぁ。と言う感じがあるのであります;-)。

12月 202009
 

遅まきながら、我が家にも Windows7 がやってきました。PC で地デジが見たいよー。と思っても WindowsXP x64 では不可能なので、Windows7 の x64 にしてみた。と言うのが実情ですが。でもって、今回は、まず NotePC にインストールしてみました。 DELL の X1 と言うもうずいぶんと古い PC です。

CPU は PentiumM の 900MHz なので、Starter にしようか Professional にしようか悩んだのですが、ちょっと Professional で様子を見てみようと言うことにしました。なのでアクティベーションはなし。重かったら Starter に変更かなぁ。と言う感じです。あぁ。PentiumM は x86 Only です;-)。

で、インストールですが、今まで WindowsXP が入っていたパーティション(FAT32)をぶっつぶして NTFS で Windows7 をインストールしますが、いとも簡単に終わり、その段階では画面のドライバ(i915だと思うんだけどねぇ)が見あたらなかったのだけど、 update したら画面のドライバがインストールされた。後はサウンドチップ(FreeBSD 的に言うと SigmaTel STAC9752/53 AC97 Codec)のドライバだけど、これは DELL のサイトから Windows Vista 32bit ドライバを持ってきたら動作したので全然問題はありませんでした。

まぁ、Windows はどうせ検証のためだけ(の予定)でインストールしたのでここまで。この後 FreeBSD をブートしようとするんだけど、これがまた大変だったのでありました・・。

google などで検索すると、色々なサイトで bcdedit で情報書き込んでブートしようねぇ。と書かれているのですが Windows Vista 版のがほとんどなのねぇ。僕の Windows7 では以下のように打たないと FreeBSD は起動しませんでした。

c:¥ bcdedit /create /d "FreeBSD/i386" /application  bootsector
c:¥ bcdedit /set {ID} device partition=c:
c:¥ bcdedit /set {ID} path ¥freebsd.pbr
c:¥ bcdedit /displayorder {ID} /addfirst

 
{ID} ってのは /create したときに表示されるやつを指定します。

後、Windows Vista の bcdedit の場合って device boot って指定しようね。って、検索すると色々なサイトで書かれているのだけど Windows7 の場合、これではダメで、ブートセレクトで FreeBSD を選択した後に 0xc000000f なエラーコードで FreeBSD が起動してくれなかったりする。Windows7 の bcdedit では device partition=c: と指定するのが正しいみたいです。

bcdedit をオプションなしで実行すると起動設定が見えるので、Windows のブート情報と一緒にしてあげれば良いかなー。

ちなみに freebsd.pbr は /boot/boot1 を持ってくるんだけど、これまた当たり前で FreeBSD/i386 や FreeBSD/amd64 のどっちから持ってきても大丈夫です。md5 のチェックサムはどっちも一緒でした。手元に FreeBSD/i386 しかなくて、起動したいのは FreeBSD/amd64 ってときでも FreeBSD/i368 から /boot/boot1 を持ってきて c:¥freebsd.pbr にリネームして置けば大丈夫です。

で、FreeBSD はブートするんだけど、考えてみると Windows7 てパーティション二つ利用するのでブートメニューから FreeBSD が起動すると /etc/fstab の情報が一個ずれてしまうので Windows7 をインストールする前に FreeBSD の /etc/fstab は編集しておいたほうがラクチンかも;-)。まぁ、ufs:ad0s3a とかしてブートしてから /etc/fstab を直しても良いとは思うけど;-)。

今までは /dev/ad0s1 が Windows で /dev/ad0s2a が FreeBSD だった場合、 Windows7 をインストールした後は /dev/ad0s3a が FreeBSD の root になります。

とまぁ、今回は一番はまったのが bcdedit かなぁ。 これが一番時間がかかった・・。ふぅ。

と、言うことで NotePC での検証環境ができたので明日はメインで利用しているデスクトップに Windows7 の検証環境でも作るかなぁ。

12月 152009
 

ちょっと前に正式にリリースされた Thunderbird-3.0 ですが、今日 ports を csup したら登場したみたいなので早速利用してみました。

Thunderbird-2.0 と微妙に違うのですが、メールボツクスの並び方が MacOSX の Mail.App みたいに、受信ボックスごととか、ゴミ箱ごとに並ぶようになったのでそれはそれで嬉しいなぁ。と思い、WindowsXP と会社の FreeBSD/i386 7.2-STABLE、後自宅の FreeBSD/i386 7.2-STABLE と FreeBSD/amd64 7.2-STABLE にインストールしました。

僕の使い方としては、Thunderbird を imap4 で利用して spam フィルタとして利用した後、emacs+mew で POP して来ると言う感じなたんだけどねぇ。けど、その横では MacOSX の Mail.App からやはり imap4 でアクセスする。と言う結構複雑な状況;-)。

さて。Thunderbird-3.0 ですが FreeBSD/i386 ではちゃんと動くんだけど FreeBSD/amd64 ではcore dump して動作しない。よくよく調べてみると Firefox35 も Flash があるとやはり core dump して動作しない。

flashplugin 周りの ports を入れたり消したり devel にたりしたけど、やはり core dump する・・。

後、驚いたのが Thunderbird-3.0 は Firefox のプラグインも参照するのね。考えてみると /usr/local/lib/npapi/linux-flashplugin なんてディレクトリはないさー。/usr/local/lib/npapi/linux-f8-flashplugin ならあるんだけどね。大丈夫なのか・・。環境をもう一度見直す必要があるのかな?

で、結局 plugin 周りをいじったのだけど、だめだった。相変わらず core dump の嵐。ゲームセンター嵐。なんのこっちゃ;-P。

Thunderbird とか Firefox には -g と言うgdb 経由の起動オプシンがあるのですが、それで確認してみると以下のメッセージが・・。

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x806b020b0 (LWP 100220)]
0x000000080358df8b in pango_ot_tag_from_script () from /usr/local/lib/libpangoft2-1.0.so.0
(gdb)

 
ふむー。pango 辺りで起きているのね・・。インストールされているバージョンは pango-1.26.1 。これを再インストールしたけど、治らない・・。

で、google で探してみたら以下の URL を発見・・。orz

http://forums.freebsd.org/showthread.php?t=8859

よくよく読んでみると pango を 1.24.5 にすれば動作するらしい。かなしぃなぁ・・。

僕は gnome ではなく KDE4 を利用しているので pango を入れ替えた時のダメージが大きいのでどうしようか悩み中。あ、どんなダメージがあるのか想像ついてないです。もしかしたら全然大丈夫なのかもしれませんけど。

FreeBSD/amd64 は自宅で利用しているデスクトップ機でメモリ 8GByte 積んだマシンなのよ。最近は Mac でメール見たりするので無理して Thunderbird と Firefox 使わなくても良いかなぁ・・。KDE4 には konqueror があるしなぁ・・。

それにしてもまいった。pango のバージョン落とすか、もう少し待って Thunderbird と Firefox が対応してくれるのを待つかですね。

12月 122009
 

8.0-RELEASE がリリースされたみたいなので、自宅の PC にインストールしてみました。色々新しいデバイスドライバが使えるみたい。ってのもあるんですけどね.

最近は MacOSX をメインで使うようになって本当に FreeBSD へのモチベーションは下がりつつあるのですが、けど、おっかけないと・・。感があるわけです。

とはいいつつ、普段利用しているデスクトップとかサーバにはまだまだインストールする勇気が無いので、今は「キッチンのパソコン」と利用している EeePC にインストールしてみました。以前にもこのブログに書いているのですが、久しぶりに引っ張り出してみました;-)。

で、EeePC に USB 経由で 2.5 インチ HDD をつけて、その HDD には 7.2-STABLE が入っているわけだけど、これを cvsup で 8.0-STABLE にしたわけです。

自分でカーネル config を作成して、make installkernel して、さてと 8.0-STABLE ブートだ。と思ったら・・。あんれまぁ。USB に接続した HDD からはブートしませんでした・・。

手元に 8.0-STABLE が動作している PC が他に無いのでなんとも言えないのですが、カーネルのブート時に USB デバイスを一切認識してくれない状態。カーネルロードモジュールでは usb.ko とか umass.ko をロードしているのだけど、ブート時には USB デバイスとかチップを一切認識しないので、USB に接続した 2.5 インチ HDD、/dev/da0s1a になるわけですが、これが見えない。

なので、vfs.root.mountfrom 以前の問題だぁ・・。

http://www.mail-archive.com/freebsd-stable@freebsd.org/msg105670.html

この辺りのスレッドを見ると USB 機器からブートしないぜい。ってのがあるんだけど、これ、僕の現象とはちょっと違うよなぁ・・。

どうして USB デバイスが一切認識されないのだろう・・。まだまだ格闘は続くのであります;-)。

8月 112009
 

FreeBSD の ports-current を csup したら KDE4 が 4.3.0 になりましたなぁ。後、QT4 が 4.5.2 に。

実際に使用してみた感じを書いてみたいと思います。

まず、ports からのインストールですが、portupgrade したときに phonon 回りでバタバタするので /usr/ports/UPDATING を参考にして問題点をクリアにする所からはじめましょう。

そして、実際に qt4 と kde4 の make とインストールが始まります。まず、qmake ですが、これは qt4 と kde4 を make するときに利用されます。でもってこれは SMP に対応しているので qt4 や kde4 を make する時に c++ が CPU の数だけ起動します。これはすごい。KDE4 フルパッケージの make 時間は make buildworld より遙かに長かったのですが、随分と時間短縮できます。

例えば AthlonX2 では c++ が二つ、Atom330 では c++ が四つ起動して make を並列に行います。すばらしいですね。

無事にインストールが終わって、実際の使用感なのですが・・。

1. 等幅フォントが・・。
等幅フォントが結構ヒサンです。半角バイトの文字は全角バイトのスペースに表示されるので、”t a k a c h a n ” と言う感じで表示されてしまいます。
konsole で任意のフォントを利用したい場合には $HOME/.kde4/share/apps/konsole/ の下にできるプロファイルに以下のように記述してみましょう。

[Appearance]
ColorScheme=BlackOnLightYellow
Font=MS ゴシック,10,-1,5,50,0,0,0,0,0
以下略

 
フォント名を直接書いてしまう。と言うことですね。これで好きなフォントが利用できるようになります。

2. konsole でもう一点。
例えば K メニューやパネル上のショートカットから konsole を起動した場合、もとのプロセスの子プロセス(と、言うかスレッド)として起動します。これは後で書く「入力のコピー」などで結構ウザかったり、親プロセスが落ちると全ての子プロセス(と、言うかスレッド)が凍り付くと言う結構ヒサンな状態になります。僕はこれを避けるために以下のシェルスクリプトを用意しました。

#!/bin/sh
cp $HOME/.konsolerc $HOME/.kde4/share/config/konsolerc
/usr/local/kde4/bin/konsole

 
KDE4 の konsole は起動すると前回のサイズで起動してまう。それがイヤなので、毎回 80×24 のサイズで起動するように $HOME/.konsolerc を作成します。これは $HOME/.kde4/share/config/konsolerc を $HOME に .konsolerc としてコピーしただけです。その後で konsole をフルパスで実行すると新規のプロセスとして起動してくれるようになります。

3. konsole で二点目。
konsole を起動してタブを利用するとそのタブは親 konsole の子プロセス(何回も書きますがスレッドですね)として動作します。例えば一台のサーバに対して三個の端末をログインしたいとき、おのおのの端末で入力せずとも一個の端末で入力した内容、例えばユーザ名・パスワードを他の端末で入力したように見せかけることが可能です。[編集]->[入力をコピー]でキーボード入力の情報を他の konsole に送ることができます。ただ、konsole のタブ名は結構ヘボなので、どの konsole がどれなのかちっとも解らないんですね。

そんな時は上記のスクリプトを実行して、あるサーバにログインする端末は一個のプロセスとして起動し、タブを複数生成した後に「入力をコピー」の編集画面で [全てを選択]とか[すべて選択解除]ボタンを押せば OK です。

後、kde-4.2.4 の頃の konsole では C-s がフロー制御に取られてしまう。と言う事態が発生していました。[設定]->[現在のプロファイルを編集]で表示される画面の「詳細」タブの「Ctrl+S と Qtrl+Q によるフロー制御を有効にする」のチェックが外せなかったんですね。

しかし、kde-4.3.0 ではこのチェックが外せるようになりました。嬉しいですねぇ。ただ、僕の場合、以下のようにしないと外すことができませんでした。

% cd $HOME/.kde4/share/apps
% mv konsole konsole_

 
つまり、以前のバージョンで利用していた konsole の設定を一旦飛ばして、新たに設定しなおせばチェックを外すことができるようになるんですね。

4. マウスによるカットアンドペースト
これがまたヒサンなんです・・。ふつう、X 上では他のウィンドからクリックして保存した情報は他のウィンドにペーストできるはずなんですが、こいつがまともに動かない・・。非常に頭に来ると言うか、愕然としましたね。「全然使えねー・・。orz」って感じで。

で、色々やってみた所、パネルのシステムトレイにクリップボードツール(/usr/local/kde4/bin/klipper) が動作していて、こいつが悪さをしているようです。このプロセスを kill するとともにログイン時に起動しないようにすると ウィンド間のマウスによるカットアンドペーストが可能になります。ふぅ。良かったよぉ。

5. konqueror には konq-plugins。
konqueror を使う人はぜひとも /usr/ports/misc/konq-plugins をインストールすることをおすすめします。検索バーとか増えるし、「ウェブペー時を翻訳」なんてボタンも表示することができるようになります。他にもツールバーが色々表示できるようになります。

6. 安定したかもしんない。
以前のバージョンよりは安定して来ている感は強いです。パネルの設定で plasma が落ちなくなったし、(使いたいもの無いけど)ウィジェットの登録時に落ちるようなことは無くなったし。

一番使うのは結局のところ konsole が多いのでネタ的には konsole が多くなってしまいますかねぇ。まぁ、裏を返せば、他のアプリケーションなどは既に完成の域に達していたと言うことでしょうか。

実は僕は kde-4.2.4 を利用していた頃は KDE3 の konsole と skim をインストールしたままとしていました。 KDE4 の konsole が不安定な場合には KDE3 の konsole を利用する。と言う感じです。

また、KDE4 で scim-bridge-qt4 を利用していると、konsole がキー入力を受け付けない状態になる場合があり、それを回避するために skim を利用していました。ちなみに scim-bridge-qt4 でキー入力を受けつなくなるのは konsole の [設定]->[プロファイルを変更]した場合です。僕の場合 EUC-JP と UTF-8 のプロファイルを作っていました。ショートカットでプロファイルをタブに起動した時は問題無かったですが。これは KDE な ML で聞いた所、scim-1.4.7 に問題があるそうです。文字入力できなくなった場合は scim の全てを kill すると文字入力が復活します。

とまぁ、今回のバージョンアップですっかりと KDE3 関係を全て消して、KDE4 の環境に移行できたと言う感じでしょうか。

他にも何か気がついたことがあったら書いていきたいと思います。

7月 232009
 

まさか三回目を書くとは思いもしませんでした・・。apache ベースで作成したキャッシュ用 Proxy サーバですが、設定に問題があり無事に動作していたのは約一ヶ月半ほど・・。あまりにも情けないので、ちょっと書いておくことにします。

今回は第一回目のネタを参照する 必要があります。第二回目の掲載はこちら

さて、二回目にまとめたことで apache の Proxy サーバは mod_cache を利用してディスク上にキャッシュして行くことができたのだけど、運用してしばらくしたら error.log に以下のメッセージが出力されるようになってきた。しかも大量に・・。orz (長いので改行しています)

[warn] (2)No such file or directory: disk_cache:
rename tempfile to hdrsfile failed:
/data/httpd/cache/aptmp6ac9NS -> /data/httpd/cache/ASm@m/8xF@v/7XxKH/X8yCPfQ.header

 
よくよく調べてみると、サブディレクトリがもう作れない状態になっているらしい。なので、これ以上はディクス上にデータをキャッシュをできない状態になっている。と言うメッセージが延々と error.log に出力されている状態。

/data/httpd/cache の下にディレクトリが 32,000 個できている。と言う状態なんですねー。Linux では一つのディレクトリの下には 32,000 個しかディレクトリが作れないそうです。 /usr/include/linux/ext3_fs.h の以下の行がまさしくそれ。

#define EXT3_LINK_MAX           32000

 
でもって 32,000 個のサブディレクトリのあるディレクトリで mkdir すると Too many links. mkdir: cannot create directorys と言われて怒られる。うひー。

と、言うことで、僕はこの上限 32,000 と言う値を知らなかったのでありました。

愕然としつつ httpd.conf の設定を見直します。第一回目に書いた設定では以下のように記述していました。抜粋です。

<IfModule mod_disk_cache.c>
:
    CacheDirLevels      3
    CacheDirLength      5
</IfModule>

 
ディレクトリの深さは三階層、ディレクトリの文字列は五文字。この「五文字」と言うのは簡単に 32,000 を超えてしまうのですね。

ディレクトリにランダムに利用される文字は A-Z,a-z,0-9 と一部の特殊文字で約 80 個位と想定した場合、五文字と言うのは 80^5 通りあるので、こらー簡単に 32,000 個を超えてしまいます。 32,000 個以内に抑えるのは CacheDirLength は 2 を指定しなければならない。3 を指定したとしても 80*80*80=512,000 個のディレクトリが作成されることになります。あれー・・。

/data/httpd/cache の下には 80*80=6,400 個にしてその下の階層を深くしたほうが良いと言うことなんですねぇ・・。

ディレクトリを自動生成してくれるアプリケーションの場合、ディレクトリ長は二文字にしないと簡単に 32,000 個があふれてしまう。今後はこれを頭の片隅に入れておきたいと思います。

7月 062009
 

普段常用している PC のグラフィックカードを交換してみました。

今までは NVIDIA の GeForce 7300 LE で 512MB のやつを付けていた。新しく購入したヤツもメモリ自体は 512MB で一緒。そして Xorg の radiohhd ドライバでサクッと動くべ。とか思ったのでありました。秋葉原の T-ZONE で 2,980yen。 ずいぶん安いよねぇ。って感じで、ちょっと幸せな気分です;-)。

まずは PC にセットアップして WindowsXP でブート。ドライバをインストールして認識させた後、FFXIBench3 で動作確認。

僕は PC と言うのは「OS を走らせるもの。」と言う認識でいるので、ゲームには全く興味は無いのだけど、自分の買ったパーツの性能は知りたいのでベンチマークしてみました。

GeForce 7300 LE
    Low   6926
    Hight 4005
Radeon HD 4350
    Low   7345
    Hight 4545

と、言うことで本当にちょっとだけ Radeon HD 4350 のほうが速いと言う結果が出ました。

さてと。以上が Windows での結果。ここからは FreeBSD で Xorg を利用したときのことを書いてみたいと思います;-)。まず始めに言っておきますが、depth 32bpp は出ませんでした・・。x11-drivers/xf86-video-radeonhd や x11-drivers/xf86-video-radeonhd-devel のどちらを使っても 32bpp な色はサポートしていないみたいです。あ。ちなみに xorg.conf は必要無いよねぇー。Xorg -configure でできたものでじゅーぶんに動作します;-)。

最近、ブログの写真の色などを気にしていたのだけど、32bpp がでないのはちょっと悲しいですねぇ。しかし、GeForce 7300 LE よりは発色は良いかなぁ。と言う気はします。まぁ、基本的に MacOSX と比べてはいけない。と言うのは解っているのですけどねぇ・・。

今回の検証において、僕は Xorg のドライバは x11-drivers/xf86-video-radeonhd-devel を利用しました。

購入したグラフィックカードは D-sub 15pin・DVI-D・HDMI のコネクタが付いていて、もう S 端子なんてのは無いんですねぇ。

グラフィックカードを接続して FreeBSD をブートして驚いたのが、サウンドカード(ドライバ)として HDMI が認識されたこと。

% cat /dev/sndstat
pcm0:  at cad 0 nid 1 on hdac0 kld snd_hda [MPSAFE] (1p:1v/0r:0v channels)
pcm1:  at cad 0 nid 1 on hdac1 kld snd_hda [MPSAFE] (1p:1v/1r:1v channels duplex default)
pcm2:  at cad 0 nid 1 on hdac1 kld snd_hda [MPSAFE] (1p:1v/1r:1v channels duplex)
pcm3:  at cad 0 nid 1 on hdac1 kld snd_hda [MPSAFE] (1p:1v/0r:0v channels)

 
pcm0 で グラフィックカード上の HDMI のサウンドカードが認識されたおかげで、Realtek のサウンドカードからスピーカに接続していたのに音が出なくなってしまった。ある意味すばらしーーー。って感じがします。FreeBSD のサウンドドライバの進歩に驚くのでありました。

けど、音が出ないのでまずは KDE4 の設定を見るわけです。すると、システムセッティングのマルチメディアを開くと優先できるデバイスの設定があるみたいです。クリックすると大きくなります。



しかし、これをやってもダメ、つまり音は出ないのでありました。しくしく。そんなこんなで色々調べるのですが、FreeBSD 側でちゃんと対応していのには驚きました(@_o)。sysctl に hw.snd.default_unit と言うmib があって、これが優先するサウンドデバイスを指定できるらしいのですね。pcmX の “X” の数値を hw.snd.default_unit mib に指定してあげるとそのデバイスを優先的に使う。と言うものです。

ちなみに、pcm の認識の順序は PCI バスに準じています。たくさんの NIC を刺した時に認識される順番が決定するのと同じ原理。

僕の環境ではグラフィックカードがサウンドカード(チップ)より先に認識したので HDMI が pcm0 だったので /etc/sysctl.conf に hw.snd.default_unit=1 と書いたら音が出るようになりました。おーー。すんばらしーー。

僕の使っているディスプレーは H223HQbmid なんだけど、こいつには背面にチャチぃスピーカーがついていて HDMI で接続するとそこから音が出るらしいのね。けど、僕は PC には BOSE のスピーカーを付けているのでそこから音が出て欲しいので、サウンドデバイスの順序は非常に重要なのであります。

今後はどんどんこうなるのかなぁ。グラフィックカードを変えたら Xorg のドライバーも重要だけど、音も重要だねぇ。みたいな。

今回はなかなか良い勉強をさせてもらったのでありました。2,980yen で「グラフィックカード」を買ったつもりだったんだけど、メインはサウンドドライバになってしまったかな?(^^;;。

7月 032009
 

FreeBSD の ports に emulators/virtualbox と言うがあるのを発見。すかさず make してインストールしてみた感想を。

最近 SUN から 3.0 がリリースされた のだけど ports でインストールされるのは virtualbox-2.2.51.r20457_3 と言うバージョン。

VirtualBox は X11 ツールキットに QT4 を使っているので、KDE4 を使っている僕にとっては非常に嬉しい。起動後の見栄えが KDE4 と一緒なので、それはもうまるて KDE-4.2.4 のアプリケーションの一部ではないのか? みたいな雰囲気になります;-)。

デスクトップのキャプチャはこんな感じです。クリックすると大きくなります。



KDE4 がインストールされている環境では ports から VirtualBox をインストールする分にはそんなに時間がかかりません。firefox を makeしてインストールするのと同じ位な感じかなぁ;-)。

インストールが終わったら /boot/modules/ にインストールされた vboxdrv.ko を kldload するだけ。KDE4 を利用している人は「K メニュー」から「アプリケーション」を表示させて「システム」を選択するとその中に存在しているのでクリックすれば起動します。

コンソールから起動する場合は /usr/local/lib/virtualbox/VirtualBox を起動します。珍しく /bin/ の下にないんだよねぇー。

起動後は他のバーチャル PC と特に変わりません。メモリや HDD を選択するなどしてバーチャル PC を作成して、起動(START)ボタンを押すだけ。非常に簡単です。

手元に WindowsXP の CD-ROM があったのでメディアを DVD ドライブに突っ込んで CD ブートしようとしたけど、なぜか VirtualBox は /dev/acd0 を見つけてくれなかった。ln -s /dev/acd0 /dev/cdrom としてもダメだったので FreeBSD の CD デバイスはダメなのかもしれない。

しょーがないので dd で iso イメージを作成して、それを VirtualBox に認識させたら無事に起動は完了。後は OS のインストールを待つのみとなったのでありました。

デバイス的に問題かもしれないのは CD-ROM デバイスだけで、後は特に問題もなく、NIC(bge0) も使えているし、Windows の起動音も出る(hdac0.pcm0) ので全然問題なく使える。と言う感じでしょうか。中々グーです。

まぁ、欲を言えば VMware Fusion(MacOSX 版だけど) みたいに、デスクトップ上に Windows のアプリが起動できるようになってくれたらなぁ。などと思うのですが、それはつまり X11 上に Windows アプリを表示する。と言うことになるのでちょっと無理かなぁ。と言う気はしないでもないです;-)。

しかし、それにしても FreeBSD の中で Windows が起動すると言うのもまたヘンな感じです。WindowsXP の VMware Workstation で FreeBSD は動かしたとこはあるんだけど、それよりも違和感があります。

なんだろなー。アンチエイリアスの利いたデスクトップ上でアンチエイリアスが利いていないアプリケーションを動かしているからかなぁ。

と、言うことであまりにサクサク動作しているのでちょつと驚いている状態なのであります;-)。

6月 232009
 

FreeBSD 用の ports は作った(改造した)けど、(めんどくさそうなので) send-pr してないものや、「ま。自分で使う分にはそれでいーや。」とか思っているヤツのたまり場が この辺り にあったりします;-)。

あ。唯一、作者と言うか FreeBSD.org なアドレスに連絡したのが scim-bridge-client-qt4 だ。これは必要だったので kde@freebsd.org にメール書いた;-)。後、irrd もコミッターの方にお願いして登録してもらったなぁ。

今回は自分が必要な二つの自家製の ports をアップデートしました。

一個は mew と SSL と stunnel と /etc/hosts.allow。 の記事で書いたやつ。4.26 から 4.27 にバージョンアップしたのに追随しました。また、この ports では Makefile を編集してメニューを表示するようにして –disable-libwrap を選択できるようにしています。ほんまモンのよりいたせりつくせりだと思うのだけどもねぇ;-)。

もう一個は /usr/ports/www/photo_gallery 日本語版。 の記事で書いたやつ。これは、ports が 1.5 から 1.5_1 に更新されたのでそれを追随した形です。後、apache13 をインストールしないようにしています。photo_gallery 自体は apache22 でも動作するのであえて apache はインストールしないようにしました。

とまぁ、こんな感じで send-pr はしてないけど、コツコツと更新しているのであります。きっと自分しか使わないだろうなぁ。とか思っているので;-)。

一応、それぞれの ports は以下にあります。もしよければ利用して見てください;-)。

http://www.icmpv6.org/Prog/FreeBSD_ports/ports-stunnel-disable-libwrap-20090623.tgz
http://www.icmpv6.org/Prog/FreeBSD_ports/ports-ja-photo_gallery-1.5_1-20090623.tgz

あ。コミットしてくれる方、絶賛募集中です;-)。

6月 182009
 

僕はちょっと古い目の MacBook を持っている。と書いた。しかし、これとは別にこの記事を読んで「うひー。MacPro ほすぃなぁ。」とか思い初めて、BootCamp に FreeBSD がインストールできれば買うのになぁ。などと漠然と思った次第です。

まぁ、いっちょ、MacBook に FreeBSD でもインストールしてみんべ。とか思い、現在 BootCamp パーティションにインストールされている Windows Server2003 EPE をぶっつぶせばええやん。って感じで作業をはじめたのでありました;-)。

ちなみに、僕は VMware Fusion のライセンスも持っていて、Windows7 なんかが動いているのだけど、やっぱりネーテブで動く速さにはかなわないよねぇ。ってどうしても思ってしまうのよねぇ・・。

さてと。まず、MacOSX 側でブートを FreeBSD の CD-ROM に指定してリブートします。今回利用した FreeBSD は FreeBSD/amd64 7.1-RELEASE。MacOSX がシャットダウンしてしばし待っていたら・・。

おーー。無事にブートできそうですねぇ。って感じがしてきました;-)。

IMG_5210_boot.JPG

これは中々よさそうですよ。この分だと MacPro を買っても FreeBSD がインストールできそうだ。などとルンルン気分(既に死語か?)で次に進むのであります;-)。

この後、日本語環境を選んでディスクを選択してーー。

FDISK の画面ですが。うひー・・。

IMG_5215_fdisk.JPG

今まで見たことが無いパーティション情報が表示されています・・。ad5p1,ad5p2,ad5p3。で、その間には “-” と言うのがあるし・・。なんじゃこらぁーーっ!!??

この段階で既に手が出ない。Windows Server2003 のパーティションが消えるのは、まぁ、許すとして、MacOSX のパーティションが消える、もしくは MacOSX がブートしてこないなんてことになったら目も当てられない状態なので、さっさと ESC ボタンを押してリブートして事なきを得たのでありました。

さてと。そもそも MacBook と MacOSX は フツーの PC で利用されている BIOS ではなく、EFI を利用しているためにブートする仕掛けがちょっと違う。と言う知識は一応持っていたのだけど、HDD の認識方法が違う。と言うことまでは知らなかったのでありました・・(^^;;。だって、初めての体験だしー。MacOSX はインストールの時、そんなん気にする必要無いしぃ・・(言い訳モード;-)。

IRC などで人に聞いてみると、gpart でホゲってあげないといけないみたいで、既に FDISK は過去のものとなっているようです。詳しいことは今後、色々調査せねば MacBooK にインストールできないぞぉ。などと思い今回の作業は終了したのでありました。

ちなみに FreeBSD をブートし始めたのが今日の 00:00 位から。その後二時間位色々遊んだんだけどねぇ・・。イヤハヤ。眠い・・(^^;;。

さてと。最後にですが、僕は MacOSX 側で BootCamp を利用して Windows Server2003 のパーティション(FAT32)を作成したのだけど、これって実は ad5p3 に入っていることが解りました。ふつー、FreeBSD をインストールする時には ad0s1 に Windows、ad0s2 に FreeBSD をインストールするのが一般的(だよねぇ?僕だけかな?)なんだけど、BootCamp の場合はディスクの後ろのほうの空いたスペースを BootCamp 用に使うことになるのですね。間違っても ad5p1 は消したらダメだよ。ってことですねー。

まぁ、人生、わからない時はアキラメが肝心です。でもって MacPro ですが、購入に関しては却下されそうな気配です・・。トホホ。

それにしてもこのネタ。つづく のかなぁ?(^^;;。