要望がありましたので、XF86Config を公開しておきます。でも、基本的に xfree86 -configure で作れるものとほとんど差は無いですよ。変えたのはフォント用のディレクトリとか、その位です。

ディスプレイの設定はディスプレイ側で表示領域の調整などをしているため、このままでは辛い環境もあるかもしれません。私ももうちょっと調整しないと。

一応、基本は FreeBSD 4-STABLE + XFree86 4.x 最新版 (ports 追従) です。一応、STABLE 版に合わせて行っていますので、5-STABLE になったら 5-STABLE を使うことになるでしょう。サーバは当分 4-STABLE の様な気もしますが…… Trusted BSD が RELEASE になったら、速攻で変えるかも。(^^;

先日、ゲーム用のつもりでさくさくっとベアボーンのマシンを作ったのですが、あまりにもゲームをしない (できない) 時間が多くなり、それと共に作業を行う事が多くなりました。作業端末として、Windows Me や Windows 2000 では使いにくいので、結局 FreeBSD 4.3-STABLE を入れてしまう事にしたのでした。

ここでは AOpen のベアボーンキット BS2800 を利用しました。サイズ的にも手頃で、大体最初から揃っている、というのがポイントでした。

インストール

DVD-ROM ドライブ搭載機種の為、非常にサクサクと簡単に入ってくれます。標準搭載のネットワークポートも fxp0 ですぐに使えるので気にする必要もありません。(fxp なら FreeBSD でいい性能出してくれますしね)

ただし、注意する点が幾つかあります。簡単に言えば、ビデオとサウンド。

ビデオカードは特に増設しなかった為、標準の i815E 内蔵ビデオチップが利用されます。サウンドに付いても、M/B 上に標準搭載されている AC'97 対応のサウンドチップとなります。

この 2 つが問題となって来ます。

なお、インストール時に cvsup-bin パッケージのみインストールし、4-STABLE に更新してあります。

cvsup-bin パッケージは、4-STABLE にした後に ports から入れ直すことで最新を維持するようにしています。

サウンド機能を利用できるようにする

WWW 上でちょいちょいと情報を集めて見ると、このベアボーンキットで利用されているマザーボードである MX3S 上のサウンドチップは、単に device pcm しただけでは認識してくれません。

ただ、FreeBSD-users-jp を漁ってみると、どうも ICH ドライバを利用する事で使用可能になるらしい、ということで入れてみました。。

手順としては非常に簡単で、書かれている通りの作業で終了します。

  1. ICH ドライバを拾って来て展開する。

  2. 展開したソースコードを所定の位置へ移動する。

    # mv ich.c /usr/src/sys/dev/sound/pci

  3. ソースファイルが pcm デバイスで利用されるように /usr/src/sys/conf/files に登録する。

    dev/sound/pci/es137x.c optional pcm pci と書かれている辺りの次の行にでも dev/sound/pci/ich.c optional pcm pci と追加する。

  4. カーネル設定ファイルに device pcm が記述されていなければ (インストール直後は当然無い) # echo 'device pcm' >> MYKERNEL しておく。

    ここで、ビデオチップを利用する為に、さらに # echo 'device agp' >> MYKERNEL しておくと、後がちょっと楽。

  5. kernel を再構築する。

    # cd ../../compile/MYKERNEL && make depend && make && make install

  6. とりあえず再起動。

    # shutdown -r now

あとは、mpg123 辺りでも使って適当に演奏してみましょう。このマザーボードで利用されているチップは 48000Hz 固定では無い為、これだけで綺麗に演奏してくれます。

ビデオ機能を利用できるようにする

i815E を X Window System で幸せに利用するには XFree86 4.0.x を利用するのが素直です。

とりあえず、ports/x11/XFree86-4 から入れてしまうのがお手軽で簡単なのですが、build する時間が嫌、という方は packages から入れてしまうのがいいでしょう。

なお、XFree86 4.0.x を利用する場合は、予め # echo 'XFREE86_VERSION=4' >> /etc/make.conf しておきましょう。以後、ports から build する X 関係のアプリケーションが 4.0.x 系を参照するようになります。(指定し忘れると標準の 3.3.x を見に行きます)

4.0.x 系ではまだ GUI ベースの設定アプリケーションがありませんので、# XFree86 -configure で XF86Config ファイルを生成します。この際、XF86Config.new ファイルが環境に合わせて生成されます。また、標準の設定ファイル/ディレクトリを作る為、合わせて # xf86config も実行しておきましょう。

その後、i815E 用に設定を少し書き換えて利用します。具体的には以下の通り。

  1. TrueType フォントを利用するつもりであれば、以下の項目を編集する。

    • Files セクションに FontPath を追加する。例えば以下のようにする。

      FontPath "/usr/X11R6/lib/X11/fonts/truetype/"

    • Module セクションに Load するモジュールを追加する。X-tt モジュールを利用する場合は以下のようにする。

      Load "xtt"

  2. キーボードに合わせてキーボードの定義を行っている InputDevice セクションを編集する。おそらく Identifer は Keyboard0 のはずです。日本語キーボードを利用する場合は以下の項目を追加する。(重複する項目が万が一合った場合には削除する)

    Option "XkbRules" "xfree86"

    Option "XkbModel" "jp106"

    Option "XkbLayout" "jp"

  3. マウスに合わせてマウスの定義を行っている InputDevice セクションを編集する。おそらく Identifier は Mouse0 のはずです。ホイールマウスを利用する場合は以下の項目を追加する。(重複する項目が万が一合った場合には削除する)

    Option "Buttons" "5"

    Option "ZAxisMapping" "4 5"

  4. モニタに合わせて Monitor セクションを編集する。ディスプレイの仕様書などを見るのが良いでしょう。先に XFree86 3.3.x で同じディスプレイを利用した事があるのであれば、そこからコピーするのが良いでしょう。

    このセクションは物によって変わるので、以下の値が通るとは限りません。下手に設定するとモニタを破損する可能性があるので気を付けてください。よって、以下の値はサンプルです。モニタには SONY CPD-17SF8R を利用していますので、CPD-17SF* だったら同じ値は通るはずです。(少なくとも 17SF7 ~ 17SF9 辺りは通るはず)

    HorizSync 31.5-64.3

    VertRefresh 50-90

  5. 表示したい解像度/色深度に合わせて Screen セクションを編集する。この辺りは利用できるモードが時動的に追加されますが、使わないモードは削除してしまって良いでしょう。というか、邪魔なので使う可能性があるモード以外は消しておきましょう。

    Monitor の定義の下に、標準の色深度を設定します。私の場合は速度の面で 16bit に設定していますので以下のようになります。

    DefaultDepth 16

    次に、利用する解像度を残して綺麗さっぱりと消してしまいます。私の場合は 1024x768 の項目以外は削除してあります。

後は、このファイルを /etc/XF86Config にコピーして X を立ち上げるだけです。

なお、3.3.x と 4.0.x を同居させる場合には、4.0.x の XF86Config は /etc/X11 の下におけば ok です。

なお、XFree86 4.0.x では一般ユーザが startx しても、権限が無いため動作しません。/usr/ports/x11/wrapper をインストールしましょう。これで一般ユーザからも start で X が利用できます。

なお、i81x 内蔵ビデオチップを利用する場合、agp.ko が読み込まれている必要があります。先のサウンドの説明中で device agp を入れていない場合は予め # kldload agp しておく必要があります。

面倒なので kernel 設定ファイルに書いた方が楽です。(^^;