FreeBSD端末の実現を目指して
前回までに、3DプリンターReplicator2Xの制御端末とするためにWindowsXPがプリインストールされたThinkPad X31にFreeBSDをインストールした。今回は端末として扱えるようにデスクトップ環境を構築してみる。目指すデスクトップ環境はXorgを使用して、ウィンドウマネージャーにmateを使い、ReplicatorGを使用してReplicator2Xを制御できる環境である。ついでに調べもの用に不自由なくウェブブラウジングができたり、音楽やDVDの再生ができたりするところまで作ってみようと思う。Office関連のソフトもあると便利だろう。
X環境のインストール下準備と実行
まずは、操作するユーザーがwheelグループとoperaterグループに所属していることを確認する。wheelでrootユーザーにsuすることができるようにして、operatorでUSB接続でシリアルポート接続できる権限をあたえる。
念のためインストールしたFreeBSDを最新の状態にしておく。
% su -
# freebsd-update fetch ← freeBSDの更新をダウンロード
# freebsd-update install ← freeBSDの更新をインストール
さらに、pkgコマンドでパッケージも最新にしておく。FreeBSDなのにPortsを使わないのは、X環境をすべてコンパイルするには膨大な時間がかかってしまうからだ。その間にCPUを限界まで長時間ぶん回すことでX31がぶっ壊れてしまわないとも限らない。
# pkg update ← pkgのリポジトリカタログのアップデート
# pkg upgrade ← インストール済みパッケージのアップグレード
ほんでもって、さしあたって必要そうなものをいっぺんにインストールしてしまう。sudo、xorg、mate 、ja-ibus-anthyを入れてみる。
# pkg install sudo xorg mate ja-ibus-anthy
sudoの設定
sudoコマンドをだれに許可するのかを設定しておく。suできる人ならroot権限で実行を許してもいいというルールで運用することにして、wheelグループに所属している人にsudoを許可する。visudoコマンドでsudoの設定ファイルを編集する。このコマンドはsudoの設定ファイルをエディターで開くだけのものだ。ユーザー作成時に変更していなければエディターはviになっているだろう。
# visudo
%wheel ALL=(ALL) ALL ← この行を追加して :wq で抜ける
rc.confの設定
rc.confに使う自動起動するデーモンや、それらに渡すパラメーターなんかを編集する。
# vi /etc/rc.conf
dbus_enable="YES" ← Dbusの自動起動
hald_enable="YES" ← haldの自動起動
moused_flags="-V" ← これで真ん中ボタンとスティックポインタでスクロールできるようになる
linux_enable="YES" ← あとでlinuxバイナリ実行関連をインストールした後に追加する
apmd_enable="YES" ← shutdown -p で電源を落とすために追加
polkitd_enable="YES" ← ポリシーキットで権限を管理するために追加
:qw
#
haldとdbusをスタートさせる。
# service hald start
# service dbus start
Xの設定
Xサーバーを起動できるようにxorg.confと.xinitrcを編集する。.xinitrcはユーザーごとにユーザーのホームディレクトリに配置する。まずは、xorg.confを編集する。デフォルトのままでも起動するのだが上のようにちょこちょこ設定をしておくとDVDをコマ落ちせずに再生できるようになった。全部載せると長いので追加、編集した部分のみ抜粋している。
# Xorg -configure ← コンフィグファイルの生成
# cp -p /root/xorg.conf.new /etc/X11/xorg.conf ← コンフィグファイルの配置
#
#
# vi /etc/X11/xorg.conf
FontPath "/usr/local/lib/X11/fonts/LinLibertineG/"
FontPath "/usr/local/lib/X11/fonts/Liberation/"
FontPath "/usr/local/lib/X11/fonts/GentiumBasic/"
Load "freetype" 追加
Section “InputDevice”
Identifier “Keyboard0″
Driver “kbd”
Option "XkbRules" "xorg" 追加
Option "XkbModel" "jp106" 追加
Option "XkbLayout" "jp" 追加
EndSection
Section “Monitor”
Identifier “Monitor0″
VendorName “Monitor Vendor”
ModelName “Monitor Model”
### Comment all HorizSync and VertRefresh values to use DDC:
HorizSync 31.5-57.0 追加
VertRefresh 50.0-70.0 追加
EndSection
Section "Device"
Identifier "Configured Video Device"
Option "RenderAccel" "on" 追加
Option "AccelMethod" "XAA" 追加
Option "AGPMode" "4" 追加
EndSection
次に、~/.xinitrcを編集する。言語設定や、日本語入力関連などなどを設定する。Xを起動する予定のあるユーザーすべてでホームディレクトリに用意する必要がある。
# ~/.xinitrc
export LANG=ja_JP.UTF-8 ← 日本語でコードはUTF8を使用する
export XIM=ibus ← ココから日本語入力の設定
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=xim
export XMODIFIERS=@im=ibus
export XIM_PROGRAM="ibus-daemon"
export XIM_ARGS="-r --daemonize --xim"
exec mate-session ← 最後にmateを起動する
# cp -p ~/.xinitrc /home/xを使うユーザー/
# chown xを使うユーザー:xを使うユーザー /home/xを使うユーザー/.xinitrc
ここまでの設定の反映のための再起動とXの実行
rc.confを編集したのでここまでで一度再起動しておく。
# shutdown -r now
再起動が終われば、Xを起動してみよう。
% startx
これで、mateの綺麗なGUIが起動するはずである。ホレこの通り。
firefoxのインストールと日本語化とflashとjavaアプレットと
これからいろいろダウンロードするのにブラウザがあったほうが便利だろう。firefoxをインストールしてみる。そして日本語化して、いまだしぶとい悪名名高きflashも見れるようにして、javaアプレットも動くようにしておきたい。それらを実現するのが以下のコマンドである。
% sudo pkg install firefox firefox-i18n-28.0 icedtea-web nspluginwrapper swfdec-plugin
%
% cd /usr/ports/www/linux-f10-flashplugin11
% sudo make install clean
%
% vi /etc/fstab
linprocfs /compat/linux/proc linprocfs rw 0 0 ← 追加
パッケージでfirefoxと、firefoxの多言語対応と、javaアプレットを実行できるようにするIcedteaと、linux用のプラグインを実行できるようにするnspluginwrapperをインストールした。ライセンスの関係からパッケージが用意されていないlinux版flashはportsから昔ながらの方法でインストールした。そしてnspluginwrapperを有効にするために一発コマンドを打っておく。このコマンドはユーザーごとに打つ必要があるらしい。
% nspluginwrapper -v -a -i
さらに、pkg upgradeなどでnspluginwrapperが再インストールされた場合、最後の-iのオプションを-uに替えて打ち直す必要がある。勿論それもユーザーごとに打つ必要がある。
firefoxを日本語化するためには、さらにfirefoxを起動し、アドレスバーに”about:config”と打ちこんでパラメータをだだーっと表示させてその中から”general.useragent.locale”の値を”ja-JP”に変更し、firefoxを再起動すると日本語表示されているはずだ。
音楽聞いたり、DVD見たりもしたい
作業しながら音楽聞きたいことがあるかもしれないので音楽プレーヤーを入れてみる。
% sudo pkg install audacious audacious-plugins
作業しながらDVD見たかったりするかもしれないので動画プレーヤーも入れてみる。
% sudo pkg install mplayer
調べものして資料がpdfだったら困るのでpdfビューアーも入れとく
% sudo pkg install gv
ワードやエクセルのファイルもみたいのでオフィス関連ソフトを入れてみる。
% sudo pkg install libreoffice
いよいよReplicatorGが実行できる環境を作ってみる
Replicator2Xの純正ファームウェアのバグを修正してある有志によるカスタムファームウェア”sailfish firmware”がインストールできるReplicatorGは、以下のリンクからダウンロードできる。当然のようにFreeBSD版は存在しないのでlinux版をダウンロードする。ReplicatorGはwindows用とMac用とlinux用が用意されているが、基本的にjavaアプリなのでVM上で動作させることができれば動いちゃうかもしれないと思い、javaやその周辺のものをインストールして起動させるところまでやってみる。
これを任意の場所にダウンロードして、解凍しておく。
% unzip ./replicatorg-0040r24-Sailfish-linux.tgz.zip
% tar -xvf ./replicatorg-0040r24-Sailfish-linux.tgz
この状態ではまだこれは起動できない。結果的に必要だったのは、3D描画のためのjava3dと、USBのシリアルポート接続のためのrxtx-openjdk6と、javaアプリの文字化け回避のためのsazanamiフォントと、Gコード作成のためのpy27-tkinterの4つだ。インストール後のメッセージでfdescとprocの2つのファイルシステムをマウントするように言われたので、言われるがままにその設定も行う。
# pkg install java3d rxtx-openjdk6-2.2p2 ja-font-sazanami py27-tkinter
#
# mount -t fdescfs fdesc /dev/fd ← マウント
# mount -t procfs proc /proc ← マウント
#
# vi /etc/fstab ← 起動時にマウントするようにしちゃう
fdesc /dev/fd fdescfs rw 0 0 ← 追加
proc /proc procfs rw 0 0 ← 追加
この状態でreplicatorGスクリプトを実行すると、起動できるはずである。このように。
上部メニューバーの[Machine]→[Machine Type(Driver)]からReplicator2Xを選択し、電源の入ったReplicator2Xに接続した状態で同じく[Machine]→[Connection(Serial Port)]からRescan serial Portsを選択すると/dev/cuaU0が選択できるようになるのでそれにチェックを入れる。これでコンセントのアイコン”Connect”をクリックすると、Replicator2Xを制御できるようになる。試しにCtrl+jを押してコントロールパネルを表示させてみると、そのパネルからZ軸の移動(プレートの上下)や、XY軸の移動(ノズルの縦横)の指令やLEDの色を自由に変えたりできるようになる。[Machine]→[Upload New firmware]メニューから見事sailfish firmwareをアップロードすることに成功した。
残念なお知らせ
とここまで完璧なまでの端末っぷりを見せてくれたFreeBSDだったが、解決できない問題をいまだ多く抱えている。そのため現状では端末として使用することはできない。
まず、RplicatorG上でstlファイルを読み込ませても3D表示させることができない。どうやらjava3dがうまく動いていないようだ。どのログを見てもエラーらしいエラーを吐いていないので今のところ原因不明である。ただ本体のパラメータを変更することはできるので、スライスはmakerwareを使い、メンテナンスはreplicatorGを使うという運用になってしまっている。
もう一つ、FreeBSDには残念ながらL2TP/IPsecのサーバーになることはできてもリモートVPNクライアントとして動作するソフトウェアがどうやらないらしいのだ。だが今回はYAMAHA RTX810にリモートVPN接続する端末として使いたいのだ。サーバーではない。あくまでサーバー用途のOSであると言う事らしい。AndroidやWindowsでは当たり前のように接続するソフトウェアが標準で用意されていたので油断していた。このままではこの端末では外出先からのリモートVPNができない。strongswanを使えば拠点間VPNとしてはできそうだが持ち出し端末としては不便だ。
これらの問題はLinux mintならどうやら解決できそうだ。linux mintのインストールメディアをlive cdとして使ってブートさせた環境ではreplicatorGのlinux版が難なく動き、stlファイルを読み込ませて3D表示させることにも成功した。L2TP/IPsecもいくつかclient用のソフトがありそうだ。やはり意地を張らずにlinuxにしとけばいいのだろうか。機能の日々は続く。