![]() |
running-dog.net。しかし、自分が一番落ち着かない。かけまわっている子犬のような状態。そんな毎日をブログで綴ってみました。 FreeBSD・PC・UNIX・プログラム・MacOSX・iPhone3G ネタなど技術的・趣味的なネタについて色々書いてみたいと思います。 また、最近は Microsoft Windows ネタも増えてきたかなぁ。などとも思っておりますが、併せて宜しくお願いします。 |
|
カテゴリー:STABLE・CURRENT
検索
カテゴリー
フィードを取得
Special Thanks.
Please click now!!
PRIMERGY MX130 S2 を FreeBSD で利用する。
前回のエントリーでは「購入した。」って書いたのですが、今回は実際に FreeBSD で動作確認したことについて書いてみます。
インストールには FreeBSD/amd64 9.0-RELEASE を利用したのですが、その後 9.0-STABLE にしました。なので今の環境は 9.0-STABLE です。そしてこの記事の内容も 9.0-STABLE についてです。気がついた点をツラツラと書いてみます。
1. 温度取れない
どーあがいても CPU 温度が取れません。amdtemp.ko や ports の sysutils/k8temp を利用しても CPU の温度が取れません・・。orz。 CPU のステッピングの問題なのかマザーボード(とか ACPI)の問題なのか定かではありません。ただファンの音だけで大体の温度を感じることしかできません・・。
2. Cool`n'Quiet 2.0 は無事に動作する
sysctrl の dev.cpu.0.freq_levels で CPU 可変になります。ただ、BIOS の設定で表示が二種類できます。前回のエントリで掲載した sysctrl の結果では以下のように表示されています。
|
ところが BIOS の設定で HPC (High Performance Computing) というのがあって、この設定を disable にすると以下のように表示されるようになります。
|
BIOS の設定で HPC を無効にしたほうが良いですね。PRIMERGY MX130 S2 というのはラックにドドドと入れて HPC にも対応する製品のようですしね。
ちなみに HPC disable 時の dev.cpu.0.freq_levels の値には消費電力が表示されるようになりましたが、この値はちょっと変ですね。FX-6100 は Max 3.3GHz での動作時には 95W のはずなので、表示されている値を七倍する必要があります。しかし、FX-6100 ってのは CPU クロック変動の幅が広いですなぁ。
3. powerd 起動っ!! しかし・・
上記のように Cool`n'Quiet 2.0 が動作するので powerd を起動したら以下のようなメッセージを延々吐き出すようになってしまいました。
|
dev.cpu.0.freq では速度が可変になっているので動作的には問題が無いのですが、結構ウザいです。ウェブで色々探してみると powerd を落とせとか /boot/loader.conf に以下の設定をしろ。みたいに書かれています。
|
が、これらの対処法を適用すると CPU クロックが Max の 3.3GHz に張り付いてしまうのでもったいない。じゃ。ということでソースコードを改修し、このログを出ないようにしました;-)。 /usr/src/sys/kern/kern_cpu.c の 406,407 行目の device_printf の部分をコメントアウトしてカーネルを再構築するだけで作業は終了です。ただ単にメッセージを出力しなくするだけの改修です。
4. smartctl でディスクの温度を取る
こちらも BIOS の設定で取れる場合と取れない場合があります。 BIOS の SATA Configuration の設定で External SATA Port を enable にすると smartctl が /dev/ada0 を見つけられなくなります。このオプションは disable にしておいたほうが良いでしょう。
僕は Seagate の ST1000DM003-9YN162 という、 1 テラ、 1 スピンドル、 1TB の HDD を利用しているのですが、smartctl の Airflow_Temperature_Cel を見ると今のところ温度は 20 度前後で推移しているので PC 内の換気が上手く行っているとか HDD 自体の温度が高くならないとか、そんな印象を受けました。
5. シリアルポート
シリアルポートのある PC をいじるのは随分と久しぶりです。随分前から sio0 から uart0 に変更になっているのでどうだろう?と思いトライして見ました。以前よりも設定はグっと楽になりましたね。順番にその設定内容を見ていくことにしましょう。
o. /etc/ttys の変更
ttyu0 というのが uart0 に対応したシリアルポートになります。default の設定から以下のように変更します。
|
速度は 9600 のままとしておきました。
o. /boot/loader.conf に追加設定
以下の行を追加します。
|
設定が完了したら PC を再起動します。するとあとは無事にシリアルポートが利用できるようになるかと思います。 /boot.config も設定してないし、boot2 とかも変更する必要がありませんでした。
あ。しかし、uart0 の認識にも二パターンありました。
起動時の認識がこのパターンだと利用できません。
|
こちらのパターンで認識すると利用できるようになります。
|
どうして上記のようになるのか解らないのですが、 kldload uart0.ko すると上のようになるような気がします。僕の場合は結局カーネルモジュールは利用せずに、カーネルコンフィグのファイルに device uart と書いてしまいました。
まぁ、 uart に限らず、今回はカスタムカーネルのコンフィグファイルを利用したのですが、 GENERIC カーネルでは無事に動作するのにカスタムカーネル+ロードモジュールでは動作しないということが多々おきました。以下にその一例を書いておきます。
・パーティションを認識してくれなかった -> options GEOM_PART_GPT を消したのを復活
・cs0 を認識せずリブート -> ロードするカーネルモジュールの見直し
・カーネルパニック -> bvox のモジュールを /boot/loader.conf に書くのをやめた
などなど・・。けっこう苦労が多かったのは PC が駄々っ子なのか 9.0-STABLE が駄々っ子なのか・・。もう既に何台も 9.0-STABLE を利用しているので安心しきっていた部分はありましたね。
これでだいたいサーバとしての設定が完了したかなー。と、言う感じはします。良かった。それにしても CPU 温度が取れないのはちょっと痛いですね。STABLE 利用してバージョンが上がるのを待つかなぁ。と言う感じがしないでもないです。
まぁ、僕的には今回のお買い物は一応満足の行くものとなりました。ちなみに今ではもう既に virtualbox-ose-4.0.14 で Windows Server 2008 R2 が動作しています。ゲスト OS には二個の CPU と 4GB のメモリを上げているのですが、そーすると Windows Server 2008 R2 ってのはサクサク動作するんですねぇ。感激;-)。
PRIMERGY MX130 S2 のネタはこれで終りですが、機会があれば、また update があれば書いてみたいと思います。
自宅サーバを新調。
自宅で動作しているサーバがあるのですが、このたび新調しました。今回購入したのは今話題となっている富士通の PRIMERGY MX130 S2 です。定価で 12,800yen ですが 1,000yen 割引でした。
最初のスペックはたいしたこと無いのでここにアキバで PC パーツを買ってきてドドドっとハデにパワーアップしてみました;-)。

