1月 312009
 

前回のつづきです。いろいろ試してみました。

hald を起動した時の問題点ですが、まず、NotePC のタッチパッドの左ボタンでダブルクリック及びトリプルクリックができない件ですが、これはパナソニックの CF-W5 のみの問題であることが分かりました。 DELL の X1 では無事にタッチパットの左ボタンが特に問題なく利用できました。

続いて、キーボードの 「む」のキーにおいて、「}」や「]」が入力できなくて、「\」キーと同じバインドになってしまう。と言う件ですが、これは xmodmap で対応可能です。以下の設定を ~/.xmodmaprc とかに保存して xmpdmap で実行してあげればキーバインドは刻印通りに動作します。

! }]  key setting
keycode 51 = bracketright braceright

 
と、言うことで hald 経由でも特に問題無く動作することの確認が取れました。前にも書いた通り、PS2 のマウスとキーボードを利用している場合には hald を起動する必要はなく、 xorg.conf に AutoAddDevices を false にしてキーボードとマウスの設定を利用したほうが楽かもしれません。

PS2 (タッチパッドなど) は標準で使うけと、時々 USB マウスやキーボードを使いたい。と、言う場合には hald を起動したほうが良いと言うことでしょうなぁ。

ちなみに、hald 経由の場合だと、USB のマウスやキーボードを抜き差ししても全然問題なく動作します。ただ、PS/2 キーボードがある環境で USB キーボードを付けた場合、USB キーボードで文字入力はできますが、PS/2 キーボードでは入力を受け付けなくなります。まぁ、当然と言えば当然か。

けど、マウスは PS/2 と USB の両方のマウスが動作します。さすがは /dev/sysmouse って感じでしょうか。この時、ps で確認したら USB マウスを付けた段階で moused が起動しますねー。けど、マウスや X の動作には全然問題は無いので敢えてデーモンを kill することも無いでしょう;-)。

さてと。僕の環境では xorg-7.4 の設定はこれにて全てしゅーりょー。いやぁ。良かった良かった;-)。

1月 302009
 

FreeBSD の ports の最新をおっかけていると xorg が 7.3 から 7.4 になり、X が起動しねー。とか、マウスが動かねー。キーボードが 101 だぁー。などとあちこちで大騒ぎのようです。まぁ、僕もそーだったのですけどね。

けど、、なんとか動くようにしたのでありました。僕は会社のもひっくるめて、デスクトップ二台、NotePC で二台の計四台の PC で X11 が動作しています。

デスクトップの場合、PS/2 のマウスとキーボードを利用しているぶんには非常にラクチンで、Section “Files” から RgbPath を取り去った後に以下の設定を記述すれば大丈夫です。まぁ、Xorg -configure した後にできた xorg.conf.new を利用したほうが楽ですけどね。

Section "ServerFlags"
    Option “AllowEmptyInput” “off”
    Option “AutoAddDevices”  “false”
EndSection

 
この設定を入れると xorg.conf に記述したキーボードとマウスの設定が有効になります。その時、 moused は起動してはダメになります。なので、マウスの設定の所は Device において /dev/sysmouse ではなく /dev/psm0 を指定することになります。これでマウスがちゃんと動くようになりました。めでたしめでたし。

後、キーボードのほうですが、ServerFlags の所で二つのオプションを追加しているので xorg.conf の内容をそのまま引きずってくれるので jp106 とか ctrl:swapcaps の設定は有効になったままとなるでしょう。

とまぁ、PS/2 のマウスとキーボードのみを利用した環境であれば特に問題はないのですが、NotePC のように普段はタッチパッド(こっちはたいていの場合 PS/2 として認識される)を利用するけど、時々は USB マウスを接続して利用したい。と言う場合もあるわけです。

その場合、Section “InputDevice” の mouse の設定をいちいち /dev/psm0 から /dev/ums0 に書き換えて、X を再起動してからでないと利用できません。後、タッチパッドと USB マウスの同時利用と言うのもできなくなります。あれまー。不便ですねぇ・・。困りましたねぇ。

このような場合はやはり、hald を起動して PS/2 と USB のマウスを認識させるしか手は無いのであります。同時に利用したい人はまずはともあれ hald を起動して、moused を停止しましょう。なお、/etc/rc.conf において moused_enable=”NO” と記述していても USB マウスを接続したとたんに moused が起動してしまう場合がありますが、とりあえずは無視して起動状態としておいても大丈夫でしょう。

