さくらVPSでMINIX3

KVMベースのさくらVPSがあちこちで話題になっている。月額980円という値段やブラウザから利用できるコントロールパネルの出来具合もさることながら、KVMベースなので自分好みのOSをインストールできるところがマニア受けもしているようだ。社長自らがブログで「FreeBSDのインストール方法」を公開している。では、Plan 9も行けるのではと思ったのだけど、Grubからの起動やUSB bootableなディスクイメージが作れるかという点が不安だったので、まずはMINIX3で試してみた(その方向性はいかがなものかというツッコミは置いておいて)。

まず問題になるのがインストーラをどうやって起動するかだ。Linux distroならGrubから直接インストール用のカーネルとinitrdイメージを指定すればインストーラが起動するだろうが、そもそもMINIXPlan 9はELFじゃないのでこの方法は無理である。上記の社長ブログではUSB bootableイメージをスワップパーティション(/dev/hda3)にddしてchainloadすることでインストーラを起動している。

さてMINIX3ではどうしたかだである。単刀直入に言うとインストーラの起動をあきらめて、手元のVMWareでインストールした後のディスクイメージを/dev/hda3にddすることにした*1。MINIX3のページに行くとUSB bootableなイメージは公開されているのだが、このイメージをGrubから起動すると、MBRのコードが「Not bootable.」と表示して起動に失敗する。セクタのお尻のマスタブートシグネチャ(0xaa55)を見つけられないようだ。どうもディスク全体ではなくあるパーティションに書き込まれることは想定されていないようだ。インストールディスクを作成するプログラムがあるはずなので、回避する方法がありそうだが、とりあえず上記のようにインストール後のディスクイメージを作ることにした。

まずは準備として社長ブログにあるようにCentOSにログインしてネットワーク関連の情報(IPアドレス、ネットマスク、ホスト名デフォルトゲートウェイDNSサーバ)を調べておく。さらにディスクのジオメトリ情報が必要になるので、fdiskの情報をメモしておく。

VMWare上でMINIX3をインストールするために、さくらの環境に合わせて20GBの仮想ディスクを作成する。ちなみにバスはSCSIではなくIDEを選択すること。MINIX3はおそらくSCSIに対応していない。MINIX3のインストール方法は特に難しいものではないので割愛するが、パーティションの切り方はさくらの環境に合わせること。ここが重要である。MINIX3のfdiskが不安だったら、別途Linuxなど使い慣れたOSでパーティションを切ればOK。どのみちMINIX3インストール後のディスクイメージを吸い出すためにも別OSは必要になる。あと、ネットワークドライバはe1000を選択。

念のため、MINIX3のfdiskの結果は次のようになる。

で、MINIX3の/dev/c0d0p2(Linuxの/dev/hda3)にインストールを開始する。

インストールが終わったら、このディスクイメージを共有設定でLinux VMに接続して、ddで吸い出す。bsとcountを指定しているのはパーティションサイズをオーバランしないようにするため。2GBのディスクイメージができるが、bzip2で圧縮すれば12MB程度のサイズになる。

# dd if=/dev/hda3 of=minix3.img bs=2048287 count=1024
# bzip2 minix3.img

そして、minix3.img.bz2をさくらVPSに転送してddする。

# swapoff -a
# bzip2 -c minix3.img.bz2 | dd of=/dev/hda3

あとはgrub.confにエントリを追加して再起動すればOKである。シリアルコンソールには何もでないのでVNCコンソールを使えばよい。VNCはまだ隠し機能らしいが、https://secure.sakura.ad.jp/vpscontrol/main/vncからアクセスできる。

title MINIX3
	rootnoverify (hd0,2)
	chainloader +1

GrubのメニュからMINIX3を選択すると、

ちゃんとMINIX3が起動した。

packmanからX Windowをインストールして、動くことも確認した。ただXの起動中はなぜかsshでログインできない状態になってしまう。何が起きているのだろう? まぁ、VPSでXを使うことはないだろうから追求はしない。

*1:ここではVMWare Fusionを使っているけど、KVMが使える人はその上で作業した方が動作確認にもなっていいと思う。