FreeBSDでDice Linux版を動かす 


2004年04月29日

前ページの通り、Windows端末にDiCE Windows版をセットアップして、試験的に独自ドメインでの稼働確認をしてきた結果、ちゃんとIPアドレス変更時にminiDNSを書き換えてくれることを確認出来ました。しかし私が行いたいのはFreeBSD上でminiDNSを書き換える様にしたいのです。miniDNSではLinux用の書き換えツールを配布しているのですが、残念ながらFreeBSD用は無いみたいです。色々と探してみたのですが、見つかりません。FreeBSDユーザーでminiDNSを使っている人は、どうしているのかなぁ...

という事で考えていても進まないので、今度はDiCE Linux版を試してみます。いきなり稼働しているWebサーバに入れるのは慎重さに欠けるので、VMWareを使ったFreeBSD4.9Rの試験環境でDiCE Linux版を試してみます。

今まで重要だとは思っていなかったのですが、FreeBSDにはLinuxバイナリ互換機能が備わっています。なので今回はこの機能を使ってみようと思います(っていうか他の方法が思いつかない)。FreeBSDインストール時にLinuxバイナリ互換機能をセットアップしていたのであればそのまま作業に入れると思うのですが、私はセットアップをスキップしていたので、改めてセットアップし直さなくてはなりませんでした。

Portsから、linux_base-6をインストールしてみます。/usr/ports/emulators/にlinux_base-6がありましたので、portinstallでサクッとインストールしてみました。/stand/sysinsatallからでもインストール出来ると思いますので、ご自分の環境に合った方法でインストールして下さい。その後で、恐らく再起動しないと有効にならないと思いますが、どうしても再起動させたくない場合は、下記のコマンドをroot権限で試して見て下さい。(Linuxバイナリ互換機能をカーネルに読み込みます)

# kldload linux

Linuxバイナリ互換機能がカーネルに組み込まれたかどうかを確認するには、下記の様にコマンドを入れます。

# kldstat

ID
Refs
Address Size Name
1
3
0xc0100000 43d998 kernel
2
1
0xc0d80000 15000 linux.ko

linux.koという名前のモジュールが表示されたら、カーネルへの組み込みが成功しているという事です。上手く行かない時は素直に再起動するしか無いかも知れません。さてこれで準備OK。(次からはrc.confに記述されているので、FreeBSDサーバを再起動したら自動的にLinuxバイナリ互換機能がカーネルに組み込まれます。)

ちなみにカーネルから解放する場合は、下記のようにコマンドを投入すると良いようです。その後でkldstatして確認してみて下さい。

# kldunload linux

ちょっとした予備知識でした。また少しFreeBSDが身近に感じられるようになってきたぞ(笑 ←大げさすぎる

まずはDiceのLinux版をゲットして解凍する

とりあえずDiCE Linux版をゲットして来ましょう。Windows端末でも良いです。後でFTP転送すれば良いことです。FreeBSDサーバを直接操作してwget等で取りに行ける方はそうしてもかまわないと思います。

私はWindows端末でゲットして来たので、FTPでFreeBSDサーバに転送します。転送が終わったらsuになって、root権限を使える様にして下さい。

私が手に入れたDiCE Linux版は、diced0199.tar.gzというバージョンの付いたファイル。これを実行ファイルのディレクトリに移動させます。どこでも良かったりするのでしょうが、/usr/local/binが適当かなと私は思います。

# mv diced0199.tar.gz /usr/local/bin
# cd /usr/local/bin
# tar zxvf diced0199.tar.gz

これで、DiCEというディレクトリが作られて、DiCEの構成ファイルが解凍されます。このディレクトリ内にDiCEの実行ファイルである、dicedとプラグインの類のファイルが入っています。元のファイルはもう要らないので、削除してしまっても良いでしょう。

# rm diced0199.tar.gz

dicedをLinuxバイナリだと明示する

FreeBSDにLinuxバイナリ互換機能が備わっているからと言っても、単純に同じ操作ではダメな様です。dicedがLinuxバイナリだと言うことを、FreeBSDに教えてやらなくてはなりません。brandelfコマンドを使います。

# cd DiCE
# brandelf -t Linux diced
# file diced
diced: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), dynamicall
y linked (uses shared libs), stripped

上記の様な手順でdicedがLinuxバイナリファイルだという事を明示的に設定します。

DiCEを起動する