続いて xorg.conf の設定ですが、マウスとキーボードの認識を hald で行うようにしたので上に書かれている ServerFlags セレクションの設定二行を削除します。

そして、/usr/local/etc/hal/fdi/policy/10-keyboard-jp106.fdi と言うファイルを用意し、以下の記述をします。

<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
    <device>
        <match key="info.capabilities" contains="input.keyboard">
           <merge key="input.x11_options.XkbRules" type="string">xorg</merge>
           <merge key="input.x11_options.XkbModel" type="string">jp106x</merge>
           <merge key="input.x11_options.XkbLayout" type="string">jp</merge>
           <merge key="input.x11_options.XkbOptions" type="string">ctrl:swapcaps</merge>
        </match>
    </device>
</deviceinfo>

 
まあ、書いている内容は xorg.conf に書いた内容を XML 形式にしただけ。と言う感じでしょぅか。

準備ができたら hald が動作していることを確認しつつ、しかし新規にファイルを設置したのでいったん停止して再起動しつつ、 X を再起動してみましょう。

これで無事に起動したでしょうか? そしたら、PS/2 マウスと USB マウスが、両方動くことを確認します。続いてログインし、キーボードが 106 になっていることを確認して、CAPS キーと Ctrl キーもちゃんと入れ替わっていることを確認します。

しかし、hald 経由でキーボードとマウスを認識させたら、問題点が二つあるみたいです。

一個は僕の NotePC 固有の問題かもしれませんが、タッチパッドに付いているマウスの左ボタンでトリプルクリックができなくなりました。一行まるまるコピーの場合にトリプルクリックを利用するのでけすけど、それができない。ついでにダブルクリックもできない・・。トホホ。ちなみに USB マウスでは正常に動作しています。

