oms


OpenMicroServerでDebian Sargeを使う

Kenshi Muto (Debian Project)


OpenMicroServerは、ぷらっとホーム株式会社が設計・販売しているマイクロサーバである。フラッシュメモリにはSSD/LinuxというBSD風のLinuxがプリインストールされており、これを使って簡単なネットワークサーバを実現できる。

また、本製品は、フラッシュメモリ(の書き換え)/CFカード/USB/TFTPからもシステムを起動できるので、SSD/Linuxの代わりに別のOSを使うことも可能である。本Wikiでは、OSとして完成度・安定度・利便性の高いDebian GNU/Linux 3.1 Sargeのシステムを本製品で運用する方法を説明する。

ハードウェア情報

今回の説明の対象製品は、OMS-AL400/128である。今後新製品が登場するにせよ、アーキテクチャが同種であれば本Wikiの説明は流用できると思われる。

Linuxからは、次のように見える。

Debianのインストール

Debian GNU/Linux 3.1 Sargeはmipsel版インストーラも用意しているので、TFTP経由のインストールがおそらく動くのではないかと思われるが、今回は既存のSSD/Linux環境を流用したインストールと配備を行うこととした。

別途、UNIX系のNFSサーバマシンが必要となるのでご用意されたい。また、コンソールにはシリアルコンソールを使うので、このコンソールを表示できる環境も必要だ。今回はCFにインストールするが、USBディスクでもほぼ同様の手続きで可能だ。CFへの書き込みの前に最初にNFSルート環境上で十分に設定とサイズ調整を済ませることにする。

debootstrap環境の用意

一般的には、debootstrap(perl+binutilsを使った簡易インストーラ)を使って配備するのだが、debootstrapの構造上、同一アーキテクチャでこれを実行しないと途中でエラーになり、かなりの苦労をしつつ手動で完了まで持っていくことになる。apt-getのぬるま湯ではなく生のdpkgやarコマンドをがりがりといじるのもそれはそれで面白いのかもしれないが、さっさとインストールできる方法を紹介したほうがよいだろう。

Debian Projectの大沢氏の協力を得て、debootstrap配備後のディレクトリ構成のtar+gzファイルを http://kmuto.jp/debian/oms/sarge-root.tgz (38209808 bytes, MD5: 9331326da217a58dc67af9fbcf58469f) として取得可能にした。

これをNFSサーバのエキスポートディレクトリに配備する。

# cd /home/oms
# tar zxpvf /tmp/sarge-root.tgz
.
./var
./var/lib
 ...
#

SSD/Linuxからのマウントとchroot

続いて、NFSディレクトリをOpenMicroServerからマウントして実際にDebianを動作させてみることにしよう。

OpenMicroServerにシリアル経由でログインし、IPアドレスがNFSサーバのexportsで許可しているアドレスと合致していることを確認したら(ifconfigで設定変更できるし、dhclient NICインターフェイス名 でDHCP取得することもできる)、次のようにマウントしてみる(NFSSERVERIPにNFSサーバのIPアドレスを指定)。

# mount -t nfs -o nolock NFSSERVERIP:/home/oms /mnt

NFSマウントできたら、procも設定しておこう。

# mount -t proc proc /mnt/proc

Debian GNU/Linux 3.1 Sargeでは以下のコマンドに問題があるため、親環境から/mntの同ディレクトリにコピーしておくのがよい。まじめにやるならdivertする。

あとはchrootコマンドでDebian環境に入ることができる。

# chroot /mnt

おなじみの動作(dpkg、lsなど)がだいたいできることを確認できるだろうか。

さらに、chroot環境で以下のファイルを修正する。

CFへの書き込み準備

NFSルート環境での実験が終わったら、いよいよCFのスタンダローン環境に書き込みをしていく。

一度NFSを解除して(exitでchrootを抜け、umount /mnt/proc; umount /mnt)、NFSサーバ側では既存のNFSルート環境のバックアップを取っておこう。

再びNFSマウントして、NFSサーバ側ではdu -smでディレクトリサイズ(MB単位)を見ながらCFの容量に収まるよう不必要なファイルを削除していく。日本語環境は大きいので英語のみとするのがよいだろう。

CFへの書き込み

では、CFに書き込みを行う。chrootから抜けて、CFをフォーマットし、新たに作成した/targetディレクトリにこれをマウントする。CFの書き込み回数を制限するため、noatimeオプションを付けることにした。CFは/dev/hda1としてすでにパーティション作成済み(今回のものはVFATフォーマットされていた)とする。パーティションがない、あるいは過去に別の構成になっていたときには、fdiskコマンドで1パーティションに作り直す必要がある。USBディスクの場合には/dev/hda→/dev/sdaに適宜読み変えされたい(/etc/fstabに注意)。

# mke2fs -j /dev/hda1
# mkdir /target
# mount -o noatime /dev/hda1 /target

/mntにあるNFSルートを、この/targetにコピーする。

# cd /mnt
# tar cf - .| tar xCp /target

chroot /targetで一応動作することを確認できたら、次は起動時のルートパーティションを変更する。

# flashcfg -c /dev/hda1

再起動

祈りながらrebootを実行し、Debianがブートすることを確認する。以降は普通のDebian GNU/Linuxとほとんど変わらない。

起動に失敗してしまったときには、ブートローダで/dev/ram (フラッシュ)をルートディスクとして読むように設定するか、INITボタンを押しながら電源を入れ直してフラッシュから起動し、修正を行う。

フラッシュの内容は/initrdにマウントされているので、ここから必要なツールを拾い出すこともできる。

運用

問題(情報求む)

minicom

リンク


Last modified : 2006/02/21 22:50:19 JST