強化・変更した点は以下の通り。
・CPU: FX-6100 (6Core 95W)
・メモリ: 16GB (4GB x 4)
・HDD 1TB (1 プラッタ 1GB)
・NIC の追加
かかった費用は CPU 12,000yen、メモリ 6,000yen、HDD、9,500yen、NIC 1,000yen って感じでしょうか。本体含めて 40,000yen 弱で豪華な構成となりました;-)。
それにしてもデスクトップ PC を購入するのってどれくらいぶりだろう?今使っているのが Socket AM2 のAthlon64 X2 なのでもうずいぶん古いので 4,5 年ぶり?って感じです;-)。
さてさて。この PC は自宅サーバ用なので早速 FreeBSD/amd64 9.0-RELEASEをインストールしてみました。ここから先は FreeBSD でのインストールや使い勝手についてちょっと書いてみたいと思います。
・FreeBSD/amd64 9.0-RELEASE のインストール
CD-ROM からブートして FreeBSD Installer でインストールしていきます。 HDD のパーティションのところで auto を選択したら GPT(GUIDパーティションテーブル)になってしまいました。 MBR が好きな方は明示的に指定したほうが良いです。
8.2-RELEASE などと同様の MBR でインストールするとパーティション名は ada0s1 とかになるのですが、GPT を利用すると ada0p1 になります。 MBR は "s" で GPT は "p" ですね。
後もう一点。GPT を利用する場合はカーネルコンフィグファイルから options GEOM_PART_GPT を消さないようにしましょう。もし消してしまった場合はカーネルモジュールから geom_part_gpt.ko をロードするようにしましょう。
GPT を利用していてこのオプションが無い場合、 mount root fs のところで mountroot> プロンプトが表示されデバイスを指定してもマウントできない状態になってしまいます。
注意点はこの一点だけでした。後は比較的すんなりと動作します。以下は FreeBSD/amd64 9.0-RELEASE の情報です。必要であれば見てください。
・FreeBSD を利用していて気がついた点
1. FX-6100 もサクっと認識するしメモリも 16GB 利用できる状態です;-)。
2.snd_hda が存在するので pcm0 が生えてきます。が、スピーカを接続する端子がないので音が出ません。マザーボード上にフロントに出すピンがあればそこから利用かのなのですがねぇ。PCI スロットがもったいないとか、ロープロファイルに対応していないサウンドカードとかあるので、USB-DAC を利用したほうが良いかもしれません。
・ベンチマーク
FreeBSD をインストールした誰もが一度はベンチマークとして確認する行為をしてみました;-)。 /usr/bin/time make buildworld の結果です。
比較は現在サーバとして利用している PC と同じスペックの PCで、以下の二つでの比較です。
AMD Athlon 64 X2 Dual Core Processor 4600+ (2456.27-MHz K8-class CPU)
AMD FX-6100 Six-Core Processor (3300.07-MHz K8-class CPU)
・FX-6100
o./usr/bin/time make -j6 buildworld
2057.94 real 7609.08 user 1234.47 sys
o./usr/bin/time make -j6 buildkernel
436.09 real 786.07 user 137.37 sys
・Athlon64 X2
o./usr/bin/time make -j2 buildworld
57596.74 real 8917.03 user 1011.26 sys
o./usr/bin/time make -j2 buildkernel
846.78 real 948.68 user 120.66 sys
この二つの違いは以下かな。
・CPU クロック
・コア数
・メモリ
CPU の数だけ -j オプションに付加します。 FX-6100 は 上記の違いもあるので Athlon64 X2 の三倍くらい行ってくれるかなぁ? とか思ったのですが 2.5 倍程度でしょうかね。シャア専用にはなれない;-)。
さてさて。この PC は 6Core でメモリを 16GB 積んだので何にしようか悩んだのですが、ベース OS は FreeBSD にしてそこに Virtualbox をインストールして Windows Server 2008 R2 を動作させ、自宅で SharePoint Server でも起動するかねぇ。とか、漠然と思っています;-)。と、いうか、Windows Server は検証の意味も込めてインストールすることは決まっているのですけどもね。
と、いうことで PRIMERGY S2 は FreeBSD においてもいとも簡単に動作しております。
あ。一点。シリアルポートがイマイチ動作しないのは今から再度確認する予定;-)。
FreeBSD 9.0-BETA1 試してみました。
現在、自宅のサーバは 7.4-STABLE でデスクトップ PC と NotePC は 8.2-STABLE にしています。そして、IPv6 ルータとして動作しているちょっとワンパクな EeePC は 7.4-STABLE だったんだけど、これを 9.0-BETA1 にしてみました。
このブログでは過去に何回か EeePC について取り上げていたのですが、8 系 STABLE もちょっと怪しい動作だったので 7.4-STABLE にしていたのだけど、それでも動作が怪しいので今回自宅内の FreeBSD の中ではいち早く 9.0-BETA1 にしてみた。という感じです。まぁ、インストールされている ports の数が一番少ない。ってのもあるんですけどね;-)。
では早速 9.0-BETA1 をインストールした感想などを書いてみたいと思います。
0. EeePC のシステム構成
EeePC は内蔵の SSD が 4GB しかないので 60GB の外付け USB HDD を接続し、そこに FreeBSD をインストールして起動しています。
ルータなので NIC は二個利用しています。一個は内蔵 NIC の ae0 です。もう一個は USB の BUFFALO LUA2-TX LUA2-TX と言うヤツで、これは 7.4-STABLE では aue0 として認識されていました。
内蔵無線である ath0 は今回利用していません。
1. インストーラ変わったね
最初、9.0-BETA1 を CD-R に焼いて、母艦に EeePC で利用する HDD を接続して久しぶりにクリーンインストールしようかと思ったのですが、インストーラが大きく変更されていて焦りました。母艦の HDD をケーブルからはずせば良かったんだけど、接続したまま CD で起動したら母艦の HDD しか認識してくれない。
USB HDD は通常 /dev/da0 とかで認識されるんだけど、見えなかったのでシューリョー。って感じ。結局、CD-R からのクリーンインストールは諦めました。
2. csup からバージョンアップ
EeePC は 7.4-STABLE の状態で起動するのでこの状態で csup して一気に CURRENT に持って行きます。 EeePC の CPU は遅いので make buildworld+make buildkernel は大体 14 時間位かかりました。orz。
9.0-BETA1 の起動後に注意する点としてはやはり USB 回りですね。以前に書いた「FreeBSD RELENG_8 で USB 機器からブートする。」って設定が必要です。
あと、7.4-STABLE からのバージョンアップの場合、すっかりと忘れていた(8 系 では既にそうなっいる)のですが、USB コントローラもカーネルモジュールになっていたのですね。カスタマイズカーネルを利用する場合には /boot/loader.conf に uhci.ko ohci.ko ehci.ko をロードするようにしないと、USB が一切認識してくれないです。
とまぁ、こんな感じで /usr/src/Makefile の中に書いてある手順に従うとバージョンアップが終わります。
あ。一点書いておきましょう。make delete-old とか make delete-old-libs するとひたすら "y" と打たなければならずかぁなりしんどい。そんな場合は以下のコマンドを;-)。
|
ドドドと削除してくれます;-)。
4. ports のインストール
ports の make config のときの青い画面の動作がちょっと変わってビビリました。[X] hoge でメニューを選択したあとに TAB キーを押すと [ OK ] から [ CANCEL ] にカーソルが動いてしまう。選択したら TAB キーを押さずにそのままリターン。みたいな感じになりました。
それにしても emacs のインストール時、全てのオプションを WITHOUT_hohe=true にしたのに X をインストールしようとしてしまう。 /etc/make.conf には WITHOUT_X11=yes って書いてあるのにねぇ。なので emacs は結局 ports からインストールせずノラビルドでインストールしました。
ちなみに サーバの場合、/etc/make.conf には以下が書いてあると良いかと思われます。
|
WITH_THREADS=yes を書くと perl とか python は -threaded でインストールされます;-)。
3. 起動後の各種設定
/etc/rc.conf のネットワーク設定がガラリと変わりました。これはじっくり見て正しい設定をしたほうが良いかと思われます。
IPv6 回りで気がついた点として ipv6_enable="YES" が無くなり ipv6_activate_all_interfaces="YES" になりました。
でもって ipv6_activate_all_interfaces は "YES" でない場合は ifconfig_IF_ipv6 で判断して、 "_IF_" のインターフェースにしか link local アドレスが付加されません。今までは全てのインターフェースに link local が付いていただけに「すげー。」とか、ちょっと思います;-)。
ちなみに link local が付加されないインターフェースってのは「IPv6 を利用しないインターフェース」って認識で良いと思います。
あとは、alias アドレスの設定方法が変わりましたね。 IPv4/IPv6 で同一の設定になりました。
ipv6_prefix_IF="" の設定も驚きました。今までは最後に "::" とか付けていたのですが、これを付けるとダメみたいです。
以下、簡単な例です。
|
あ。aue0 名前が変わりました。8 系からかな?僕は 8 系で aue0 使ったことないので解らないのて゛すが ue0 になりました。wlan0 と一緒で USB NIC は全て ue0 になるのかなぁ? USB NIC は一種類しか持ってないので良く解らないのですが。
4. はまり道
上記 IPv6 のネットワーク設定をしたのですが、一番はまったのは gif0 に link local アドレスが付加されない。ってところでしょうか。gif0 に link local が無いので IPv6 ルーテイングができずにかぁなり焦りました。
で、詳しい方に irc で教えてもらったのですが、 /etc/rc.d/auto_linklocal があるとダメらしいです。合わせて /etc/rc.d/network_ipv6 も残っていたりする。この二つの rc ファイルは 8 系までのファイルで 9 系というか、現在の CURRENT では不要なファイルになっています。
/usr/src/Makefile 内に書かれている内容でバージョンアップするのですが、そのとき 9. mergemaster ってのがあって、それを実行します。この時、以下のように聞かれます。
|
ここで「削除するのはイヤ。」とか思いとどまって "n" などと叩いてしまうと gif0 に link local アドレスが付加されることは無いのであります。上記二つのファイル (auto_linklocal と network_ipv6) は CURRENT では既に不要なファイルなので、サクッと "y" を叩いて削除してしまいましょう;-)。
あとは ipfw の設定とかまだもう少し残っていたりしますが、一応ここまでがこの週末に行なった作業なのであります。
あとはもう少し使い込んでみてから色々やってみたいと思います。 ath0 なんかも試してみたいですね。
CURRENT に慣れてきたら NotePC とかデスクトップ PC に導入したいと思います。
それにしても /etc/default/rc.conf はじっくりと眺めたほうが良いかもしれないです;-)。あ。あと man rc.conf(5) も;-)。
USB 無線 LAN 色々、FreeBSD で試してみた。
ThinkPad X100e 内蔵の Intel Centrino Advanced-N + WiMAX 6250 って無線 LAN は 8.1-STABLE を利用すると iwn0 として認識するんだけど、利用できない。9-CURRENT では if_iwn.c とかビミョーに更新されているので、もしかしたら動作するかもしれませんが・・。
と、言うことで、USB の無線 LAN を利用することにしました。でもってできることなら小型が良いなぁ。と思い、既に持っているもの二つと、新たに三個も購入してしまいました・・。orz。