二個目の問題ですが、キーボード入力で “け” の右横のキーの入力が出来なくなりました。”かっことじ” と “mu” のキーが “へ” の右横の “\” のキーと一緒になってしまいました。これは xmodmap で直せるかなぁ・・。
ちなみにこの記事を書いているキーボードが、既に打てない状態となっていますf(^^;;。
もし、正常に動作しない場合は /var/log/Xorg.0.log を確認してみましょう。どう言う風に確認するのかと言えば・・。動かない。とコメントに書いてください(^^;;。

なお、今回の設定ではコンソールのとこは考慮していません。僕はコンソール画面においてはマウスを利用しない人なので、コンソールでのマウスの挙動は良く分からないのです。

けど、せっかくなので、PS/2 版の xorg.conf と hald 版の xorg.conf を以下に置いておきますね。

PS/2 マウス版 xorg.conf
hald 版 xorg.conf

なお、上のほうは moused が起動している必要があります。下のほうは moused は起動していなくとも良いが hald が起動している必要があります。hald が起動している場合はポリシーファイルが必要です。

つづく

1月 232009
 

さてと。話せば長いのであります。mew では IMAP4 や POP3 に対して SSL で接続できます。 ~/.mew の設定や ~/.certs/ に必要なファイルをほーりこむ設定については他のウェブページに譲りたいと思います;-)。

ここでは、他のウェブページを見て設定しても接続できない人がきっと参照してくれることでしょう。と、言う感じでまとめます。特に FreeBSD の ports から stunnel をインストールした人向けです。

最初に答えを言いましょうっ!!。 /etc/hosts.allow で localhost の stunnel のポートを許可しないと接続できませんっ!! /etc/hosts.allow に以下の設定をしている人は mew での SSL 接続がきっとできないことでしょうっ!!

#ALL : ALL : allow

 
さてと。それでは順番に見ていくことにしましょう。 FreeBSD を利用している人は大体 ports から必要なものをインストールするかと思います。emacs+mew で SSL な POP3 もしくは IMAP4 なサーバに接続しようとした時は /usr/ports/security/stunnel が必要なので、サクッと make install しておしまい。で、早速テスト。って感じかと思います。

mew が SSL するときは stunnel 用の設定ファイルを /tmp/takachan88831JOY/mew88831rod みたいな感じで作成します。このファイルが stunnel のオプションになるわけですが、中身は以下のようになっています。

client=yes
pid=
verify=0
foreground=yes
debug=debug
syslog=no
CApath=/home/takachan/.certs
[10841]
accept=127.0.0.1:10841
connect=mail.running-dog.net:993

 
mail.running-dog.net のポート 993 番に接続するための SSL トンネルは localhost の ポート 10841 に telnet して確認できます。まぁ、mew が IMAP4 を叩くポートが 10841 と言うことですね。これは解りやすい。

で、実際に telnet 127.0.0.1 10841 しても SSL トンネルをまるで抜けていきません。おかしいなぁ。と思って色々調べてみると、原因は stunnel が libwrap をリンクしていると言うことなんですね。これが解るまでに四時間位かかりました。orz。

mew 側の設定で localhost のポート番号を設定できるのか?もし設定できるのであれば、そのポートだけを /etc/hosts.allow で設定すれば良いと思いソースを見て調べてみましたが、どうやらできないみたいです。mew-6.2.50 の mew-ssl.el では 130 行目辺りで localport を mew-random を利用して生成しているみたいです。と、言うことで、mew 側ではどうやら設定不能みたいです。

続いて、/etc/hosts.allow に stunnel: ALL : allow とか stunnel4: ALL : allow など色々試しに設定してみたのですが、inetd 経由や デーモンモードで動作する stunnel では有効になるのですが、コマンドベースで利用した場合の /etc/hosts.allow の記述方法が解りませんでした・・。トホホ。

それならば、と言うことで stunnel の Changelog やらソースを眺めますが、おぉっっ!! configure オプションに –disable-libwrap と言うのがあるではないですかっ!! すんばらしい。とは言いつつ、FreeBSD の ports では –disable-libwrap を選択できるオプションが無いのでありました。無条件で libwrap はリンクされてしまう。トホホ。

と、言うことで –disable-libwrap を選択できる ports を作成しました。使いたい方は利用してください。

ports-stunnel-disable-libwrap-20090123.tgz

まぁ、Makefile をチロッと直しただけなんですけどね。

これで安心して mew で SSL が利用できることでしょう。まずは良かった。良かった。

けど、解決策はそんなんで良いのかなぁ? mew 側で吸収すべきか stunnel 側で吸収すべきか。どっちが良いのかなぁ・・。kazu さん 的にはきっと、libwrap を off にしましょう。って言うような気が、しないでもないこともないと、僕は思うのですけどねぇ・・。

1月 192009
 

僕はサーバに ATI IXP700(SB700)、デスクトップ機には ATI IXP600(SB600) なマザーボードを利用している。FreeSBD においては随分と早い段階、多分 7-STABLE 辺りで AHCI に対応していて、7.1-RELEASE ではほぼ利用できるようになっているみたいなので試してみた。

自分のマザーボードと言うか、ATA コントローラが AHCI に対応しているかは sys/dev/ata/a-chipset.c 辺りを確認してみると良いでしょう。僕のは以下のように 7.1-RELEASE では既に対応済みでした。

    { ATA_ATI_IXP600,    0x00, 0, ATIPATA, ATA_UDMA6, "IXP600" },
    { ATA_ATI_IXP600_S1, 0x00, 0, ATIAHCI, ATA_SA300, "IXP600" },
    { ATA_ATI_IXP700,    0x00, 0, ATIPATA, ATA_UDMA6, "IXP700" },
    { ATA_ATI_IXP700_S1, 0x00, 0, ATIAHCI, ATA_SA300, "IXP700" },

 
接続する HDD が SATA150 の場合は ATA_ATI_IXP600 が、 SATA300 の場合は ATA_ATI_IXP600_S1 のほうで認識されます。さてと。後は BIOS で今まで “IDE” と選択していたものを “AHCI” に変更してブートするだけです。

IXP600 なデスクトップ機ですが、 FreeBSD/amd64 7.1-RELEASE はサクッと起動しました。で、起動時、カーネルモジュールをロードする時など、気持ち的には速くなったような気がしました。

で、デスクトップ機なので WindowsXP x64 もインストールされているのですが、こっちのドライバは OS インストール時に SCSI デバイスをインストールする時みたいに、インストール時に AHCI のドライバを組み込まなければだめみたいだし、たとえ AHCI ドライバがインストールできたとしてもイマイチ不安定らしいので IXP600 なマザーボードでは AHCI を利用するのは断念しました。

さてと。ここからが本題。自宅サーバは、このブログでも書き続けていますが、メモリを変えても HDD を変えても電源を交換しても安定していません。で、実は HDD を交換した後、SATA のスピードが SATA150 でしか認識出来ていなかったんですね。

あれ?とか思い調べてみたら、新しく接続した HDD は Seagate の ST3500320AS SD15 と言う、500GB の HDD なのだけど、これは工場出荷時において、ジャンパピンが接続されていて、つまりショートしていて SATA150 が default みたいです。なので、SATA300 で利用するためにはジャンパーピンを取り去って上げる必要があったのでした。

これで、サーバに接続した HDD は SATA300 で認識されるようになり、体感的にも速くなったような気がします。

しかし、SATA300 で認識したのだけど、やはりサーバは突然の停止。と言うことになってしまったのでありました。それならばと思い、IXP700 も AHCI に対応しているのでいっちょやってみるか。と言うことで BIOS の設定を “IDE” から “AHCI” に変更してサーバを再起動。あ。サーバの OS も FreeBSD/amd64 7.1-RELEASE です。

無事に起動し、カーネルソースの make を開始し、しばらくしたら HDD へのアクセスエラーがドドドドドーーーっと出力され、そのままカーネルはフリーズ・・。その場でしゅーりょーーー・・・。状態となったのでありました。orz。

これにしても SATA150 の頃が一番安定しているんではないかい? とか思っています。SATA150 で利用した場合、三日と 12 時間経っても OS 自体が凍りつくことはなく、ミョーに安定している感があります。

このまま SATA150 で運用してみようかと思っています。一体何日くらい落ちずに持ってくれるか。

1月 072009
 

新年明けましておめでとうございます。今年も宜しくお願いします。

今年の一発目。FreeBSD ネタですが、sshd を port:22 ではないポートで起動するようにしてみたいと思います。そんなの簡単じゃん。て?そりゃーそーだけどさー。rcNG な起動スクリプトを書くのが難儀なのよ。

port:22 で起動する sshd は /etc/rc.conf に

sshd_enable="YES"

 
と書けば良いのだけど、これとは別に、例えば port:22022 で sshd を起動したい。どうしてか?と、言えば網内では port:22 で ssh するんだけど、BB ルータの外側から各サーバにダイレクトに ssh したい場合、個々のサーバで sshd を別ポートで起動して、BB ルータ側でポートの転送をしてあげればダイレクトに入れるよねー。って感じですかね。

なんだよー。そんなの IPv6 あればできるじゃん。と思うんですけど、IPv4 の世界しか無い場合は不可能なので・・。

で、ここまでが前置きで、サーバを起動したときに sshd を port:22022 で起動するようにスクリプトを書くわけです。しかし、これがまた大変・・。例えば、sshd だけでなく、httpd を port:8080 で起動するスクリプトはどうするのだ?とか、色々出てきてですねぇ・・。

一応できたスクリプトがこんな感じ。

#!/bin/sh
#
# PROVIDE: sshd-diff-port
# REQUIRE: LOGIN cleanvar
#
# Define these smartd_* variables in one of these files:
#       /etc/rc.conf
#       /etc/rc.conf.local
#
# DO NOT CHANGE THESE DEFAULT VALUES HERE
port="22022" sshd_diff_port_enable="${sshd_diff_port_enable-NO}" sshd_diff_port_pidfile="/var/run/sshd-${port}.pid"
. /etc/rc.subr
name="sshd_diff_port" rcvar=`set_rcvar` command="/usr/sbin/sshd" pidfile=${sshd_diff_port_pidfile}
load_rc_config $name
command_args="-o PidFile=${sshd_diff_port_pidfile} -p ${port}"
run_rc_command "$1"

 
簡単かぁ?これを書くために jman rc.subr してじっくりと眺めます。後はコマンド、今回の場合は sshd ですが、それのオプションをじっくりと調査します。

で、スクリプト名は sshd_diff_port としました。command_args で sshd のオプションを書きました。/etc/rc.conf.local には以下のように書けば起動できることでしょう。

sshd_diff_port_enable="YES"

 
良かった良かった。

それにしても rcNG スクリプトを書く上で疑問な点がまだ残っています。

スクリプトを起動してその中から実際のデーモンを起動した場合(firefox みたいなイメージかな) stop ができない。例えば kdm は スクリプトでそれを起動時に呼ぶのだけど、その中では kdm-bin をキックしている。その場合、stop オプションで実行しても kdm が終了しない。pidfile=${kdm_pidfile} を記述しても 以下のメッセージが出力され終了できない。なんで〜(?_?)。ちょっとだけrc.subr 見てみたけど $name とかが絡んでいる? けど、実際のプロセスは kdm ではなく、kdm-bin なのよー。どうすれば kill できるのー?

kdm not running? (check /var/run/kdm.pid).

 
で、できたスクリプトがこれ。stop は受け付けてくれないので rc スクリプト内で完結するようにした。reload も stop 部分は自前にして start だけ rc.subr に任せた。ダサいなぁ・・。

#!/bin/sh
#
# kdm start
#
# PROVIDE: kdm
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: FreeBSD shutdown
# Define these smartd_* variables in one of these files: # /etc/rc.conf # /etc/rc.conf.local # /etc/rc.conf.d/kdm # # DO NOT CHANGE THESE DEFAULT VALUES HERE # kdm_enable="${kdm_enable-NO}" kdm_pidfile="/var/run/kdm.pid"
. /etc/rc.subr
name="kdm" rcvar=`set_rcvar`
load_rc_config $name
command="/usr/local/kde4/bin/kdm" pidfile=${kdm_pidfile}
case $1 in 'stop' ) if [ -f ${pidfile} ] ; then kill -TERM `cat ${pidfile}` /bin/rm ${pidfile} fi echo 'Stopping kdm.' exit; ;; 'restart' ) if [ -f ${pidfile} ] ; then kill -TERM `cat ${pidfile}` /bin/rm ${pidfile} fi echo 'Stopping kdm.' ;; esac
run_rc_command "$1"

 
httpd を 8080 で起動するスクリプトはもう、書くのもイヤになっちゃった・・。どこかに rc スクリプトのサンプル置き場とか無いかなぁ?

