OpenBlockS をほげってみる

Misc 階層に戻る  |  ホームに戻る

1. 前置き

最近、自宅の WAN 接続環境がようやくグローバルアドレス割り当て (マンション型) になって喜んでいたのですが、 同時に同一セグメントのホスト (多分同じマンション内) から がんがんウイルスが飛んでくるようになってしまって参りました。

とりあえず何らかのルータを入れて L3 的に隔離してしまおうということで色々な製品を検討しました。

玄箱:
Linux 箱として色々活用できそうだし、安くて良いのですが、 イーサネットの口が一個しか無いのでルータとしてはどうかと。 USB で増設することも出来るのでしょうが、 どうせなら最初から2個口がでてるほうが良いでしょう。
YAMAHA RTX1100:
機能的には魅力的だし、YAMAHA ルータの勉強をするには持って来いですが、 何せ値段が高すぎます…
NetScreen 5GT:
同上。 IPSec トンネルを掘るには一番簡単そうで、ぜひ一台欲しいのですけどね。

結局、小型 Linux 箱として有名な OpenBlockS を選びました。 ノート PC を使ってルータを作ることも考えたのですが、 居間の棚の上に置くには B5 サイズのノートブックでも大きいのです。

で、さらに色々 (DNS、DHCP、メールサーバ) 活用するためにハードディスクを載せました。 現在のハードウェア環境は以下の通り。

マシン:
OpenBlockS 266 (128MBモデル)
データストレージ:
ハードディスク (HGST Travelstar 4K40 20.0GB HTS424020M9AT00)

熱が怖いので、回転数 4200rpm で容量が一番小さいディスクを選んでみました。 夏場の暑さをまだ経験していないのでこれからどうなるかはわかりませんが、 今のところ1ヶ月少々はきちんと動作しています。

2.5inch のハードディスクは一般的に連続稼動を想定していないので このような使い方は危険なのでしょうが、 バックアップを定期的に取ってれば HDD が壊れてもまあいいや、 という考え方でしばらくはこのままで行ってみます。

2. Debian 化

1. Debian ユーザ環境の構築

色々サーバとして使いたいので、 いじりやすそうな Debian GNU/Linux を常用環境にすることにしました。

Debian 化の作業は極単純です。 ぷらっとホームのオフィシャルサイトから Debian ディスクイメージ をダウンロードできるので、それをストレージ上に展開するだけです。 先人たちの努力に感謝します。

ぷらっとホームのサイトに 詳細なドキュメント がありますので、ここでは書きません。

2. Debian 化参考リンク

3. クロス開発環境の構築

1. VMware Player に i386 SSD/Linux をインストール

Debian をインストールすれば使いたい機能は大抵揃うので、 そのままでも良いのですが、 カーネルにパッチを当てる必要があるときなどはどうしても ソースツリーをコンパイルする必要があります。 OpenBlockS 内部でセルフビルド環境を構築する手もありますが、 さすがにハードウェアの性能的に時間がかかりすぎてツライです。 そこで Intel ベースの PC に SSD/Linux をインストールし、 OpenBlockS 用のバイナリをクロスコンパイルできるよう環境を構築します。 とりあえず私の手元には余っている PC が無かったので、 VMware Player で仮想マシンを作ることにしました。

必要なものは以下の通りです。

VMware Player は C:\Program Files\VMware\VMware Player にインストール。 qemu-0.8.0-windows-2.zip は C:\qemu に展開しました。 まずは qemu を使って vmdk 形式の仮想ディスクを作ります。

>cd "C:\Documents and Settings\yatt\My Documents\My Virtual Machines"
>md SSD_Linux
>cd SSD_Linux
>C:\qemu\qemu-img.exe create -f vmdk SSD_Linux.vmdk 8G

さらに、エディタで設定ファイルを書きます。 私の場合は以下のようになっています。

