最近、自宅の WAN 接続環境がようやくグローバルアドレス割り当て (マンション型) になって喜んでいたのですが、 同時に同一セグメントのホスト (多分同じマンション内) から がんがんウイルスが飛んでくるようになってしまって参りました。
とりあえず何らかのルータを入れて L3 的に隔離してしまおうということで色々な製品を検討しました。
結局、小型 Linux 箱として有名な OpenBlockS を選びました。 ノート PC を使ってルータを作ることも考えたのですが、 居間の棚の上に置くには B5 サイズのノートブックでも大きいのです。
で、さらに色々 (DNS、DHCP、メールサーバ) 活用するためにハードディスクを載せました。 現在のハードウェア環境は以下の通り。
熱が怖いので、回転数 4200rpm で容量が一番小さいディスクを選んでみました。 夏場の暑さをまだ経験していないのでこれからどうなるかはわかりませんが、 今のところ1ヶ月少々はきちんと動作しています。
2.5inch のハードディスクは一般的に連続稼動を想定していないので このような使い方は危険なのでしょうが、 バックアップを定期的に取ってれば HDD が壊れてもまあいいや、 という考え方でしばらくはこのままで行ってみます。
色々サーバとして使いたいので、 いじりやすそうな Debian GNU/Linux を常用環境にすることにしました。
Debian 化の作業は極単純です。 ぷらっとホームのオフィシャルサイトから Debian ディスクイメージ をダウンロードできるので、それをストレージ上に展開するだけです。 先人たちの努力に感謝します。
ぷらっとホームのサイトに 詳細なドキュメント がありますので、ここでは書きません。
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 ファイルをダブルクリックして 仮想マシンを起動します。
上の起動画面で素早く Esc キーを押します。 すると下のような起動メニューが出ますので、CD-ROM Drive を起動します。
GRUB メニューが出ますので、 一番上の CD-ROM インストールを選択してください。 CD-ROM からカーネルが起動し、login: プロンプトになります。 ユーザ名 root (パスワード無し) でログインしたら、 画面の指示通り fdisk → sysinst を実行します。 詳しくはぷらっとホームのサイトの SSD/Linux User's Guide のセクション4「インストール」 を参照してください。
私の場合は仮想ディスクのサイズを 8GB にしたので、 / = 7.5GB、スワップ = 512MB にパーティションを切りました。
インストールセットのうち、src はデフォルトではインストールされませんが、 私は選択してインストールしておきました (あとで src.tgz を展開すればソースツリーは手に入りますし、cvs checkout で最新のツリーに同期することも可能です)。
インストールが終了したら、ネットワークの環境を整備します。 私の場合は自宅内で 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
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
今現在我が家では OpenBlockS266 を DNS/DHCP/WWW/SMTP サーバとして運用していますが、 ごく普通の Debian 箱としてアプリケーションを載せただけなので特筆するようなことはありません。
最近、PPTP サーバとして使うためにファームをカスタマイズしましたが、 その話は別ページで。