本当に書き方、よく分からないや・・。きっと rc.subr 眺めて書くんでしょうなぁ・・。トホホ・・。

Linux の rc スクリプトも汚いと思っていたけど、最近の FreeBSD の rc スクリプト書くのも、簡単なのは良いのだけど、ちょっと何かやろうとしたら全然書けない・・。トホホ・・。

12月 252008
 

自宅のサーバが安定しない。とずっとここに書いてきたのだけど、ふぅ。23 日の 22:00 頃にようやっと原因と思われるメッセージを出力してカーネルがパニックしてくれた。それまでは突然凍りつく現象がずっと続いていたのだけど。

サーバの突然の停止によって、メモリを交換・電源交換・あげくの果てにマザーボードの交換までしたのにそれでもサーバの突然の停止。まいった。

しかし、今回はようやっとメッセージが出力された。タイトルの通りで ufs_dirbad で mangled entry だとメッセージが出力されて、その後 panic: だと。トホホだけど、原因が特定できてよかった。ちなみに僕の場合は /var でこのメッセージが出力された。

PC のハードウェアは交換したけど、HDD はずっと使い回していたので再インストールは特にして居なかったのだけど・・。

FreeBSD のソースコード的には /usr/src/sys/ufs/ufs/ufs_lookup.c の 297 行目辺りなんだけど、何をしているのか皆目見当がつかないので google で検索してみるとそれなりに結構ヒサンな状態みたいですねぇ・・。このメッセージが出ると言うのは。

