さくらのVPS de Solaris 11 Express

このところVPS業界ではさくらのVPSが話題になっているようです。月額980円という挑戦的な価格も魅力的ですが、Linux KVMによる完全仮想化を採用し、ユーザの責任でOSを入れ替えられる自由度の高さがマニア心をくすぐっているようです。
さくらのVPSは、KVM+QEMUでCPUからエミュレーションしている完全仮想化環境なので、x86アーキテクチャに対応したOSならほとんど何でも動作させることができる可能性があります。Windowsの動作報告までありますので、Solarisもきっと動作するでしょう。ということで、Solaris 11 Express を入れてみることにしました。

サービス申し込み

さくらのVPSは2週間のお試し期間がありますので今回はそれを利用します。以下のサイトからサービスを申し込むことができます。申し込み後、30分とかからず使用を開始することができます。
さくらのVPS|VPS(仮想専用サーバ)はさくらインターネット

OS変更のシナリオ

さくらのVPSのOSを変更する方法は大きく分けて3種類ほどあります。

コントロールパネルからOSを変更する

コントロールパネルの「OS再インストール」→「カスタムOSインストール」から、各種のLinuxディストリビューションFreeBSDをインストールすることができます。現在は、 CentOS 5.5, Ubuntu 10.04, FreeBSD 8.1, Debian 5.05, Fedora 13 のそれぞれ32ビット版と64ビット版に対応しています。
カスタムOSインストールを実行すると、VNCコンソールでインストーラが起動し、普通にOSをインストールするのと同じように操作できます。約20GBの仮想HDDを自由に使えますので、パーティションを切り分けたり、SWAP領域を追加することもできます。

インストーラを空き領域から起動する

さくらのVPSではデフォルトで2GBのSWAP領域が用意されています。この領域にOSインストーラのイメージを書き込んで、GRUBからインストーラを起動し、もともとのOSを上書きする方法です。
各種のLinuxディストリビューションなどはこの方法でインストールできます。さくらの田中社長のブログにはこの方法でFreeBSDをインストールする手順が紹介されています。
さくらのVPSにFreeBSDをインストールする (さくらインターネット創業日記)
Solaris 11 ExpressもUSBインストールイメージが公開されているのでこの方法でインストールできそうな気がしたのですが、うまくいきませんでした。

OSインストール済みのHDDイメージを転送する

この方法は、VMWareVirtualBoxなどの別の仮想環境(別に実環境でもいいですが)であらかじめOSをインストールしてあるHDDイメージを作っておき、VPSの仮想HDDにssh+ddで書き込む方法です。
この方法でWindowsが動作するとの報告がありました。実際にWindowsを仮想環境で動かす場合はライセンスの注意が必要です。
さくらのVPSでWindowsを動かす夢をみた:元現役高校生サーバー管理者の考察日誌 - CNET Japan

この方法ならHDDイメージさえ作れればよいので最も柔軟です。この方法で、Solaris 11 Express をインストールしてみます。HDDイメージの作成には、VirtualBoxを使用します。

VPSにイメージ転送用のOSをインストールする

ネットワーク情報をメモしておく

カスタムOSインストールの画面にも表示されますが、以下の情報をメモしておきます。

転送用のOSをインストールする

HDDイメージを転送するためにVPS側にOSをインストールします。
パーティションを変更するので、カスタムOSインストールでインストールします。インストールするOSはどれでもいいですが、私はUbuntuの32ビット版にしました。
インストール手順は省略しますが、インストーラからはHDD容量が21.5GBに見えたので、以下のようにパーティションを切りました。

/dev/sda
  /dev/sda1 20.0GB <- 空けておく
  /dev/sda2  1.5GB <- Ubuntu の「/」パーティション
rootでSSHを使用できるようにする

rootのパスワードを設定します。

sudo passwd root

さくらのVPSではsshd_configのPermitRootLoginがデフォルトでyesになっていますので、rootのパスワードを設定すればSSHで接続できますが、実運用時はnoかwithout-posswordにした方がよいと思います。

VirtualBoxでHDDイメージを作成する

VirtualBoxの入手

VirtualBoxは、WindowsMac OS XLinuxSolarisなど様々なOSに対応した仮想化ソフトウェアです。無料で使用することができ、UIも使いやすく、動作もそれなりに速いのでおすすめです。
以下のサイトからダウンロードすることができます。
http://www.virtualbox.org/wiki/Downloads