config.version = "8"
virtualHW.version = "3"
memsize = "256"
ide0:0.present = "TRUE"
ide0:0.fileName = "SSD_Linux.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = "0.3-20060127-i386.iso"
ide1:0.deviceType = "cdrom-image"
floppy0.present = "FALSE"
ethernet0.present = "TRUE"
ethernet0.connectionType = "bridged"
usb.present = "TRUE"
sound.present = "FALSE"
sound.virtualDev = "es1371"
displayName = "SSD/Linux"
guestOS = "other24xlinux"
nvram = "SSD_Linux.nvram"
scsi0:0.redo = ""
ethernet0.addressType = "generated"
ide1:0.autodetect = "TRUE"
ethernet0.generatedAddressOffset = "0"
checkpoint.vmState = ""
tools.remindInstall = "TRUE"
ide0:0.redo = ""

ide1:0.fileName = "0.3-20060127-i386.iso" では、SSD/Linux の ISO イメージを指定します。 この場合は相対パスですので、 イメージファイルは SSD_Linux.vmx、SSD_Linux.vmdk と同じディレクトリに置いてください。

あとは、SSD_Linux.vmx ファイルをダブルクリックして 仮想マシンを起動します。

BIOS 起動画面

上の起動画面で素早く Esc キーを押します。 すると下のような起動メニューが出ますので、CD-ROM Drive を起動します。

起動デバイス選択メニュー

GRUB メニューが出ますので、 一番上の CD-ROM インストールを選択してください。 CD-ROM からカーネルが起動し、login: プロンプトになります。 ユーザ名 root (パスワード無し) でログインしたら、 画面の指示通り fdisk → sysinst を実行します。 詳しくはぷらっとホームのサイトの SSD/Linux User's Guide のセクション4「インストール」 を参照してください。

CD-ROM からのブート直後画面

私の場合は仮想ディスクのサイズを 8GB にしたので、 / = 7.5GB、スワップ = 512MB にパーティションを切りました。

fdisk の完了

インストールセットのうち、src はデフォルトではインストールされませんが、 私は選択してインストールしておきました (あとで src.tgz を展開すればソースツリーは手に入りますし、cvs checkout で最新のツリーに同期することも可能です)。

2. SSD/Linux の環境設定

インストールが終了したら、ネットワークの環境を整備します。 私の場合は自宅内で DHCP サーバが動作しているので、/etc/rc.conf に 以下のような行を追加します。

# vi /etc/rc.conf
dhclient=YES
dhclient_flags="eth0"
hostname="ssdlinux.home"
inetd=NO
sshd=YES
portmap=NO

また、root のシェル環境を設定しておきます。 以下のような環境変数の設定が必要です。

# vi .bashrc
export HOSTTYPE
export MACHTYPE
export SHELL
export CVSROOT=:pserver:anoncvs@cvs.plathome.co.jp:/cvs/ssdlinux
export PATH=/usr/cross/powerpc/bin:$PATH

# vi .bash_profile
. $HOME/.bashrc

ここでいったんリブートします。

リブートしたら、anonymous cvs が利用できる環境も整えておきましょう。

# cvs login
Logging in to :pserver:anoncvs@cvs.plathome.co.jp:2401/cvs/ssdlinux
CVS password: anoncvs
cvs login: warning: failed to open /root/.cvspass for reading: No such file or d
irectory

/root/.cvspass が無いので開けないという警告が出ていますが、 一度 cvs login すると自動的に生成されますのでこれで OK です。 以降、ぷらっとホームの anonymous cvs サーバに自動ログインできます。

あとは BSD make の変数を制御する /etc/mk.conf を好みで編集します。 私の場合は以下のようにしました。

# vi /etc/mk.conf
HAVE_CVS?=      no
IPV6?=          no

bmake release しただけで cvs update されるのは性に合わないので、 HAVE_CVS は no。また自宅環境では IPv6 を利用できないので、 IPV6 は no にしてあります。

i386 SSD/Linux をソースからアップグレードするには以下のようにします。