と、言うことでバックアップを開始し、スパッとパーティションを削除して FreeBSD の再インストールを実施。インストール前は FreeBSD/amd64 7.1-PRERELEASE だったのだけど、インストール用メディアは FreeBSD/amd64 7.1-RC2 でおこなった。その後、cvsup で再度 7.1-PRERELEASE にしたけど、今のところは無事に動作している。と言う感じかな。

けど、cron で動くものやウェブ経由で動作するプログラムが結構 core している模様。dmesg に出力されているのよねぇ・・。

一体何がいけないのか・・。サーバ自体が安定してもその上で動作しているものがボコボコ落ちても余り意味がないのだけど・・。

後、ufs_dirbad なメッセージが FreeBSD/amd64 のみで発生している事象なのかも知りたい所。FreeBSD/i386 使って ufs_dirbad なメッセージが出た。と言うのは google で探しても見当たらないのでもしかしたら FreeBSD/amd64 のみの事象なのかなぁ?

FreeBSD/i386 を利用していても ufs_dirbad なメッセージが出るぜぃ。って人いましたらどうかお願いします。コメント頂けませんでしょうか。宜しくお願いします。

それにしても再インストールでサーバが安定することを切に願うのであります。

12月 182008
 

最近の液晶ディスプレーの価格の下落にはちょっと驚いているのですが、驚きつつ、ついつい買ってしまいました。 Acer の H223HQbmid を。インターネットで買ったら 25,000yen 程度。まぁ、冬のボーナスで買うにはこれ位で良いかぁ。みたいな感じでした。