これが僕が持っている USB 無線 LAN のオールスターキャストです。右側の白い、大きいヤツは前回書いていますね。if_rum と if_run で認識されるヤツです。
今回新たに購入したのは左側の黒いの二つと、下のちっこい白いの一つ。順番に見ていくことにしましょう。
一つ目。いちばんちっこい、黒いヤツ。
こいつは FreeBSD では動作しません。チップセットは Realtek RTL8192CU を利用しています。現在、FreeBSD では Realtek RTL8192CU に対応したドライバはありません。orz。
ただ、このまま、何もせずに使わないのはちょっともったいないので、ちょっと if_ndis ドライバで試してみることにしました。 FreeBSD の ndis ドライバは以前は PCMCIA カードにしか対応していなかったのですが、最近は USB デバイスにも対応したので、試してみる価値あり。と言う感じなのですね。
まずは Windows7 x64 用のドライバを持ってきます。そして、FreeBSD 上で ndisgen コマンドを叩きます。
|
試してみると ndisgen コマンドがエラーになります。 net8192cu.inf の最後の行に改行コードが無いのでエラーになっているようです。なのでエディタで net8192cu.inf を開いてリターンキーを一発叩いてあげて再度実行すると、おぉ。できました。rtl8192cu_sys.ko が完成したので /boot/modules/ に入れた後、kldload します。が・・。
Windows7 x64 のフツーのドライバを利用すると ugen に落ちてしまい ndis0 では認識してくれません。 XLINK 用のドライバを kldload するとカーネルが凍り付きます。と、言うことで、今のところ、Realtek RTL8192CU なチップの USB 無線 LAN は使えないかなぁ。と言う感じなのであります。
続いて二個目。ちょっと大きめの黒いヤツ。
一個目の PLANEX GW-USValue-EZ は usbdevs をろくすっぽ見ずに購入したので大失敗です。今度はちゃんと下調べして購入しました。この USB デバイスは if_run で動作するようです。9-CURRENT には man に run(4) が存在していて、そこにはちゃんと Buffalo WLI-UC-GN と書いてあるのです。
がっ!! こいつも動作しませんでした。と、言うか素直に AP に接続できない・・。 orz
usbdevs にもちゃんとエントリがあって kldload if_run するとサクっと認識してくれます。おっ。やったーっ!! ってなるんですけどね。しかし、WPA で接続しようと思い /etc/wpa_supplicant.conf を以下のように書くんですけど・・。
|
ドライバ的には認識するのですが WPA を利用して AP を検索しようとしても WLI-UC-GN 本体のほうで wpa_supplicant.conf に記述した内容を上書きしてしまいます。ap_scan=2 で AP を探索したりとか・・。
なので、ドライバ的にはちゃんと認識するのですが、デバイス的には利用できないのでありました。ただ、利用できない(AP に接続できない)だけでないのがこれまた痛い。あるタイミングで突然 AP に接続できたりするし、全然全く AP に接続できない場合もある。
ブート時には全く AP に接続できないので実質的には FreeBSD では利用できない USB 無線 LAN の内の一つです。購入時には十分に注意しましょう。
で。三個目。
いやぁ。小型で、ようやっと動作するものに巡り会えました。man run に掲載されているものをウェブで調べて Amazon.co.jp で購入しました。999yen。ふぅ。
こいつは Ralink の RT3020 チップセットを利用しています。FreeBSD のファームウェアは RT2870 を利用しています。runfw.ko を kldload します。
今度は WPA でもちゃんと接続できるのでホッとしました。大きさ的にもまぁ、とりあえず小型なので嬉しいです。ただ、色が黒いほうが良かったかな。と言う感じはしますが。
と、言うことで NotePC に内蔵な無線 LAN の他に USB のヤツもそろそろ色々動くものが出てきたような感じがします。ただ、if_run 対応のチップは ieee802.11n に対応しているのに if_run 自体は 802.11g の速さでしか認識してくれないのでちょっと悲しいかなぁ。と言うのはありますが、FreeBSD で USB な 無線 LAN デバイスを利用する場合には if_rum もしくは if_run 対応のものが安心でしょうなぁ。と思うのであります・・。
がっ!! WLI-UC-GN はハマリ道で、GW-USValue-EZ は FreeBSD においてはドライバが存在しない。と言う結果になったのでありました・・。
ThinkPad X100e で FreeBSD。気がついた点。
前回のエントリーで ThinkPad X100e 買いました−。っての書きました。でもって Windows7 x64 と FreeBSD/amd64 8.1-STABLE が動いているわけですが、今回は FreeBSD での動作についてちょっとまとめてみたいと思います。
1. サスペンド・レジューム動きません。
acpiconf -s3 で寝ることはできます。パワー LED もちゃんとブリンクするので「お。寝たか?」とか思うのですが、電源投入するとそこでフリーズします。 s5 も動きません。
FreeBSD の サスペンド・レジューム は SMP カーネルの場合、コードがスパっと抜け落ちているそうなので絶対に動作しないのでありますね。はい。ただ、シングル CPU カーネルの場合は動作するのかなぁ?試していませんし、試そうとも思いませんが・・。
2010/10/19 加筆
サスペンド・レジュームについては「ThinkPad X100e を FreeBSD で Suspend/Resume。」を参照してください。
2. 無線 LAN if_iwn は動作しません。
ThinkPad X100e は AMD のアーキテクチャなのに無線 LAN 周りは Intel のセントリーノ技術を使ってイいるんですね。利用しているチップは if_iwn 対応で Intel(R) PRO/Wireless 6250 と、言うヤツです。これと USB 接続の WiMAX 対応チップがセットになったヤツらしいのですが、以下のメッセージが出力され動作しません。
|
if_iwn.c のソースコードをチロっと眺めたところ、本来であれば iwn6250 版台(ファームウェア的には 6050 かなぁ?)なのに if_iwn.c のコード的には iwn5000 のファームウェアで動いているっぽいのでその辺りが影響しているのかもしれません。
なお、Intel(R) PRO/Wireless 625 は 802.11n に対応しているので 300Mbps 出る(論理値)のですが、ドライバ側では 802.11a/b/g にしか対応してないので 54Mbps しか速度が出ません。コード的には #if 0 って部分ですが、更に必要な define が無いのでどうしようもない状態・・。
3.サウンドチップは特殊でした。
NotePC 的にはスピーカがついているのにそこから音は出ない。けど、イヤホンジャックにヘッドホンを接続すると音が出ている。あれあれあれ?って感じですが、cat /dev/sndstat してみるとデバイスが二つ認識しているようです。
|
なんとっ!! pcm1 がスピーカ側のデバイスで、pcm0 がヘッドホン側のデバイスです。普段は sysctl -w hw.snd.default_unit=1 しておいて、ヘッドホンで聞く時は hw.snd.default_unit=0 する必要があります。
これは KDE-4.5.1 の Kmix (サウンドミキサーアプリ)のキャプチャですが、それぞれのデバイスのためにボリューム(「OSS Audio Mixier」ってヤツのタブ)が二つあります。ヘッドホン用とスピーカー用ですね。いやぁ。ちょっと驚き。最近の NotePC ってみんなこうなのかな?