# cd /usr/src
# cvs update -Pd
# bmake build

ただし、0.3 から 0.4 のように、SSD/Linux のリリースバージョンが 変わっているような場合はうまくいきません。 SSD/Linux Developper's Note セクション14 を参考にバイナリアップグレードする必要があります。

OpenBlockS266 のファームウェアを作ってフラッシュに書き込む手順は こんな感じ。

# cd /usr/src
# bmake CROSS_BUILD=powerpc OPENBLOCKS=obs266 DESTDIR=/home/dest build
# cd /usr/src/distrib
# bmake CROSS_BUILD=powerpc OPENBLOCKS=obs266 DESTDIR=/home/dest bootfs
# scp powerpc-obs2xx/product/treeboot/zImage-initrd.treeboot-product openblocks:

openblocks# flashcfg -f zImage-initrd.treeboot-product

3. VMware Player 関連リンク

4. SSD/Linux 関連リンク

4. OpenBlockS 最近の事情

2006/02/01 に SSD/Linux の HEAD ブランチが 0.4 になったようです。 今のところ (2006/02/11 現在) 0.3 の最新バージョンは 0.3-20060127 です。 この後 0.3 は STABLE としてメンテナンスフェーズに入るのでしょう。

0.4 ではカーネルが 2.6.12 となり、i386 上のクロスビルド環境は powerpc だけでなく mipsel も用意されるようになりました (OpenMicroServer 対応?)。 このため、i386 版 SSD/Linux の bmake build にかかる時間が かなり長くなっています。

また、カーネルが大きくなった結果、 bmake bootfs で作られるファームウェアイメージのサイズが OpenBlockS266 のフラッシュメモリ容量 (8060928 バイト) を超えるような場合も出てきています。 本日ビルドしたイメージのサイズは以下の通り。

# ls -l
-rw-r--r--  1 root wheel 7436320 Feb 11 15:58 zImage.initrd.treeboot
-rw-r--r--  1 root wheel 7436320 Feb 11 15:59 zImage.initrd.treeboot-product
-rw-r--r--  1 root wheel 8267808 Feb 11 16:00 zImage.initrd.treeboot.big
-rw-r--r--  1 root wheel 8390688 Feb 11 16:01 zImage.initrd.treeboot.big-product
-rw-r--r--  1 root wheel 7968800 Feb 11 16:01 zImage.initrd.treeboot.pcmcia
-rw-r--r--  1 root wheel 8071200 Feb 11 16:02 zImage.initrd.treeboot.pcmcia-prod
uct

フラッシュメモリの容量を超えたら当然書き込めないので注意が必要。 ただし、私の場合はカーネルに MPPE パッチを当てているせいで大きくなっているのかもしれません。

0.3 から 0.4 への移行には (多分) バイナリアップグレードが 必要です。私の手元ではアップグレードビルドが出来ませんでしたので、 SSD/Linux Developper's Note を参考にしてバイナリアップグレードしました。 ただし、i386 版では前述の通り mipsel のクロスビルド環境が追加されて いますので、cross.tgz も展開する必要があります。

ユーザランドを Debian 化している場合は、フラッシュ上の SSD/Linux 0.4 からカーネル 2.6.12 用のモジュールを /lib/modules の下にコピーする必要があります。

obs266# mount /dev/ram0 /mnt
obs266# cp -a /mnt/lib/modules/2.6.12 /lib/modules
obs266# umount /mnt

5. OpenBlockS の活用

今現在我が家では OpenBlockS266 を DNS/DHCP/WWW/SMTP サーバとして運用していますが、 ごく普通の Debian 箱としてアプリケーションを載せただけなので特筆するようなことはありません。

最近、PPTP サーバとして使うためにファームをカスタマイズしましたが、 その話は別ページで。

6. OpenBlockS 参考リンク

Misc 階層に戻る  |  ホームに戻る

Last modified: Sun Jan 27 23:56:22 JST 2008
You are the 904th visitor.