届いたのをしばらく使ってみたのですが、その感想を少々書いてみたいと思います。

・ディスプレーが広大だねぇ。Full HD で 1920X1080 のサイズの画面が出るのだけど、右から左に首を動かす量が増えた。まるで車のフェンダーミラーがドアミラーに変わったように・・。

・コントラスト比が 20000:1 だと言うので default ではなんかむちゃくちゃ明るくて、僕の場合頭の後ろが痛くなるので随分と暗くしました。

・ディスプレーを設定するボタンが、ボタンでは無くタッチするだけなのですごいかっちょ良いし、D-SUB・DVI-D・HDMI を切り替えるのは信号が来ているものを勝手にチョイスしてくれるのですんごい楽。

・やたらでかい・・(^^;;。

って感じでしょうか。僕的にはこれが 25,000yen で買えるのが驚きで、良い買い物だったと思っています。

さて、続いて各種 OS の接続状況を見ていくことにしましょう。

・MacOSX Leopard ですが、僕は 2006/11 発売の Dore2Duo な MacBook を持っているのですが、これは Intel GMA 950 なグラフィックチップです。が、 mini-DVI-D のコネクタでディスプレーに接続したらいとも簡単にフル HD で表示してくれました。何も悩まずに広大なデスクトップ環境を手に入れました。

・続いて WindowsXP ですが、これは D-Sub15 ピンで接続しています。こちらも全く問題はありませんでした。

・最後は FreeBSD の X11 ですが、ディスプレー側でアスペクト比固定にすると、左右に黒く入って正しい比率で表示してくれます。一回 Xorg -config を実行し新しい xorg.conf を作成し、それを利用するとフル HD で表示してくれます。おーー。パチパチパチ。僕は KDE4 をデスクトップに使っているのだけど、いやはや。すんばらしい。

・X11 での問題点もあります。フル HD のサイズにしたら日本語の TrueType フォントが表示できなくなってしまいました。1280×1024 の場合は日本語を表示しくれるのですが、1920X1080 にすると日本語フォントが□で表示されてしまいます・・。アタタタ。

ちなみに現在 X11 上で TrueType フォント を利用しているのは emacs のみです。それ以外は KDE や GNOME のアプリなので pango+cairo のアンチエイリアスが有効になったフォントなので X11 は知らないんですね。

さてと・・。X11 で 1920X1080 の時に TrueType フォントを表示できるように格闘すべきか、emacs 自体を pango+cairo のアンチエイリアスが有効になったものに移行すべきか悩むところです。

ちなみに僕は両方とも試しました。xorg.conf を色々いじっただけではだめでした。後、emacs-23.60 は pango+cairo のアンチエイリアス対応ができるのですが、scim からの入力ができず、日本語がまるで打ち込めない状態だったので利用を諦めたのでありました・・。トホホ。

と、言うことで emacs は -nw オプションを付けて konsole から起動することにしました・・。よ、弱い・・。

とまぁ、こんな感じでフル HD を体験しているわけですが、画面が広いのは良いけど首が疲れる。と言うのが良く分かりました。 DVD も見たけどそれは画面が大きくて良いですねぇ。ただ、5.1 チャンネルの音が無いしぃ・・。みたいな。

結局、どっちやねん?(^^;;。

11月 282008
 

FreeBSD、僕は7.1-STABLE を利用しているのだけど、ちょっと前に Users-ML で話題になった。

FreeBSD-users-jp 91899 からのスレッド ですねぇ。

このスレッドの中で ume さん が、その対処法を書かれているのです。

作業内容は以下みたいな感じですかねぇ。

元々 linux_base-fc4 が入っていたので /etc/make.conf に

OVERRIDE_LINUX_BASE_PORT=f8

 
と設定します。続いて、

# sysctl compat.linux.osrelease=2.6.16

 
してからいよいよバージョンアップです。

# portupgrade -o emulators/linux_base-f8 linux_base-fc4
# cd /usr/ports/emulators/linux_base-f8
# make install
# portupgrade -f linux-\*
# cd /usr/ports/www/linux-flashplugin9
# make install

 
最後にプラグインのコマンドを実行します。

$ nspluginwrapper -v -a -i

 
これで良いはずなんですけど、これで確かに flash9 が動作するのですが、遅い・・。yahoo.co.jp とか watch.impress.co.jp は最近、flash の CM があるのだけど、これを表示する時にむちゃくちゃ遅いっ!! 記事を真ん中クリックして別のタブに表示させるんだけどそこに flash があると平気で 10 秒以上凍りつき、応答がなくなる firefox3。

もうウンザリ・・。flash7 に戻すべや。とか思っていたら、回避策を教えていただきました。ありがとうございます。 ume さん;-)。

原因は linux-glib2 です。linux_base-fc4 で利用していたこれを削除して、再度インストールしなおせば劇的に速く動作するようになります。

その手順は以下のような感じ。

# pkg_deinstall -f linux-glib2
# portupgrede -f linux_base-f8
# pkgdb -F

 
これをやることにより劇的に速く表示してくれるようになります。いやぁ。良かった。flash7 と同じ位の動作で、ストレスも感じません。

ちにみに /usr/ports/devel/linux-glib2 はインストールする必要は無いみたいです。linux-glib2 は fc4 用で、fc5 以降は自前で glib2 を持っているので必要無いみたいです。
#だけど、インストールできちゃうんだよなぁ・・。

良かったです。ありがとうございました。

11月 122008
 

渋谷に新しくヤマダ電気が出来たのだけど、そこの特売で今はディスコンのバッファロー(FreeBSD 的には MELCO)の WLR-UC-G が 1,480yen で売っていた。

USB 接続の無線 LAN アダプタで、WindowsXP 上では AOSS と言うソフトウェアルータを利用して無線アクセスポイントになれる。と言うヤツ。

Windows 専用のアプリケーションをインストールすると無線アクセスポイントになれるんだけど、これを FreeBSD に接続してフツーに無線 LAN アダプタに利用できないかなぁ。と思い、購入。まぁ、FreeBSD で動かなければ WindowsXP で iPod Touch 用に利用すれば良いかな。とも思ったんだけど。

で、FreeBSD に早速接続してみた。kldload if_* とかした後で。けど、かわいくないなぁ。ugen0 に落ちてしまった。しくしく。

さてと。格闘はここから。まず、WLR-UC-G はどんなチップが乗っているのか? google で探すのだけど、どうも解らない。Linux 方面での実績を調べてみたのだけど、それも無いみたい・・。あらら。結局どんなチップを使っているのか google では解らなかったので、しょーがない。Windows に付属の CD からドライバをインストールして調べてみた。すると、Ralink Technology Corp. と言う所のドライバを利用しているみたい。ふぅ。

ちなみに FreeBSD に接続した時の usbdevs -v はこんな感じ。

port 5 addr 2: high speed, power 300 mA, config 1, WLR-UC-G(0x0119), Buffalo(0x0411), rev 0.01

 
ただ、こいつ、しゃらくさいことにプロダクト ID を二つ持っている。AP モードにした場合は 0x0119、クライアントモードにした場合は 0x0116 となる。これを覚えておいてと。

これ位の情報が手に入ると後は簡単。FreeBSD で Ralink Technology Corp. 用のカーネモジュールが無いか調べてみたら if_rum と言うのがあるじゃーん。と、言うことで最新の 7.1-STABLE のソースコードを持ってきてエントリを追加します。

でもって出来たパッチはこの辺りにおいておきます。

http://www.icmpv6.org/Prog/FreeBSD_patches/MELCO_WLR-UC-G.patch

プロダクト ID を二つ登録したので AP モードでもクライアントモードでもどっちでも 無線 LAN アダプタとして利用可能です。けど、クライアントモードで利用したほうが安心かも;-)。

