FreeBSD 8.3 diskless構築、その7

ディスクレスクライアントで Boinc クライアントを動くように出来た後、X11を起動させる段階で問題が発生したため設定を進めるペースが落ちてしまったが、ようやくディスクレスクライアントでX11を動かす目処が立ったので、情報を書き込むことにした。

ディスクレスクライアントで X11 を動かす

個人的には、Unixマシンのコンソールを使う事がめっきり減ってしまって、X11 サーバーを動かす必要は無いのだが、ディスクレスクライアントを使うメリットが 1) 消費電力の削減や 2) 静かなマシンを構築すること、3) 必要な時だけOSを切り替えて稼働させることが出来るシステムを構築すること(私にとってはここまで出来れば十分)4) ビジネス用途として安いハードウェアコストでWebブラウザーと電子メールを動かすことなので、DisklessクライアントでXが動かない事には話にならない。

X11起動で手間取っていた理由は、

  • ディスクレスクライアントでは /usr/local/etc/rc.d/ 以下の自動起動スクリプトが走らない。
  • X11 を動かすにはマウスなどのポインターが必要になるが、それには /usr/local/etc/rc.d/ 下の hald, dbus を起動させる必要があるが、メンテナンスに影響が出るため自動インストールされるスクリプトに手を加えたくない。
  • hald, dbus 無しで X11 を起動すると、コンソールが操作不能となる。

ためだった。要するにX11が必要とするプロセスを自動起動出来ないことが問題だった。
かなり悩んだが、先日ふとヒントを思いついた。
FreeBSD 4.x を使っていた頃、マウスは Xorg が直接コントロールしていて、hald は存在していなかったはず。つまり、Xorg から hald を抜いて以前のように hald 無しで使えばいいじゃないか!

ということでやってみました。

X11の設定開始

/usr/ports/x11-servers/xorg-server に移動して、ここで xorg  のビルドし直し。

# make config

で、表示される画面から

[ ] HAL    Compile with HAL config support

の部分のチェックを外して保存。このあとで、ビルドしなおして再インストール。サーバー上の /conf/192.168.1.43/etc/rc.conf のスイッチは以下の通り hald, dbus  を使用しない設定に変更、またはこの2行を削除。

hald_enable="NO"
dbus_enable="NO"

AD2700-ITX のビデオはCUIモードでも問題あるし、確かVESAモードでしか動かなかったと思うので、X11のカスタマイズには DELL のノートPC、Vostro 1000 を使用することにした。Dellの場合、型番は同一でも仕様が異なるPCが存在するのでスペックを紹介しておく。

CPU: AMD Athlon(tm) 64 X2 Dual-Core Processor TK-57
メモリ: 4294967296 (4096 MB)
LAN: bfe0
ビデオ:ATI RS482 [Radeon Xpress 200]

X11を使うためにサーバーに、Xorg  を入れて置く必要がある。これは、

# pkg_add -r xorg-server

で他に必要なパッケージとともにインストールされる。

xorg.conf の作成

startx する前に /etc/X11/xorg.conf を作成しなくてはならない。その為には、

# Xorg -configure

を実行して、/root の下に、xorg.config.new を自動作成する。その後で、

# cd /root
# Xorg -configure xorg.conf.new

この結果作成されるファイル /var/log/Xorg.0.log を見ながら、xorg.conf を作成した結果は以下の通り。

Section "ServerLayout"
 Identifier "X.org Configured"
 Screen 0 "Screen0" 0 0
 InputDevice "Mouse0" "CorePointer"
 InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
 ModulePath "/usr/local/lib/xorg/modules"
 FontPath "/usr/local/lib/X11/fonts/misc/"
 FontPath "/usr/local/lib/X11/fonts/TTF/"
 FontPath "/usr/local/lib/X11/fonts/OTF"
 FontPath "/usr/local/lib/X11/fonts/Type1/"
 FontPath "/usr/local/lib/X11/fonts/100dpi/"
 FontPath "/usr/local/lib/X11/fonts/75dpi/"
EndSection
Section "Module"
 Load "dbe"
 Load "dri"
 Load "dri2"
 Load "extmod"
 Load "glx"
 Load "record"
EndSection
Section "InputDevice"
 Identifier "Keyboard0"
 Driver "kbd"
EndSection
Section "InputDevice"
 Identifier "Mouse0"
 Driver "mouse"
 Option "Protocol" "auto"
 Option "Device" "/dev/sysmouse"
 Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
 #DisplaySize 330 210 # mm
 Identifier "Monitor0"
 VendorName "SEC"
 ModelName "3358"
 VertRefresh 56.0 - 76.0
 Modeline "1280x800" 147.14 1280 1296 1344 1424 800 801 804 834 +HSync +Vsync
EndSection
Section "Device"
 Identifier "Card0"
 Driver "radeon"
 VendorName "Advanced Micro Devices [AMD] nee ATI"
 BoardName "RS482 [Radeon Xpress 200]"
 BusID "PCI:1:5:0"
EndSection
Section "Screen"
 Identifier "Screen0"
 Device "Card0"
 Monitor "Monitor0"
 SubSection "Display"
 Modes "1280x800"
 Viewport 0 0
 Depth 16
 EndSubSection
 SubSection "Display"
 Modes "1280x800"
 Viewport 0 0
 Depth 24
 EndSubSection
EndSection

これを /conf/192.168.1.43/etc/X11/xorg.conf としてコピーし、clone_root update で正式位置にコピーする。そして Vostro 1000 を pxeboot 開始。ブート終了後、一般ユーザーでログインして、startx を実行する。
現時点では X が動くことを確認することが目標なので、Xを使っていたマシンから、.xinitrc, .mwmrc などをあらかじめコピーしておいた。

結果はまあまあ良好。とりあえず mwm だが、ターミナルエミュレータやFirefox も起動出来た。以下の画面は、xwd で画面をキャプチャしたもの。タイトルバーの文字化けが発生しているが、おそらく文字コードが一致していないためだろう。または、素のfirefox を入れたためか。 firefox-i18n の方を入れれば良かったのかも。ターミナルエミュレータも kterm を使っている。右下の xload は boinc が走っているため、Load = 1 の状態。

まだ設定が不十分なためこの程度だが、ちゃんと設定を行えば、Office や 電子メールのやりとりも出来るようになると期待出来る。
ただし、Flash で作られているページに関しては、Firefox プラグインが無いため、現時点では諦めざるを得ない。Youtubeなどを表示することが必須であるならFreeBSDバイナリーのFireFoxは使えない。Linuxエミュレーションを利用して、Linux版FireFoxを試す必要があるだろう。

次回はLinuxエミュレーションでFlashプラグインに挑戦。

コメントを残す