DELL Inspiron 1300 内蔵無線 LAN を FreeBSD から WPA2 で使う

[2010, 8/14] opera での flash 利用について、ほぼ問題なく使えることがわかったので記述修正。 [2010, 8/4] FreeBSD 8.1 に合わせて部分改訂。

DELL のノートマシン Inspiron 1300 に FreeBSD をインストールして、内蔵 の無線 LAN で WPA2 の暗号化を行って接続を行ったときの顛末です。FreeBSD 7 で使っていたときの記述は(色々間違っていた点などもそのまま残したまま旧ページに移しました。

FreeBSD 8 では、無線 LAN の使い方がそれまでと結構大きく変わっていたの を認識しないまま、気軽にバージョンアップを試みてみたら、それまでの設定の ままでは無線 LAN が全然使えなくなっていて焦った(笑)ので、覚え 書きも兼ねて記録を残しておきます。

本稿は、 総務省の案内通りに

で運用する場合の内容になっています。

FreeBSD 8.1R + DELL Inspiron 1300 + 内蔵無線 LAN + WPA2

親機の準備

まず、あらかじめ無線親機の設定は済ませておきます。念のため、DELL のサ ポートサイトで、本体の windows 用の無線ドライバを新しいものに更新してお きます。

その上で、無線親機を次のような設定にしておき、windows で起動したとき にはちゃんと繋がるようにしておきましょう(これは、動作確認の意味もこめて です)。

後で必要になりますから、SSID と共有キーはメモっておいてください。 SSID を推測されにくい名前にし、ANY 接続を許可しないのは、 総務省の運用 ガイドにもあるように、外部の人に容易に親機を利用・接続されないようにするため です。AOSS などの自動設定の仕組みを使うと、SSID や共有キーは何かランダム な文字列になるのでご注意。その場合 ANY 接続を不可にできないかもしれませ ん。

また、親機の DHCP サーバー機能はオンにして、無線子機には IP address やら何やらが自動的に割り当てられるようにしておきます。

子機の設定

ここからは子機の FreeBSD としての設定です。なお、以下の話はすべ て FreeBSD 8.1 でのものです。それ以前のバージョンでは当てはまらない所も あるのでご注意ください。また、FreeBSD のインストールそのものはもう済んで いて、windows と dual boot で立ち上げ分けられるようになっているとします。

また、以下の FreeBSD での作業はすべてルートになって行うもの とします。

ドライバの選択

まずは FreeBSD で内蔵無線 LAN を認識させ、適切なドライバを入れてやらな くてはなりません。8.1-RELEASE になって、内蔵無線 LAN デバイス用の新しい ドライバ bwn が使用できるようになったので、これを使うのがよいでしょう。

bwn ドライバ

以下の内容は、8.0-RELEASE の時代に、古い bwi ドライバを利用するべく 試行錯誤した結果をもとに、新しい bwn ドライバ向けの内容に修正したものです。

まず、freebsd-update などの手段を用いて、8.1-RELEASE にバージョンアッ プしましょう。そうしたら、/boot/kernelif_bwn.ko があるかどうか確かめましょう。ひょっとしたら、DVD からクリーンインストールした場合は、if_bwn.ko が存在しない かもしれません。

8.0-RELEASE のときは、 DVD からクリーンインストールしたのですが、その ときはbwi ドライバはインストールされませんでした。ひょっとした ら、bwn ドライバについても、同様のことがあるかもしれません。そうだった場 合は、/usr/src/sys/modules/bwn に移って、# make && make install clean してやればよいでしょう。

これだけでは不十分で、さらに、man 4 bwn にある通り、ports の net/bwn-firmware-kmod をインストールしてやる必要がありま す。これは DVD にあらかじめ package としては用意されていないので、無線 LAN とは別の方法で何とか Internet に接続して make install clean してやる必要があります。私の場合、有線 LAN 端子があったので、ルーターの 近くまでマシンを運んで LAN ケーブルで接続して(こちらのドライバ等の認識 には問題なかった)Internet 接続を得ました。

net/bwn-firmware-kmod は、 sysutils/b43-fwcutter を必要とするのですが、 b43-fwcutter のバージョンが古いと必要なファームウェアの抽出 に失敗する(「適合する形式でない」といった類のエラーが出た)ので、先だっ て sysutils/b43-fwcutter を最新の状態にしておいてください。 面倒なら、b43-fwcutter を pkg_delete してから /usr/ports/net/bwn-firmware-kmod/make install clean すれば、最新版の b43-fwcutter も自動でインストー ルしてくれるはずです。

これで、/boot/loader.conf

bwn_v4_ucode_load="YES"
if_bwn_load="YES"

として再起動すれば、bwn ドライバで内蔵無線デバイスの「Dell wireless 1370 WLAN mini PCI card」が認識されるようになります。 dmesg などで、ファームウェアがちゃんと読み込まれていることや、 bwn ドライバが確かに無線 LAN デバイスを認識していることなどを確かめてく ださい。

WPA

このままでは、親機を認識したり暗号用のパスワードを入力したりなどの作 業をまったくしていませんので、当然まだ繋がるわけはありません。その作業を していきます。 FreeBSD Handbook の記述が参考になるでしょう。

まずは、本稿のように、親機を「ANY 接続拒否」にしている場合、 /etc/wpa_supplicant.conf

network {
	ssid="あなたのSSID"
	scan_ssid=1
	psk="あなたの共有キー"
}

のようにしてください。(ひょっとしたら、

network {
	ssid="あなたのSSID"
	scan_ssid=1
	proto=RSN
	key_mgmt=WPA-PSK
	pairwise=CCMP
	group=CCMP
	psk="あなたの共有キー"
}

のように、proto やら何やらを明示的に指定しておいた 方が、接続が確立するのが早いかも…)

なお、共有キーは秘密情報なので、 /etc/wpa_supplicant.conf は root 以外は読めないようなパーミッ ションにしておきましょう。

さらに、/etc/rc.conf

wlans_bwn0="wlan0"
ifconfig_wlan0="country JP WPA"

と書いておきましょう。

そうしたら # service netif start とコマンドを実行して、接続試験をして みましょう(「start」の所は「restart」でないとだめかもしれません)。プロ ンプトが戻ってきたら # ifconfig wlan0 してみると、「status」 の欄が「associated」になり、上で設定した SSID やら、「authmode WPA2/802.11i」なんていう表示やらが見えて、無事繋がってるのがわかるはずです。

そこで # service dhclient start wlan0 してみると、ちょっ と待たされるけど、しばらくするとプロンプトが帰ってくるはずです。そこで # netstat -rn してみると、localhost の他に、ちゃんと無線親機への route が出 来てることがわかるはず。おめでとうございます、無線 LAN による Internet 開通です。

FreeBSD Handbook には、暗号関連の module として wlan_wep, wlan_ccmp, wlan_tkip を boot 時に読み込むよう にしておく必要がある、と読める記述がありますが、これは不要なようです。た ぶん、8-RELEASE までには動的読み込みされるように進化したのだけれど、文書 の修正が追いついていないのでしょう。

あとは、起動時に自動的に各種設定が実行されるようにすれば OK。 /boot/loader.conf への記述は先ほど述べた通りですが、それに 加えて、/etc/rc.conf で、これまで

ifconfig_wlan0="country JP WPA"

と書いてあった所を

ifconfig_wlan0="country JP WPA SYNCDHCP"

と書き換えましょう(※注)。さらに、やはり 8.0-RELEASE の ときは、DVD からのクリーンインストールだと /var/run/wpa_supplicantというディレクトリが作られなかったの で、もし同じ事情の方がいたら、ルートになって # mkdir /var/run/wpa_supplicant としてこのディレクトリを作っ ておいてください。なくても pid ファイルが作れないだけで、正常動作している限りは問題ないよう ですが、rc.d スクリプトの動作のことを考えて、作っておいた方がよいで しょう。このディレクトリのオーナー・グループ・パーミッションがどうなるの が正しいのかはよくわからないのですが、 /usr/share/examples/etc/wpa_supplicant.confctrl_interface の所の説明を読むと、owner=root, group=wheel, mode=rwxr-x--- 辺りが無難そうなので、私は # chown root:wheel /var/run/wpa_supplicant, # chmod 750 /var/run/wpa_supplicant のようにしておきました。

これで、次の起動からは親機との接続も、DHCP の設定も、自動でよきにはか らってくれるようになります。

※ FreeBSD 8 から、DHCP のデフォルトが非同期(NOSYNC)に 変わったので、起動時にホスト名を引ける必要があるプログラムを呼ぶ(ntp を 有効にするなど)場合、起動時の DHCP は、接続が確立してホスト名が引けるよ うになるまでちゃんと待つようにしておかないといけない。そのため、SYNCDHCP を指定しておく。有線接続の場合は単なる DHCP でも問題ない(たぶん、ホスト 名が引けるようになるまでの時間が充分短い)ので、もしかしたら無線の場合も、 暗号化などのややこしいことをしないでオープンに繋がる状態なら、単なる DHCP でも行けるのかも。有線接続でも、場合によってはタイミングを逃 してうまく行かないことがあることがわかりました。

古い bwi ドライバを使っていたときは、ちょっと動作が不安定で、3割くら いの割合で、起動時に DHCP による接続が確立されないことがありましたが、新 しい bwn ドライバではそういう不具合は発症しないようです。やった!

その他

解像度

2008年に FreeBSD 7 を仕立てたときに困ったのが、X window で 1280×800 の解像度の画面にできず荒い画面にしかならなかったことで、そのときは 915resolution の利用で解決したのでした。が、1年間の進歩の成果か、いつの まにか 915resolution なしで自然に 1280x800 の解像度で表示してくれるよう になっていました。xorg.conf にも何も書かなくてすむ…と言う か、今やもう xorg.conf そのものをまったく必要としなくなって いるようです。

あ、と言っても、たぶん /etc/rc.conf

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

としておくことは必要でしょう。

KDE

KDE も、1年前の KDE3 から KDE4 にバージョンアップです。標準の設定だ と、使いもしない cups とかを入れてくれるのが癪だったので、今回は DVD の package は使わず、ports からインストールする(コンパイルに丸1日くらいは かかりますが…)ことにし、オプション選択画面で余計なものをカットするよう に気をつけました(と言っても、正確にはどこをカットすればいいのかよくわかっ ていないんですが、とりあえず目論見は達したようです)。

ports の x11/kde4 を使うわけですが、1個インストールす る度に次のターゲットのオプションを訊かれるのではたまったものではないので、 先に # make config-recursive で設定すべきオプションは全部選ん でおきます(順番がうろ覚えですが、その前に # make fetch-recursive で必要な distfile を全部取ってきておかないとやっぱ り待たされてかなわないことになってしまうかも知れません)。その後 # make install clean すれば、ノンストップでインストールができるはず。 なお、config 時に cups を避けるには…一見してそれとわかる、印刷関連のオ プションをオフにして、あとghostscript のオプションで、プリンタ関係のオプ ションを全部オフにすればいいんじゃないかな。

さらに、メニューなどを日本語化するため、ports の japanese/kde4-l10n もインストールしておきます。 これも、先に # make config-recursive してから # make install clean しましょう(最初、これは kde4 本体に depend する ports だと思ったもんだから、これさえインストールすれば kde4 本体も芋づる 式にインストールされるのかと思っていたんですが、そうじゃないんですね…。 別々にインストールせなあかんのか)。

ただし、これだけだと使用される日本語フォントが貧弱でみっともない画面 にしかならないので、ちゃんとした日本語フォントは別個にインストールする必 要があります(そこら辺も自動で面倒見てほしいものだ…とも思いますが、まあ 使用する日本語フォントの好みというのは人それぞれ(また、画面の大きさなど に応じて適切なものも変わってくる)なので、使用者が好き(&適切)なのを選 択してインストールしてね、ということなのでしょう)。

私の場合は、 FreeBSD Daily Topics での解説に従って、ports から japanese/font-stdjapanese/font-mplus-ipa をインストールしました。それだけで、特に設定を施さなくても、KDE はメ ニュー等の日本語フォントに、適切なものを選んでくれるようです。あり がたい&賢いなあ。 japanese/font-mplus-ipa を入れた理由は、ipa フォントだけだと KDE のメニューなどで、「半角英数」 (ASCII の英数字)の文字間隔が広がりすぎておかしな表示になってしまったか らでしたが、どうもこれは ipa フォントに問題があったようです。ipa フォン トを、先日リリー スされた新版に入れ替えたところ、mplus フォントの方は削除してしまって も表示はおかしくなりませんでした。これは、プレスリリース中にある、半角文 字の文字送りの幅の修正によるものなのでしょう。

あと日本語フォントでは、kterm で JISX0213 の文字を表示させると、サイ ズが合わない unicode のフォントを選んでくれるらしく画面が急に縦に伸びて しまい、以後カーソルの位置がずれて表示されてしまうようになる問題があった ので、それを解決すべく ports から japanese/jisx0213-fonts をインストールしたのですが、それが全然反映されない、という問題に遭いました。

どうも kterm の ports は、上述の日本語フォント関連の整理には追随して いないらしく、インストールされるリソースファイルを見てみる と -alias-fixed-medium-r-normal--14-*-*-*-c-*-*-* なんてい うフォント指定が残っていますね…(あと、オプションで Xaw3d を利用するよ うに指定すると、実際にインストールされる Xaw3d のバージョンと、 japanese/kterm の Makefile に書かれているバージョンが食い違っ ているためエラーになって make が進みませんね。私は Makefile の方を書き換 えてインストールしちゃいました)。

それにしても -*-fixed-medium-r-normal--14-*-*-*-c-*-*-* なんていう指定が並行して残っているんだから、ちゃんと新しくインストールし た JISX0213 のフォントだって使えていいはずなのに…?と思ってよくよく調べ てみたところ、japanese/jisx0213-fonts がインストールされ る /usr/local/lib/X11/fonts/local/ って、X の font path に入らなくなっちゃってるんですね…(xorg.conf を使わな くなったせいか…)。そのせいで kterm からは新しいフォントが認識されなかっ たというわけでした。

試しに font path の設定だけ書いた xorg.conf を用意してみ たところ、それだとそこで設定した font path がデフォルトの font path の前 にまるまるそっくり追加されてかなりムダなことになるようでした。なので、 /usr/local/lib/X11/fonts/local/ のみを font path にした xorg.conf を作っておけばよいようです。私の場合は、追加ディ レクトリが font path の先頭につくのが何となくいやだったのと、 xorg.conf なしというスッキリさを継続したかったので、 ~/.xprofile 中に xset fp+ /usr/local/lib/X11/fonts/local という行を追加して対処しました。

そしてあと、 日本語環境で使うには /usr/ports/japanese/qt4-codecs-jp も入 れとくべきみたいですね。FreeBSD 8 にする前に、FreeBSD 7 で少しだけ KDE4 にしていたことがあったんですが、確かに、そのときは Konqueror で文字 化けして見られない日本語サイトがやたらあって、当時は原因がよくわからず放っ たらかしにしてました。これを入れてみたところ、確かに問題は解消しています。

それから、今 USB メモリで他の windows 機とのデータの相互受け渡しをし ているんですが、その USB メモリに windows 機によって作られた半角カナのファ イル名も、この qt4-codecs-jp を入れることにより Dolphin 上で文字化けしな くなりました。

起動したら自動的に kdm が立ち上がってくれるようにする設定は、英語版のハ ンドブックに書いてあります。注意点として、以下の2つを挙げておきます。

後者の方は、旧稿で書き忘れて いた点で、FreeBSD 7 + KDE 3 のときもすっごくハマった所 だったんだけど、何かこれについて書いてくれた人ってほとんど見かけないな あ…。それとも、これって私の所だけ?

あと、KDE 3 から 4 に変わったとき割と不満だったのが、K メニューの「終 了」から「シャットダウン」を選んだとき、電源が切れるところまで行かず に halt するだけで止まってしまうことでした。「何でやねん」と思って調べ てみたところ、/usr/local/kde4/share/config/kdm/kdmrcHaltCmd/sbin/shutdown -p now にしてやらな いといけないようです(Default is "/sbin/shutdown -p now" なんて書いてあるくせに…)。これは、K メニューから「KDE シ ステム設定→『詳細』タブ→ログインマネージャ→『シャットダウン』タブ」と 選んでも、一般ユーザーでは変更できないようですね。root になって直接上記 ファイルを編集する必要があるようです。

それから、いろいろ調べていたときの副産物として、 /usr/local/kde4/share/config/kdm/Xsession にちょっと不備が あるらしきことに気づきました。私は tcsh を使っているのですが、csh 系のシェ ルの使用者の場合、35 行目付近の

$SHELL -c "if (-f /etc/csh.login) source /etc/csh.login; if (-f ~/.login) source ~/.login; /bin/sh -c export -p >! $xsess_tmp"

というのは、「export -p」の部分を単一 引用符ででもくくって

$SHELL -c "if (-f /etc/csh.login) source /etc/csh.login; if (-f ~/.login) source ~/.login; /bin/sh -c 'export -p' >! $xsess_tmp"

としなければいけないですね。これは、「csh 系使用者の 場合は、/etc/csh.login~/.login で設定され る環境変数の値を、kdm からログインする場合も有効にする」という目的の行な のですが、上のように変更しないと -p が export のオプション引数とならず、 無意味な行を生成してエラーを増やす役にしか立っていません。

一方、以前困っていた「音楽 CD が鳴らない」というのは、 /dev/cdrom がなかったからだとわかりました。CD を挿入すると KsCD が起動してくれるのはいいんだけど、再生ボタンを押してもウンともスン とも言わないのにほとほと困り果てていたんですが、やっと理由がわかりました よ…(何がまずいのか、エラーメッセージくらい見せてくれればいいのに黙りっ きりなんですよねえ…。~/.xsession-errors を見て、 「/dev/cdrom がない」というエラーなんだとわかりました)。いやまあ確かに、 KDE の設定パネルから KsCD を選ぶと、「CD デバイスを指定する」という欄が あって、デフォルトではチェックが外れてオフにはなっているものの、そこには グレーで /dev/cdrom とデフォルト値らしきものは書いてあったけどさ…。

結局、/etc/devfs.conf

link    acd0    cdrom
という行をコメントアウトして、KsCD で音楽 CD がかけられるようになりまし た(何か曲名・CD タイトル名らしき辺りが文字化けするけどね!)。

そして、旧稿の「ghostscript が、日本語のフォントを認識してくれず文字化けする」という問題も解決 していますね。上の japanese/font-std での整理統合がたぶん効 いているのでしょう、Ryumin-Light と GothicBBB-Medium というそのものズバ リのファイル名で適切な open type フォントが入れてあるおかげで、特にこれ と言った設定は何もしなくても、問題なく日本語 ps ファイルが表示できるよう になっています。

とは言うものの、 日本語 PDF(フォントが埋め込んでないもの)を okularなどで表示させると、日 本語部分が全部欠けてしまいますね………(ASCII 文字の部分はいいのですが)。 PDF 表示の下請けには gs を利用していると思うんですが、gs もフォント非埋め 込みの日本語 PDF を引数に与えて起動すると、エラーを起こして動作してくれま せん。これはどうすればいいのか………。 http://gihyo.jp/admin/clip/01/fdt/201010/22 の ~/.fonts.conf ファイ ルを使わせてもらったら、日本語フォント非埋め込みの pdf でも、okular で日 本語がちゃんと読めるようになりました。ただ、これは "Ryumin" と "GothicBBB" に対する代替フォントの割り当てが逆になってるっぽい (Ryumin にゴチック系のフォントが、GothicBBB に明朝系のフォントが指定さ れてる)ので、そこは自分の判断で入れ替えました。結果、特に問題なく表示さ れるようになっています。 ~/.fonts.conf のお陰というよりも、ただ単 に ipa-uigothic を入れたことによるというだけのことのようです。プロパティ を見てみると、明朝体・ゴシック体共に IPA UI ゴシック体で表示されてます ね…。「特に問題なく表示されるようになっています」はかなり的外れでした。 おまけに、~/.fonts.conf は、「あってもなくても対して影響ない」程度でしか なかった模様です。すみません。

インストール・起動にまつわる話はこれくらいにして、KDE の運用にまつわ る話に移りますが、KDE 4 になって一番困ったのが、パネル(タスクバー) 上に、アプリケーションを起動する「ボタン」の作り方がなかなかわからなかっ たことでした。確か、KDE 3 のときは、パネル上で右クリックして表示さ れるメニューを辿っていって作れたはずだったんですが…。

いや、元から KDE メニューに登録されてるアプリケーションなら簡単なんで すよ。メニュー内の各項目上で右クリックすれば「パネルに追加」という項目が ちゃんとある。だけど、KDE アプリ以外の、kterm やら emacs やらを起動するボ タンを作りたくても、パネルの空き領域を右クリックしようが、デスクトップを 右クリックしようが、頑としてそれらしき項目を表示してくれないのです!もう とにかく、KDE メニューに登録されているもの以外は絶対にボタン化さ せない、という鉄の意志で貫かれてでもいるかのようです。

しょうがないから document を漁って、アプリケーションを新たに KDE メ ニューに登録する方法を探しても、出てくるのは KDE 3 のときのやり方が主で、 KDE 4 では使えないんですよねえ…(文書の更新が追いついていないんでしょう ね)。やっと見つけた KDE 4 準拠の文書にしたがって、kAppFinder なるメニュー 更新ツールを起動して、説明通り「スキャン」ボタンを押しても、kterm を見つ け出してくれません。どうもこれ、あらかじめ候補になることが可能なアプリケー ションの一覧表を持っていて、その中にあるものしか選択できるようにならない みたいですね…。なんて使えないんだ!こっちは任意のアプリを起動させてやり たいんだよ!

もうどうやっても kterm のボタンは作れないので、仕方なく Alt+F2 で毎度 「kterm」と打って kterm を呼び出すという、不愉快でストレスが溜まる日々を 送っていたのですが、ある日、また色々調べている最中、ようやく KDE メニューの「K」アイコン上で右クリックすることで、「メニューエディタ」とい うものが起動できることがわかりました!コレですよ、コレ!!私が欲 しかったのは!!!これでやっとこさ、任意のアプリケーションをKDE メニュー に配置することができました。長かった…。

いやこのメニューエディタ、何でこれしか起動方法 がないの!?「K」アイコン上で右クリックする以外にここに到達 する方法がないってのは、操作性悪すぎるだろう!!もっとこう、パネル上 での右クリックとか、デスクトップ上での右クリックとか、そういう所から「も」 行ける道筋をたくさん用意しといてよ!KDE メニュー自身の中にすらない んじゃ、そんなものがあるということすらわかんないじゃん!!………と、 さすがにこれには「ユーザーをバカにするのもいい加減にしろ!」的な不満が爆 発するのを抑え切れないですね。

いやもちろん、コマンドラインから呼び出すことはできるんであろうにしろ、 それはそもそも「そういうものがある」ということがわかってないとできな いですよね。「メニューエディタ」なるものがあって、それを使えば KDEメ ニューに新しい項目を追加したり、いらない項目を除去したりというということ ができる、ということを明確に知っていて初めて、「それを起動するコマンドラ インって何だろう?」と探す・調べるという発想に至ることが可能になるのであっ て、「そもそも、どうすればメニューに自由に新規項目が追加できるの?という ことがわからなくて、試行錯誤している段階」ではそんなものに到達することは 絶対にできない。

ともあれこれでやっとこさ kterm と emacs(と、ついでに、opera と ssh-askpass)を KDE メニューに登録でき、そこからパネルにボタンを追加し、 あとログイン時の自動起動項目にも追加することができました(「K アイコン→ システム設定→『詳細』タブ→自動起動→プログラムを追加」で OK。ちなみにこ の「自動起動」、単独だとこの名称は何を指すのかわかりにくいと思う。単に 「自動起動」と書いてあるだけだと、CD やら USB やらを挿入したときに自動で どんな動作をするかの決定に関わる設定項目、という感じがします。まあ元の英 語が「autostart」なんでしょうからそうなっちゃうのも無理もないんでしょうけ ど、例えば「初期起動項目」とでもしておけば、少なくとも私にはもっとピンと くる名称になります)。やれやれ、長く、苦しい戦いだった………って、私の探 し方が悪いのか、こういう基本的なことも、web 上でやり方を書いてくれる人っ ていないんですよねえ…。それとも、KDE やら GNOME やら使う人は、それなりの 本を買って臨むのが常識であって、徒手空拳で利用しようという態度そのものが 間違ってるのでしょうか?(それはちょっとイヤだな)

Flash

FreeBSD 8 にして、ひとつ期待していたのが「Flash がまともに見られるよ うになるのではないか」ということでした。それまでの FreeBSD 7 だと、linux バイナリ互換機能のバージョンが低くて、linux の flash plugin の利用がうま くいかなかったんですよね(もうちょっと環境構築を気合入れてがんばればでき たのかもしれませんが、そこまでする気は起きなかった)。FreeBSD 8 では、 opera でも問題なく flash が再生されるように なりました。世間一般では firefox への対処法が紹介されることが多いようで すが、ここでは FreeBSD:Opera で flash を参考に、最新の opera 10.61 で flash を利用 する方法をまとめておきます。

まずは、FreeBSD Daily Topic の手順を参考に、linux バイナリ互換機能と www/linux-f10-flashplugin10 をインストールします。 ports tree は事前に最新版にしておいてください。 なお 8.x-RELEASE では標準で linux_base-f10 に対応しているので、 /etc/make.conf に対する追記は不要です。タイムゾーン設定の追 加と /etc/rc.conf への追記、/etc/fstab への追 記、及び日本語フォントに関しての設定はしておきましょう。なお、opera で flash を利用するだけなら nspluginwrapper は不要です。firefox や Konqueror など、他のブラウザでも flash が利用したい場合は nspluginwrapper もインストールし、そこの記述通りのコマンドによって互換 plugin をインストールしておきましょう(互換 plugin は ~/.mozilla/plugins/ に格納されます)。

そして、www/opera-linuxplugin をインストールすれば、それ だけで OK のはず………なのですが、opera 10.61 対応になってから、以前のバー ジョンでなされていた処置がなぜか省略されてしまい、それだけでは opera で flash が利用できなくなってしまいました [2010,8/17] 修正されました。もう、 www/opera-linuxplugin をインストールするだけで大丈夫なはず。 (おそらく、後日の 更新で修正されると思います)。以下のような処置を手動で追加することにより、うまくいくよう になります。

まず、 /usr/local/lib/opera/ に行きます。そこに operapluginwrapper.linux というファイルがあることを確認 しましょう(なければ、上記の www/opera-linuxplugin のイ ンストールがうまく行っていないということですから、やり直してください)。 そしたら、

# mv operapluginwrapper operapluginwrapper.freebsd
# cp /usr/ports/www/opera/files/operapluginwrapper .
# chmod +x operapluginwrapper
のようにして、元々 opera に付属している operapluginwrapper を退避して、ports についている script 版を代わりに設置しておきます。これ でうまく動くようになるはずです。YouTubeニコニコ動画 のような、flash を重 度に使っているようなサイトでも問題はないようです。

[2010, 8/16] ※ 以前、opera のプラグイン 探索パスをいじったことがある場合(当ページの古い記述を参考にするなどし て)、それが祟って flash が正常に動作しないことがあるかもしれません。そ のような場合、opera を起動する前に ~/.opera/pluginpath.ini を削除しておいてください。

これを書いた直後に flash の ports の更新も入りました。なお、2010年8月14日現在では、 www/linux-f10-flashplugin10/ で提供される flash の バージョンがセキュリティーホールありの古いものなので、これは手で更新して しまいましょう。一旦 opera を終了し、 /usr/ports/www/linux-f10-flashplugin10/Makefile を覗いて、 adobe のファイル置き場を確かめ、そこから install_flash_player_10_linux.tar.gz を取ってきます。これを展開すると libflashplayer.so というファイルが 1 個だけ出てくるので、こ れで /usr/local/lib/npapi/linux-f10-flashplugin/libflashplayer.so を置き換えてしまいます。こうしてしまっても、動作に特に影響はないようです。

suspend/resume

suspend/resume も問題なくできています。関係あると思われる設定を書いておきます。

  1. /boot/loader.confは、http://lists.freebsd.org/mailman/htdig/freebsd-mobile/2007-January/009441.html を参考に
    acpi_video_load="YES"
    
  2. を追加。
  3. /etc/rc.resume は、http://lists.freebsd.org/mailman/htdig/freebsd-mobile/2007-January/009443.html および http://www.running-dog.net/2007/05/hwacpivideoout0active.html#comments を参考に、
    sleep 2 && \
    sysctl hw.acpi.video.ext0.active=0; \
    sysctl hw.acpi.video.lcd0.active=0; \
    sysctl hw.acpi.video.lcd0.active=1
    
    を追加しています。試してませんが、sleep 以外の行はひょっとしたら active=1 の行だけでもいいのかもしれません。 あるいは、こちら にあるように、/etc/devd.conf に手を入れて、パネル のクローズとオープンに分けて sysctl を行うのもよさそう です(未確認)。 ファイル内には、「無線 LAN が suspend 後再接続しないようだから、こ こで再接続させるようにしろ」みたいな指示がありますが、私の場合は suspend しても問題なく繋がるようなので、ほってあります。
  4. /etc/sysctl.confは、 Running-Dog さんの所を 参考に
    hw.acpi.video.lcd0.active=1
    hw.acpi.standby_state=S3
    hw.acpi.suspend_state=S3
    hw.acpi.lid_switch_state=S3
    
    という行を追加してあります。これで、LCD パネルを閉じると自動的に suspend して、開くと自動的に復帰してくれます。復帰に当たって、特に キー入力等の刺激を与える必要はありません。開いただけで勝手に動き出 して、液晶画面も点灯してくれます。 上の 4 行のうち、最後の行を省くと、パネルを閉じると液晶が消灯する だけで suspend はしません。パネルを開くと再点灯してくれます。これ はこれで役に立つ、という人もいるでしょう。


コンピュータ関連のページ目次へ
トップページへ
井汲 景太 <ikumikeita@home.jcom.ne.jp.NOSPAM.>(迷惑メールお断り)
最終更新日: 2011年2月2日