実際に利用するするためには色々なカーネルモジュールをロードする必要がありまずが、ここでは割愛させていただきます;-)。 僕が試した感じでは ifconfig rum0 up して、ssid 付けて dhcp でアドレスが付きました。後 ifconfig rum0 scan も利用できました。

FreeBSD において AP モードは利用できないけど、ハードウェア自体は利用できるようになりました。めでたしめでたし。と言うことにしましょう;-)。

10月 142008
 

新しい BB ルータを買ったら、IPv6 閉域網のアドレスが降ってきて、FreeBSD の rtsol で付くようになってしまった。と言うのは前回書いた

この時は「ip6addrctl より先ににまずはルーティングだよねぇ。」って書いたんだけど、いよいよ ip6addrctl が必要になってきた。と、言うのも、僕の場合、/etc/hosts には以下のように書いている。

# google
2001:4860:0:2001::68       www.google.com

 
そー。ipv6.google.com と、言うのがあるんだけど、これを default で見に行くように設定しているのでした。

この設定をした場合、ipv6.google.com に対してアクセスするとき、僕が持っている IPv6 グローバルアドレスである、2001:200:: より、 NTT の Flet’s v6 (以降「IPv6 閉域網」と記述)の 2001:c90:: のほうが「デスティネーションと同じかより大きなスコープのアドレスが優先」されると言う法則により、ソースアドレスの IPv6 アドレス、つまり、自分のマシンのソースアドレスが IPv6 閉域網のアドレスになるので ipv6.google.com にはアクセスできない。と言う事態が発生してしまうのでした。

