最近はやりのキューブ型ベアボーンPCキットに FreeBSD をインストールしました。 これはそのときのおぼえがきです。 ノウハウは、本機と同じメインボード FV-24 搭載の Cube 24 や Pandora などにも適用できると思います。 なお、FreeBSD とは、Net2/386BSD/4.4BSD lite を起源とする 使い勝手のよい汎用のOSです。
恵安 CF-7989
FreeBSD 4.4R。ATAPI CDROM ブートでインストール。 別段問題なし。のちに 4.5R にアップグレードしました。 (6/21 FreeBSD 4.6R にアップグレード、現在4.6.2-R で運用中)
オンボード S3 ProSavage。EIZO の 16インチ LCD L461 に接続しています。 まずは XFree86 4.0.3 の "savage" モジュールで起動するもOSごと死亡。 検索してみると、 S3 のサイトに XFree86 4.1.0 と 4.0.3 の Linux 用モジュールが公開されていました。 取得した savage_drv.oを /usr/X11R6/lib/modules/drivers/ のものと置き換えて起動成功。
(追記) XFree86 4.2.0 で、S3 供給のモジュールなしでも正常に表示できるように なりました。 また、S3 サイトでの Linux 用モジュール公開は終了している模様。かわりに S3 Savage Support on XFree86 4.x というページに 4.2.0 の savage モジュールよりも新しいモジュールがあります。
なお、最新版の 1.1.25t は、gamma extension 対応関連か、 フルカラービットマップを表示すると諧調がガタガタです。 γの計算の誤差のせいだと思います。 ソースをいじってγ補正を無効にしてコンパイルしたモジュールに入れ換える とまともに戻ります。修正箇所は以下の通り。
--- savage_driver.c~ Thu Sep 12 06:59:57 2002 +++ savage_driver.c Thu Oct 3 23:28:36 2002 @@ -1750,12 +1750,13 @@ VGAOUT8(vgaCRReg, restore->CR67); /* Enable gamma correction. */ - +#if 0 VGAOUT8(0x3c4, 0x1b); if( pScrn->bitsPerPixel == 32 ) VGAOUT8(0x3c5, VGAIN8(0x3c5) | 0x28 ); else VGAOUT8(0x3c5, VGAIN8(0x3c5) & ~0x28 ); +#endif /* We may need TV/panel fixups here. See s3bios.c line 2904. */
描画のたびに液晶画面上に激しくノイズがのるので、 モニタの v/hsync をみると、装置の上限いっぱいいっぱいに設定されていました。 そこで Section "Monitor" で、
ModelName "L461" # HorizSync 31.5-80 # VertRefresh 50-75 HorizSync 31.5-70 VertRefresh 50-65
のように直して、Xサーバをだましてみたところ、良好。 XF86Config ファイル。 (フォントパスなどは環境にあわせて調整してください。)
RealTek 8139C 10/100BaseTX。カニの是非はおいといて rl ドライバで認識。 残念ながら下馬評通り NFS などで高負荷をかけるとかなりの確率で固まります。 使い方に工夫が必要かも。 現在は唯一の PCI スロットに fxp を差してデュアルホームにして運用中です。
4.6R から導入された polling mode を試しています。 バックアップや cvsup などの高負荷時に限定でオンにしてますが、 いまのところカニは安定してるように見えます。カーネルを
option DEVICE_POLLING
して再構築。
sysctl -w kern.polling.enable=1 sysctl -w kern.polling.user_frac=80
てな感じでコントロール。再起動なしでオンオフできます。 ただ、ポーリングモード動作中は CPU 負荷が猛烈に上がるのがイタシかゆし。
FreeBSD とは関係ないが、 Wakeup on LAN が可能です。 FreeBSD-net-jp: 1201 にあった perl スクリプトで、 電源断状態からリモコンで起動することができます。
pcm で認識。
pcm0: VIA VT82C686A port 0xe400-0xe403,0xe000-0xe003, 0xdc00-0xdcff irq 12 at device 7.5 on pci0
MP3鳴らしてもほとんどCPU喰ってる形跡なし。音質はいまいちでちょっと歪み がある。流星観測には使えそうだが、鑑賞用には聴き比べるまでもなく ONKYO の USB アダプタ経由の方がいいです。ていうか、オンキョーのはいいね。 (本ページの本題ではないですが、 USB Audio driver for FreeBSD で ONKYO U-33 が動いています。)
zzz でサスペンド、フロントスイッチでレジュームします。それ以上は追求し てません。
放置しています。もったいないな〜。
前面、背面に2ポートずつ。 PS/2 インターフェイスの HHK Lite と Logitech 3ボタンマウスを コレガの USB/KM 経由で使ってます。 これをさらにコレガの切替え機 changer UV で G4 Cube の MacOS X と共用 してるんですが、切替えボタンを FreeBSD 側に戻したときに、 キーリピートの設定がやたらと遅くなってしまうことがあります。 対策として以下のようなスクリプトを書いて、usbd.conf に登録。
#!/bin/sh kbddev=/dev/ttyv0 msdev=ums0 . /etc/defaults/rc.conf . /etc/rc.conf /usr/sbin/moused -p /dev/${msdev} -I /var/run/moused.${msdev}.pid sleep 1 if [ ${keymap} != "NO" ]; then /usr/sbin/kbdcontrol < ${kbddev} -l ${keymap} fi if [ ${keyrate} != "NO" ]; then /usr/sbin/kbdcontrol < ${kbddev} -r ${keyrate} fi
1ポートついてます。シリアルクレイドルを接続して、 SONY PEG N600C で使用中。
もちろん clie は USB で使いたいところ。Linux はすでにパッチがあるし、 NetBSD も uvisor とかあってあと一歩のとこまで来てます。 実はプロトコルアナライザでデータだけはとってあるんですが...。
最初は、
ata0-master: DMA limited to UDMA33, non-ATA66 compliant cable ad0: 58644MB <IC35L060AVER07-0> [119150/16/63] at ata0-master UDMA33
となってしまったのだが、users-jp メーリングリストを検索して解決。ケーブルのメイ ンボード側とハードディスク側を差し替えたところ、
ad0: 58644MB <IC35L060AVER07-0> [127093/15/63] at ata0-master UDMA100
となり無事認識。セカンダリ側には、パイオニアの DVD-ROM と、 富士通 MCB3064AP (640MB OW対応 MO)がつながってます。ATAPI MOのパッチは、 FreeBSD-users-jp: 67066 他参照。ただし、このパッチだけだと、mount 中でも 媒体のロックがかからないため、ドライブのイジェクトスイッチで媒体を取り出せて しまいますのでご注意。 (4.6-RELEASE 用 ATAPI-MO パッチ)
添付のケーブルが分岐型ではなかったので、 古いメインボードについてた IDE ケーブルを使って MO と DVD をつないだところ、 今度はこれが 80 芯でなかったため DMA モードでエラー頻発。 結局 80 芯の分岐ケーブルは別途入手。 また、FreeBSD はデフォルトでは ATAPI デバイスは PIO モードに設定されるので、 /boot/loader.conf に以下のように追記。
hw.ata.atapi_dma = "1" # 1 is DMA, 0 is PIO(default)
mbmon/xmbmon で認識。
hydra% mbmon -d Using VIA686 HWM directly!! MainSMBusADDR(CR48) = 5A SubSMBusADDRs(CR4A) = 90, 90 [Temp1 exists, Temp2 exists] DeviceID(CR49&0xFE) = CC VenderID(CR4E=0,CR4F)= 0 ChipID(CR58) = 1 * VIA Chip, VT82C686A/B found Warning: Temp1 address is wrong ??
とでますが、CPUとチップセット温度はちゃんと計れてます。アイドル状態で 26℃、負荷をかけると 38℃ぐらいになりました。 cron で毎正時の温度を syslog に出力するように設定。 測定環境ができたので、静音ファンの交換でもやってみましょう。
これも FreeBSD とは直接の関係はないが、 この手のベアボーンでは定番となっている靜音化。まず、ケースファンをおな じ 60mm 角の SANYO の静音タイプに交換。つづいて、轟音を発する電源ファ ンを、千石の 2F で買った 40mm 角ファン (5V駆動 25dB) に交換。
夜眠れる程度には静かになりました。