mplayer とか立ち上げて映画とか見ていた場合、最初はスピーカーで聞いていたけど、ヘッドホンにしたい場合は sysctl -w hw.snd.default_unit=0 とか打つ必要があります。てもって音の出力先が変わったので mplayer は再起動し直しとなります。ふむー。
4. Fn+F?? キー使えません。
Fn+ テンキーって、ベンダ向けに用意されている acpi_*.ko をロードすれば Fn+ テンキー が利用できると思っていたのだけど、acpi_ibm.ko をkldload してもキーがマッピングされないので、音のボリューム・無線 LAN のオン/オフ・ディスプレーの明るさが変更できません。orz。 僕が最近の NotePC を知らないだけなのかも。技を知っている方、教えてください。
無線 LAN はそもそも利用しないのでずっとオフでも良いかも;-|。まぁ、仮に動作するようになったとしたら kldload/kldunload if_iwn.ko すればいーや。とか思っているんですが;-)。
音の大きさはミキサーアプリで調整するのでこれまたなんとかなりそう。
ディスプレーの明るさは acpi_video.ko を kldload すると sysctl MIB として hw.acpi.video.lcd0.brightness と言うのが生えてくるのでそこで明るさを指定します。以下のようなスクリプトを書けば良いかなー。って感じなのでありますが・・。
|
多少使い込んで気がついたのはこんな感じでしょうか。まぁ、多分、標準的な「NotePC にインストールした FreeBSD の動作。」だと、僕は思っているのですけどねぇ;-P。
if_iwn は当分更新される予定は無いみたいなので半分あきらめです。最近は Windows7+IE9 も中々良いと思えるのでどうしても無線 LAN が必要な場合は Windows7 利用するかも;-P。まぁ、その前に iPhone4 があるので、多分めったに NotePC を門外に持ち出すことは無いと思うのだけどねぇ;-)。
FreeBSD RELENG_8 で USB 機器からブートする。
自宅の PC はそろそろ FreeBSD 7 系から 8 系にバージョンアップしているのであります。が、我が家にはちょっとワンパクな EeePC がいるのであります。最終型は FreeBSD 7.3-STABLE に落ち着いていたのですが、各種デバイスが動作しないので早いところ FreeBSD 8 系にしたいものだ。と何回もトライしていたのですが・・。
今回やはりバージョンアップにトライしました。 EeePC に USB 接続の 2.5 インチ HDD を接続します。
それとは別に USB メモリからブートしてイントールするためのブートイメージを作成します。参考にしたのは「USBメモリからFreeBSDをインストールする」こちらのサイト。
ここに書かれている USB メモリの dd や newfs などを参考にさせてもらいした。ありがとうございました。ただし一点だけ。僕は USB メモリからブートしたあとにネットワークインストールする予定なので CD-ROM イメージ全ては必要ありません。上記 URL の cp -pR /cdrom/* /usbmem の部分は以下のようにします。
|
/boot だけを USB メモリにコピーする。って感じです。これだと USB メモリの容量は 64MB のもので済みます。あとはブートしたあとにネットワークインストールするだけ。FreeBSD の iso イメージ的には FreeBSD-8.1-RELEASE-i386-bootonly.iso を用意すれば十分。て感じでしょうか。
と、言うことで、ブート用の USB メモリと USB 接続の 2.5 インチの HDD (今回はここに FreeBSD 8.1-RELEASE をインストールします)が用意できました。これでインストールします。が・・。EeePC では USB 接続の HDD を認識してくれませんでした。orz。FreeBSD のインストーラは起動するのですが、HDD 選択の画面で USB 接続の HDD を認識してくれないのであります。ブート用の USB メモリは問題無くブートしました。
しょーがないので普段利用しているデスクトップ PC で再度トライ。BIOS 設定を変更して USB メモリからブートするようにします。でもってブート。おぉ。今度はちゃんと USB 接続 の HDD を認識したのでこちらに対して FreeBSD 8.1-RELEASE をインストールし、無事に完了するのでありました。
母艦 PC (インストールに利用したデスクトップ PC) をシャットダウンしたあとに USB メモリと USB 接続の HDD を抜きます。でもって USB 接続の HDD を EeePC に接続してブートするのであります。
おぉっ!! ブートしたっ!! と思ったのもつかの間・・。umass0:0:1 など、 USB デバイスは認識するのですが、HDD が認識しないので FreeBSD が root バーティションはどこだ?と聞いてきます。
ufs:/dev/da0s1a
とか打つ画面ですね。ここから先に行かない・・。orz。dmesg 的には以下のような感じ。
|
どーしたもんかいのぉ・・。と悩んでいるのであります。8-CURRENT や 8-STABLE をインストールした時と全然一緒な状態・・。orz。
そんなバナナっ!! この後におよんでいくら何でも 8.1-R まで行っても USB デバイスからブートできないなんてありえないだろうっ!! とか思い、いよいよ IRC で聞いてしまいました。そしたらとある有名なコミッタの方が以下の設定を /boot/loader.conf に書いてみそ。と言うので言われたとおり書いてみました。
|
インストール直後の状態でシングルユーザでもブートしてくれないのにどうやって /boot/loader.conf 編集したらえーねん。とか思うのですが、僕は USB HDD を別の FreeBSD に接続して mount /dev/da0s1a /mnt したあとに /boot/loader.conf を編集しました。そのあとで再度 EeePC に接続してブートしたらっ!! おぉー。da0 がようやっと認識できて上のような dmesg となったのでありました;-)。わーいっ!! ありがとうございましたーー。
EeePC では 7 系 STABLEは今まで動作していたのですが、 8 系 STABLE はこの USB の問題で諦めていたのでありました・・。
ちなみに他の FreeBSD を持っていない人は /boot/loader.conf に書き込むこと、できないですよね。そんな人は ブート時のメニューで 6 を選択します。そこで set コマンド叩いてから boot とたたけば良いらしいです。ブートしたあとはすかさず /boot/loader.conf に設定を追加してあげれば OK です。
|
ふぅ。FreeBSD を USB メモリや USB HDD などからブートしたい人は上記設定を入れると、umass の認識でちょっと待ち状態が入るのでそのあとに da0 が認識され、ルートパーティションが取得できると言うわけですね。上記の設定が無い場合、da0 を認識する前にルートバーティションはどこぜお?ってなってしまうのでちっくとまちぃや。って感じで上記の設定を入れるのだそうです。
それにしても無事にブートできて良かったです。うんうん。さてと。今から csup で 8.1-STABLE にしようかなー;-)。
ほんにもう。それにしてもありがとうございました。
ONKYO ND-S1 と FreeBSD 8.1-PRERELEASE。
ちょっと前のエントリーで「ONKYO ND-S1 を PC に接続してみる。」と、いうのを書きました。その時は MacOSX と Windows7 では無事に動作したけど FreeBSD では usb.ko 辺りでエラーになって動作しないですねぇ。で終りました。
その時検証した FreeBSD は 7.3-STABLE だったのですが、今回 8.1-PRERELEASE にバージョンアップしたので再度試した所、無事に動作することを確認できました。mp3 や 音楽 CD、後、mp4 の動画についても音が出ることが確認できたので、FreeBSD から ND-S1 はサウンドカードとして無事に認識できました。
|
前回書いた通り、サウンドデバイスがたくさんある PC になっている (cat /dev/sndstat の結果) のでサウンドカードを特定する必要があるのですが、以下のコマンドで pcm4 に向けてあげます。
|
これで無事に音がでるようになったということですね。演奏中は特にエラーを吐くことも無く快調に音が出るのでありました;-)。
さて。 7.3-STABLE と 8.1-PRERELEASE では基本的に USB 周りが改修されているようです。 8 系 FreeBSD では usb.ko から ochi.ko 、 uhci.ko 、 ehci.ko が独立しました。その関係でコードが見直されたのでしょうなぁ。良かった良かった。
筆者はその昔、8.0-STABLE を試しているのですが、この時、USB 接続の HDD が認識しませんでした。その時の顛末は「8.0-STABLE の USB ブート。」に書いているのですが、なるほどー。8 系リリースのことをよく調査もしないで、7 系と同じ感じで usb.ko だけロードすれば USB が使えると思っていて uhci.ko とかロードしていないために USB 接続の HDD が認識しなかったのねぇ。という感じなのでありましたf(^^;;。
最後にですが、ONKYO ND-S1 は USB バスパワーでも動作します。サウンドカードとして利用する分には AC アダプタは必要ありませんでした。 iPhone3G を接続した時に充電するためには AC アダプタが無いと充電できません。なので、実質的には AC アダプタは必要になるかと思うんですけどねぇ。
さてと。これで FreeBSD からもデジタル出力でオーディオ機器に対して音が出るようになったということですね。DVD を mplayer で見た時、5.1 チャンネルで音が出るようになるのかなぁ?だとしたらそれはそれで凄いことだけど;-)。 snd_uaodio.ko はどうなっているんだっけかなぁ。
7.2-PRERELEASE 登場。
「 自宅サーバが安定しない。」と、ずっと書き続けてきたのだけど、昨日 csup したら 7.1-STABLE が 7.2-PRERELEASE になっていたので、サーバが凍り付く前にリブートしてバージョンアップでけた。
と、言うことで最近のサーバは uptime 12days を記録し、去年の 10 月以来最高の記録となりました;-)。
ちなみに さくらインターネット が自社のサーバを 7.1-RELEASE にアップグレードするってアナウンス出したので思わずサポートに「7.1-RELEASE はフリーズしてしまうけど、サービスにおいて大丈夫ですか?安定してくれないとイヤだなぁ。」と書いたら「検証の結果、凍りつくハードウェアも確かにあったけど、サービスに利用しているハードウェアは大丈夫なのでバージョンアップします。」との事でした。でもって回避策も考えているそうな。
で、うちのサーバがどうして安定したか。と言えば OS の改修とか色々考えられるのですが、現在のうちのサーバの稼働状況を見てみると以下のような感じです。
・DNS サーバ
・ウェブサーバ(httpd-2.2.9) port:80 最大プロセスが 140 個程度
・ウェブサーバ(httpd-2.2.9) port:8080 最大プロセスが 20 個程度
・メールサーバ(sendmail)
・POP3/IMAP4 サーバ(courier-imap-4.4.1)
・自宅網内用 SAMBA サーバ
・cvsupd
・IPv6 ルータ(dtcps,dtcpc)
こんな感じでしょうか。サーバ部分とルータ部分が存在しているのですが、PPPoE はブロードバンドルータにやらせています。
さて、安定させるために行ったことは大体以下です。
・IPv6 ルータを別のマシンで行うようにする
・ダメもとでスケジューラを SCHED_ULE から SCHED_4BSD に変更
・httpd を prefork から worker に変更
こんな感じでしょうか。ただ、これらの事象がサーバの安定に貢献できたのか、さだかではありません。
httpd をプロセス起動からスレッド起動に変更したおかげで ps -ax で見た感じはかなり少なくなりました。 ps -axH | wc -l すると大体 300 近い数が存在しているので、この状態を高負荷状態と行って良いのかもイマイチ不明です。
ただ、ロードアベレージはそんなに高くは無いし、CPU クロックもいつも最高速で回っている。と言うのでもありません。この辺りの情報は MRTG で取得しています。なのでやはり、プロセスやスレッド回りで OS 的に何かあったのかなぁ?と考えてしまうのでありました。
httpd を prefork から worker に変更したのが一番大きいのかなぁ?あ、きっと OS 側に修正が入ったのでしょうねぇ。csup するたんびに kern_ とかのソースが更新されていると嬉しくなっていましたし。< 僕;-)。
7.1-STABLE の powerd。
最近 csup した 7.1-STABLE は powerd の挙動が変わったねぇ。僕は CPU のロードアベレージと速度を MRTG で取得していて毎日見ているのだけど、それで powerd の挙動が一目瞭然;-)。
今までとどう変わったか?と、言われれば、多分 C7i や PhenomII など Core 毎に速度が変えられるようになったのに対応したのでしょうなぁ。
MRTG のグラフを見ていたら、今までは
CPU クロック抑えつつロードアベレージがちょっと高め
だったのだけど、最近の STABLE では
CPU クロック高めでロードアベレージはちょっと抑え気味
って感じかな。まぁ、どっちでも構わないのだけど、CPU クロックを低くしていれば消費電力が抑えられるわけでして。地球環境を考えたら、僕的には今までのほうが良いなぁ。と思ってしまうわけです。サーバであっても CPU ロードアベレージが低ければクロックも低くなっていて欲しい。裏を返すと、多少ロードアベレージが高くても CPU クロックは低くても良い。みたいな感じかしら。
で、powerd で調整できないものか man みましたよー。で、オプションで CPU クロックの変動を抑制することができる;-)。
現在、AthlonX2 なサーバに設定している powerd のオプションはこんな感じ。
|
|
経験上、ポーリング時間を変更すると細かな CPU クロックの調整ができます。大きく変えたい時は -i オプションの値を変更すれば良いかと思われます。
後は二時間位ブン回して、その間に MRTG で情報取得して更にオブションの値を細かく調整すれば良いかと思います。
それにしても、温度とか、この手の値って MRTG で取れると知ると知りたくなるんだけど、知らなくても全然問題無いのよねぇ。その気分的な問題が中々面白いんだけど;-)。
それにしても、CentOS で CPU 速度を落とそうとしても、ややこしいのねぇ。カーネルモジュールをロードしてもエラー吐いてダメだしさ。そー考えると CPU クロックを可変にするのは FreeBSD のほうが圧倒的に楽だね。GENERIC カーネルだと powerd を起動すれば良いだけだし。
そー考えると地球環境を考える人は FreeBSD 使うのかぁ?;-P。
FOXCONN R11S4MI-BA 購入。
ずばりっ。これを購入 。どうしてこれにしたかと言えば、安いのが一番。二番目が PCI スロットがあったから。でもってデアルコア;-)。
余った PC パーツは自宅のサーバが安定しないので交換のために買ったのがごろごろしているのでそれを流用することができるのです。 けど、必要なのはメモリと HDD だけなんだけど・・。
で、HDD は Hitachi HDP725032GLA360 GM3OA52A 320GB のやつ。これは、自宅サーバの Seagate ST3500320AS SD15 500GB をリプレスするために用意しておいた。そー。シーゲートの不良品対策のためにね。でもって HDD の中には既に FreeBSD/amd64 7.1-RELEASE がインストールされているのだけど、これをそのまま付けてブート。
あぁれぇーー。全然問題無くブートしてしまったじゃないのさ・・。と、言うことは AtomN330 は amd64 に対応していると言うことだね。でもって DualCore なんだけど HTT なので FreeBSD からは Core が 四つに見えてしまう。うーん。贅沢だぁ;-)。
ちなみに Windows は全く起動していないので知りません。FreeBSD の HDD は Athlon64 X2 でインストールしたヤツがそのまま動作しました。って感じです。
その後 7.1-STABLE にアップしました。dmesg はこんな感じ。
USB 接続のカードリーダを積んでいるのだけど、これらはメティアを入れてなくともデバイス自体を FreeBSD 側で認識してしまう。 BIOS で disable にしても FeeBSD 側で認識してしまう。
後、オンボード NIC が 本当は rl0 で 100Mbps なのだけど、実際には re0 として認識される。これは、オンボード NIC が PCI-e に接続されているからですねー。考えてみると PCI-e 接続な rl0 なんて聞いたことないものねぇ。
なので、Giga NIC を PCI パスの空きスロットに刺したいがためにこのベアボーンキットを購入したのでありました;-)。
後、気づいた点としては CPU の温度が取れないですねぇ。coretemp.ko ダメでした。k8temp.ko も当然ダメでした・・。mbmon もダメでした・・。ふむー。
さてと。Core が四つもあるので使用感ですが、一応、ベンチマークを取ってみました。カーネルを make cleandepend && make depend した後に make を叩くのですが、この時の時間を計測してみました。
Atom N330 : 1600MHz : make -j4
1173.13 real 2342.58 user 158.38 sys
Athlon64 X2 4000+ : 2200MHz : make -j2
584.00 real 657.92 user 50.86 sys
CPU 速度がまぁ、だいぶ違うのだけど、それでも Athlon64 X2 の make -j2 のほうが圧倒的に早いよねぇ。まぁ、当然だろうけどさぁ。後、Atom 側は S-ATA が 150。これもちょっとは影響するかな。
と、言うことで Atom な CPU ではもう少し遊ぶ予定。その後は自宅の安定しないサーバのバックアップとして利用する予定。 Atom 側からサーバに対してアクティブ監視とパッシブ監視を行い、応答が無くなったら、サーバの持っていた IP アドレスを alias して Atom のバックアップ機でサービスを継続できるようにする予定。データ自体はもう既に rsync で Atom 側に送っているので、同期もばっちりb(^^)。
んー。会社のミッションクリティカルなサーバみたいだ;-)。
後は、専ら検証機として利用するかなぁ;-)。
BUFFALO WLR-UC-G を FreeBSD で使う。
渋谷に新しくヤマダ電気が出来たのだけど、そこの特売で今はディスコンのバッファロー(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 モードは利用できないけど、ハードウェア自体は利用できるようになりました。めでたしめでたし。と言うことにしましょう;-)。
自宅サーバを最新 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 になったな;-)。