Solaris 11 Expressの入手

Solaris 11 ExpressはOracleのサイトからダウンロードできます。VPSで使用するのにGUIは使わないと思いますので、「Download for x86 - Text Install」のところからISOイメージをダウンロードしてください。ダウンロードするにはOracleのアカウント作成が必要です(無料)。
http://www.oracle.com/technetwork/server-storage/solaris11/downloads/index.html

VirtualBoxSolaris 11 Expressをインストールする

インストールは以下のことに気をつければ特に問題ないと思います。

  • HDDの容量は20GB以下にする
  • HDDの接続がデフォルトではSATAになっているのでIDEにする(設定→ストレージのところで変更できます)
HDDイメージを変換する

HDDイメージをVirtualBoxの形式からRAW形式(ddで書き込める形式)に変換します。HDDイメージはホームディレクトリの下の「.VirtualBox\HardDisks」配下にあります。
VirtualBoxに付属のVBoxManageコマンドでHDDイメージを変換することができます。以下の例では"sol11exp.img"という名前のファイルに変換しています。

VBoxManage clonehd "Solaris 11 Express.vdi" sol11exp.img --format RAW

VirtualBoxのVDI形式だとファイルサイズは仮想HDDの容量を消費している分だけになりますが、RAW形式ではファイルサイズが仮想HDDのサイズになります。転送時間の短縮のためにgzipで圧縮しておきます。私が試したときは、インストール直後で1GBくらいに圧縮できました。

gzip sol11exp.img

HDDイメージを転送する

ssh+ddでHDDイメージを書き込みます。この手順を実行すると、既存のOSは起動できなくなりますので十分に注意してください。x.x.x.x はVPS側のIPアドレスです。

cat sol11exp.img.gz | ssh root@x.x.x.x "gzip -dc | dd of=/dev/sda"

書き込みが終わったら、VPSを再起動して、VNCコンソール(シリアルコンソールは使用不可)を起動すると、GRUBの画面が表示されてSolaris 11 Expressを起動することができます。

Solaris 11 Expressの設定

主にネットワークの設定を行います。

NICを認識させてIPアドレスを割り当てます。さくらのVPSNICVirtualBoxと同じIntelNICをエミュレーションしているのでe1000gドライバが使えます。

ifconfig e1000g1 plumb
ifconfig e1000g1 x.x.x.x netmask 255.255.254.0 up

設定ファイルも作っておきます。

vi /etc/hostname.e1000g1
  • -
x.x.x.x netmask 255.255.254.0

デフォルトゲートウェイを設定します。routeコマンドに-pオプションを付けて実行すると /etc/inet/static_routes に書き込まれ、OS再起動後も設定が残ります。

route -p add default x.x.x.1

DNSの設定を行います。

vi /etc/resolv.conf
  • -
nameserver 210.224.163.4 nameserver 210.224.163.3 search sakura.ne.jp

NTPの設定を行います。

vi /etc/inet/ntp.conf
  • -
server ntp1.sakura.ad.jp server 127.127.1.0 fudge 127.127.1.0 stratum 13 driftfile /var/ntp/ntp.drift statsdir /var/ntp/ntpstats/
svcadm enable ntp

問題点

シリアルコンソールとVNCコンソールの併用ができない

/rpool1/boot/grub/menu.lst に以下のように設定すればシリアルコンソールを使用できますが、VNCコンソールと併用はできません。

vi /rpool1/boot/grub/menu.lst
  • -
... kernel$ /platform/i86pc/kernel/$ISADIR/unix -B $ZFS-BOOTFS,console=ttya,ttya-mode="115200,8,n,1,-" ...
起動中によくフリーズすることがあるような気がする

起動中によくフリーズすることがあるような気がするのですが、再現条件も原因も不明です。

  • フリーズするのは Hostname: が表示された後
  • シングルユーザモードでは確実に起動するので、マルチユーザモードに移行するまでのどこか
  • GRUBで-vオプションを付けて起動してみるとフリーズする箇所はだいたい以下のあたり
...
Hostname: solaris
pseudo-device: zfs0
zfs0 is /pseudo/zfs@0
This Solaris instance has UUID 963bc2aa-afca-ccbd-8dd3-d6de568bc6b4dump on /dev/
zvol/dsk/rpool1/dump size 384 MB
=== ここでフリーズ ===

起動できたら、後は安定して動いているように見えるので、動作しないことはないのでしょうが、ちょっと降参。