こらーもう /etc/ip6addrctl.conf 書くしかねぇべや。と言うことで当初書いていたのがこんな感じ。

:ffff:0:0/96 50     0
::1/128       40    1
::/0          30    2
2002::/16     20    3
::/96         10    4
2001:200::/35 10  100
2001:c90::/32  1  101

 
これでもーたいじょーぶだべ。とか思って、しばらく利用していたんだけど、どうもおかしい。やはり、ipv6.google.com にアクセスできない場合がある。で、どういう時にアクセスできないのか?と、言うと ifconfig でインターフェースについている IPv6 アドレスのうち、一番上についているアドレスがソースアドレスとして動作している。と言うことが解りました。

つまり、IPv6 閉域網のルータ通知デーモンと、自宅の rtadvd が動作しているルータから rtsol で IPv6 アドレスを取得した場合、NTT 側のルータが先に反応すると IPv6 閉域網の IPv6 アドレスが一番先に付いてしまうので ifconfig した時に一番上に来てしまう。その状態で ipv6.google に ping6 してもソースアドレスが IPv6 閉域網のものであるために到達性が無い。と言うことですね。

それにしても ip6addrctl の設定ファイルを書いてもなんでじゃー!?どうしてじゃー!?状態に陥るのでこざいました・・。

で、とある有識者、FreeBSD と IPv6 に詳しい人にお尋ねしたところ、自分が利用したい IPv6 は /etc/ip6addrctl.conf に書く必要はないので消せば良いでしょう。ちゃんと RFC3484 読もうねぇ。と言われつつ教えていただきました。

なので、正しい /etc/ip6addrctl.conf の書き方は以下のようになりますねー。

::ffff:0:0/96 50    0
::1/128       40    1
::/0          30    2
2002::/16     20    3
::/96         10    4
2001:c90::/32  1  101 

 
自分が利用したいアドレスである 2001:200::/35 を削除するのが正解なのでした。この設定を有効にした状態でなおかつ IPv6 閉域網のアドレスが ifconfig で見たときに一番上に来ていても、2001:200:: のアドレスをソースアドレスとして ipv6.google に到達できるようになりました。

良かった良かった。そして、ありがとうございました。

なお、その他の設定の意味については以下の URL を参照すれば大丈夫だと思われます。

http://www.imasy.or.jp/~ume/presentation/CBUG-20031129/text0.html

それにしてもこのドキュメントが書かれたのは 2003 年 11 月ですか・・。

ありがとうございました。 ume さん。

ちなみに MacOSX Leopard には ip6addrctl コマンドがありません。そして、やはり ifconfig で一番上に付いた IPv6 アドレスがソースアドレスになってしまうようです。

ただ、もしかしたら rtsol の時に何かしているのかもしれません。FreeBSD とは違って、IPv6 閉域網の IPv6 が、グローバル IPv6 アドレスより先に付くことは無いですね。ネットワークの設定の所でどっちをメインの IPv6 に使うか設定があったかなぁ?今手元に MacOSX が無いので良くわからないのですけど・・。