※以下の口上は2006年2月に書いた内容です。 2章以降は 2008/01 に最新の情報を反映するよう書き換えました。 古い内容のページ も一応残してあります。
最近、自宅の WAN 接続環境がようやくグローバルアドレス割り当て (マンション型) になって喜んでいたのですが、 同時に同一セグメントのホスト (多分同じマンション内) から がんがんウイルスが飛んでくるようになってしまって参りました。
とりあえず何らかのルータを入れて L3 的に隔離してしまおうということで、色々な製品を検討しました。
結局、小型 Linux 箱として有名な OpenBlockS を選びました。 ノート PC を使ってルータを作ることも考えたのですが、 居間の棚の上に置くには B5 サイズのノートブックでも大きいのです。
…以上のような経緯で、 ぷらっとほーむの OpenBlockS266 を2005年12月に購入しました。 当初は mail / web サーバとしても利用していましたが、 その後、負荷のかかる部分は別サーバに分離することとして、 現在 (2008/01) はルータ / DNS / DHCP / PPTP / NTP サーバとして運用しています。
現在の運用では、必要とするストレージ容量が少なくなったため、 1GB の CF を搭載して運用しています。 過去に mail / web サーバとして利用していたころは容量が必要だったため、 普通の 2.5inch ハードディスクを搭載して約1年半運用しましたが、 結局壊れることはありませんでした。
色々サーバとして使いたいので、 いじりやすそうな Debian GNU/Linux を常用環境にすることにしました。
Debian 化の作業は極単純です。 ぷらっとホームのオフィシャルサイトから Debian etch ディスクイメージ をダウンロードできるので、それをストレージ上に展開するだけです。 先人たちの努力に感謝します。
ぷらっとホームのサイトに 詳細なドキュメント がありますので、ここでは書きません。
Debian をインストールすれば使いたい機能は大抵揃うので、 そのままでも良いのですが、 カーネルにパッチを当てる必要があるときなどはどうしても ソースツリーをコンパイルする必要があります。 そこで Intel ベースの PC に SSD/Linux をインストールし、 OpenBlockS 用のバイナリをクロスコンパイルできるよう環境を構築します。 現在、私の手元では VMware Server 1.0 で環境を構築しています。
必要なものは以下の通りです。
VMware Server を利用して仮想マシンを作成します。 「File」メニュー→「New」→「Virtual Machine...」 を選択して新規仮想マシン作成ウィザードを開きます。
「Virtual machine configuration」では「Custom」を選択します (Typical ではディスクタイプを強制的に SCSI にされてしまうため)。
「Guest operating system」では、OS は Linux、バージョンは "Other Linux 2.6.x kernel" を選択。
仮想マシンの名前やアクセス権、CPU 数、メモリ割り当て、 ネットワーク接続については、好みのものを選択します。 メモリ割当量は、256MB 程度でいいでしょう。
「Virtual Disk Type」では IDE を選択します。 SSD/Linux のカーネルは、デフォルトでは LSI Logic のドライバを持っていませんので。
ディスク容量については、とりあえずデフォルトの 8GB で足ります。 OS を丸ごとコンパイルするため、作業領域が必要になりますが、 コンパイル後のバイナリを含めたディスク使用容量は約 4GB 程度です。
ウィザードが終了したら、仮想マシンの設定を編集して、 CD-ROM デバイスに SSD/Linux の ISO イメージを指定します。
ここまで終了したら、仮想マシンを起動します。
上の起動画面で素早く Esc キーを押します。 すると下のような起動メニューが出るので、CD-ROM Drive を選択して起動します。
最初に GRUB メニューが出ますので、 一番上の「Boot from CD」を選択してください。
CD-ROM からカーネルが起動し、以下の図のような login: プロンプトになります。 ユーザ名 root (パスワード無し) でログインした後、 画面の指示通り fdisk → sysinst を実行します。 詳しくはぷらっとホームのサイトの SSD/Linux User's Guide のセクション4「インストール」 を参照してください。
私の場合は仮想ディスクのサイズを 8GB にしたので、 / = 7.5GB、スワップ = 512MB にパーティションを切りました。
インストールセットはそのままデフォルトの選択として、 src (OS 全体のビルドツリー) は後で cvs にて取り出すことにします。
インストールが終了したら、ネットワークの環境を整備します。 私の場合は自宅内で DHCP サーバが動作しているので、/etc/rc.conf に 以下のような行を追加します。
# vi /etc/rc.conf dhclient=YES hostname="ssdlinux.hoge.local" 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/mipsel/bin:/usr/cross/powerpc/bin:/usr/cross/x86_64/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 にしてあります。
最新のソースを cvs で取り出します。
# cd /usr # cvs checkout -P src
ソースが入手できたら、いろいろいじった上でビルドします。
# cd /usr/src # bmake build
今後、ソースを最新に追従させるには以下のようにして、またビルドします。
# cd /usr/src # cvs update -Pd # bmake build
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
上で指定している /home/dest は適当です。 バイナリの出力先なので、それなりに容量のあるパーティションならOK。
ユーザランドを Debian 化している場合は、フラッシュ上の SSD/Linux 0.4 からカーネルモジュールを /lib/modules の下にコピーする必要があります。
obs266# mount /dev/ram0 /mnt obs266# cp -a /mnt/lib/modules/2.6.12 /lib/modules obs266# umount /mnt
OpenBlockS266 のフラッシュメモリ容量は 8060928 バイトですので、 これを超えるようなイメージができてしまった場合は、 カーネルオプションを外すなどして調整してください。 オーバーサイズのイメージは当然フラッシュに書き込めません。
今現在我が家では OpenBlockS266 を DNS / DHCP / NTP サーバとして運用していますが、ごく普通の Debian 箱としてアプリケーションを載せただけなので、 特筆するようなことはありません。
PPTP サーバとしても利用していますが、現在の 2.6.16 カーネル用 デフォルトコンフィグを使えば、カスタマイズせず利用できます。 過去のカスタマイズ話は 別ページで。