いきなりですが、ここでやっかいなことを思い出しました。VMWareを使って試験環境のFreeBSD4.9Rの環境で気づいていたのですが、すっかり忘れていました。

DiCEは日本語対応なので、TelnetやSSH等のリモート操作では日本語が文字化けします。多分RedHatやVine等の日本語環境が整った環境下で使う事を前提としているようですね。私のFreeBSDサーバは、全然日本語対策していないので参りました。

ここはとりあえずkon(Kanji On Console)を使うしかないですね。portinstallを使って、Portsからkon2-16dotをインストールしました。普段使わないから要らないんだけどなぁ。konをインストールしていない人は、kon2等をPortsやPackageからインストールして下さい。

普段はキーボードもモニターも接続していないのですが、今回ばかりは仕方ないのでディスプレイとキーボードを本体に取り付けて作業する事にします。直接FreeBSDサーバを操作している人は全然問題無いです。konを起動して日本語表示に対応させて下さい。

# kon

KON2 Kanji On Console ver.0.3 (1998/10/31) using VT number 0
                    Copyright (C) 1993-1996 Takashi MANABE
                           1993, 1994 MAEDA Atusi

KON for FreeBSD-2.x ver0.01 Takashi OGURA
# |

kon(日本語表示)の準備が出来たら次のステップに進みましょう。

DiCEを起動して使えるコマンドを把握する

kon(日本語表示)の準備が出来たらdicedを起動します。下記の様になればOKです。

# /usr/local/bin/DiCE/diced

=-=-=- DiCE DynamicDNS Client -=-=-=
Version 0.19 for Japanese
Copyright(c) 2001 sarad

: ? ←ヘルプコマンドとして?を入力すると、下記の様な説明が表示される。

*** 起動オプション ***

 
diced [-s|-d|-h|-e] [-b] [-l]  
-s 起動と同時に開始します
-d 起動と同時にバックグラウンドで開始します
-h コマンドオプションを表示します
-b イベント実行時にビープ音を鳴らします
-l ログを作成します
-e<EventNo> 指定のイベントを実行して終了します
   
*** コマンド一覧 ***  
exit DiCEを終了します
start DiCEを開始します
startd DiCEをバックグラウンドで開始します
setup DiCEの環境設定を行います
list 登録済のイベント一覧を表示します
add イベントを追加します
ed[it] <番号> イベントを編集します
del <番号> イベントを削除します
en[able] <番号> イベントを有効にします
dis[able] <番号> イベントを無効にします
ev[ent] <番号> イベントの情報を表示します
ex[ec] <番号> イベントを今すぐ実行します
logcr ログをクリアします

ふぅ、コマンド拾い上げるのに苦労した。SSHが使えないとこうも辛いものか...

上記の情報とDiCE Windows版での挙動を把握していれば、詳しい解説は不要だと思われますので、イベントの登録手順等は割愛します。
なぜかというと、DiCE Linux版の解説は色々なサイトでなされているので、今更私が作るまでもないからです。それともう一つの決定的な理由は、FreeBSDに備わっているLinuxバイナリ互換機能(linux_base-6)を使って、DiCE Linux版を動かしてみましたが、私のセッティングが悪いのか、残念ながら上手く動作しなかったからです

DiCE Linux版は、 見た目バックグラウンドでプロセスとしてdicedが常駐してくれます。ルーターに割り当てられたグローバルIPアドレスもしっかりと取得してくれたのですが、肝心のIPアドレス変更時に、DDNSの書き換えアクションを起こしてくれませんでした。DiCE Linux版はオープンソースではないので(オープンソースだったとしても私の技量では解読不可)、残念ながらこれ以上は調べられないと断念することにしました。

しかし、もしかしたらLinuxバイナリ互換機能(linux_base-8)環境なら動作するかも知れません。これは未検証なので、DiCE Linux版がFreeBSDで動作しないとは言い切ることが出来ません。FreeBSDのLinuxバイナリ互換機能を使って、DiCE Linux版のセットアップに成功された方がいらっしゃったら、そのノウハウを教えて頂ければ幸いです。

と、いう訳で私はFreeBSDのLinuxバイナリ互換機能でDiCE Linux版を動かすことを断念しました。

仕方ないので、UNIX対応のminiUpdateを使ってみることにします。(NEXTへ続く)


Amazon.co.jp アソシエイト

専門書籍はこちから購入することが出来ます。良かったら探してみて下さい。