CF-7989 に FreeBSD のメモ

[ コメント ] [ トップページ ]


最近はやりのキューブ型ベアボーンPCキットに FreeBSD をインストールしました。 これはそのときのおぼえがきです。 ノウハウは、本機と同じメインボード FV-24 搭載の Cube 24 や Pandora などにも適用できると思います。 なお、FreeBSD とは、Net2/386BSD/4.4BSD lite を起源とする 使い勝手のよい汎用のOSです。



恵安 CF-7989


1. インストール

FreeBSD 4.4R。ATAPI CDROM ブートでインストール。 別段問題なし。のちに 4.5R にアップグレードしました。 (6/21 FreeBSD 4.6R にアップグレード、現在4.6.2-R で運用中)

2. ビデオ

オンボード 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 ファイル (フォントパスなどは環境にあわせて調整してください。)

3. ネットワーク

RealTek 8139C 10/100BaseTX。カニの是非はおいといて rl ドライバで認識。 残念ながら下馬評通り NFS などで高負荷をかけるとかなりの確率で固まります。 使い方に工夫が必要かも。 現在は唯一の PCI スロットに fxp を差してデュアルホームにして運用中です。

(追記) Polling Mode

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 スクリプトで、 電源断状態からリモコンで起動することができます。

4. サウンド

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 が動いています。)

5. APM

zzz でサスペンド、フロントスイッチでレジュームします。それ以上は追求し てません。

6. IEEE1394

放置しています。もったいないな〜。

7. USB

前面、背面に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

8. RS232C

1ポートついてます。シリアルクレイドルを接続して、 SONY PEG N600C で使用中。

もちろん clie は USB で使いたいところ。Linux はすでにパッチがあるし、 NetBSD も uvisor とかあってあと一歩のとこまで来てます。 実はプロトコルアナライザでデータだけはとってあるんですが...。

9. ATA100

最初は、

	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)

10. ハードウェアモニタ

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 に出力するように設定。 測定環境ができたので、静音ファンの交換でもやってみましょう。

11. 靜音化

これも FreeBSD とは直接の関係はないが、 この手のベアボーンでは定番となっている靜音化。まず、ケースファンをおな じ 60mm 角の SANYO の静音タイプに交換。つづいて、轟音を発する電源ファ ンを、千石の 2F で買った 40mm 角ファン (5V駆動 25dB) に交換。

夜眠れる程度には静かになりました。

12. 関連リンク


$Date: 2010/03/14 01:18:40 $