Walbrixで仮想マシンとして提供されているのは、OSSソフトウェアをパッケージにしたものだけです。Windowsのようにライセンスが必要なものは、当然ながら提供されていません。が、技術情報としてWalbrixにWindowsをインストールするというページが用意されていますので、こちらを参考にWindows VMを作成します。
前提条件の確認
まず、CPUが仮想化命令をサポートしているかどうかを確認するのですが、幸いにしてmac mini late 2009は仮想化命令をサポートしていました。まず前提条件はクリアです。
もうひとつの条件であるHDDですが、Walbrixの技術情報ページにあるのと同じように、Windows専用に外付けHDDを用意しています。mac mini late 2009の内蔵HDDは320GBしかないので、iTunesサーバなどに使うには容量がこころもとないと思い、3TBの外付けHDDを使うことにします。内蔵DVDドライブの読み込みが悪いので、DVDドライブも外付けのものを使いました。
SSHで作業できるようにrootパスワードを設定する
コンソールで作業するよりも別のmacから作業する方が楽なので、SSHで接続できるようにWalbrixを設定します。と言っても必要な作業は、rootパスワードを設定するだけです。
Walbrixを起動して、「設定とツール」メニュー内にある「Linuxコンソールの利用」を選択します。Linuxコンソール画面になったらpasswdコマンドを使ってパスワードを設定し、exit。これ以降、Walbrix起動のたびにパスワードの入力を求められるようになりますが、そもそもそうそう再起動するものではないので手間に感じることもないでしょうきっと。
Walbrixの「状態」画面でiPアドレスを調べ、sshでログインできることを確かめてみましょう。
# ssh -l root 192.168.xxx.xxx
[Password:
WBFREE01 ~ #
ログインできることを確認できたら、作業の下準備は完了です。
Windowsをインストールするドライブ、DVDドライブのデバイス名を調べる
lsscsiコマンドを使って外付けしたHDDドライブを特定するのですが、ここでちょっとうろたえました。同じ製品を2基接続しており、ひとつは既にownCloud用に使っていて、もうひとつをWindows用に使うつもりでした。当たり前ですが、lsscsiでは同じ名前が並ぶことになり、どちらがどちらかわかりません。
WBFREE01 ~ # lsscsi
[0:0:0:0] disk ATA Hitachi HTS54503 C60Q /dev/sda
[1:0:0:0] cd/dvd OPTIARC DVD RW AD-5680H 3AHB /dev/sr0
[6:0:0:0] disk Seagate Expansion Desk 4C01 /dev/sdb
[7:0:0:0] disk Seagate Expansion Desk 4C01 /dev/sdc
[9:0:0:0] cd/dvd MATSHITA BD-MLT UJ260AF 1.20 /dev/sr1
DVDドライブの方は /dev/sr0 が内蔵ドライブですね。/dev/sr1 で確定です。さて、Windowsをインストールしようと思っているHDDは /dev/sdb か /dev/sdc かどちらでしょう? それを調べるためにWalbrixのGUI画面で「領域」メニューを開き、「新規作成」を選んでみます。まだ使われていない、接続したばかりのドライブが選択肢に出てくるはずです。
と表示されたので、どうやらまだ使っていないディスクは /dev/sdb のようです。
2TB以下にパーティションを分割する
今回使うのは3TBのHDDですが、xenを使ってBIOSで起動ディスクとして使えるのは2TBまで。3TBのドライブをそのまま使うと1TB近く(実際には800GB近く)無駄になってしまいます。回避策として、仮想マシンからは800GBと2TBの2台のHDDに見えるようにします。簡単に言えば、HDDをパーティションで区切り、それぞれを個別のドライブとして仮想マシンに認識させます。
WBFREE01 ~ # fdisk /dev/sdb
fdisk (util-linux 2.25.2) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。
コマンド (m でヘルプ): n
パーティション番号 (1-128, default 1):
最初のセクタ (34-5860533133, default 65535):
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (65535-5860533133, default 5860533133): +800G
新しいパーティション 1 をタイプ Linux filesystem、サイズ 800 GiB で作成しました。
コマンド (m でヘルプ): n
パーティション番号 (2-128, default 2):
最初のセクタ (34-5860533133, default 1677787135):
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (1677787135-5860533133, default 5860533133):
新しいパーティション 2 をタイプ Linux filesystem、サイズ 2 TiB で作成しました。
コマンド (m でヘルプ): w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。
ここで作成した800GBのパーティションが /dev/sdb1、2TBのパーティションが /dev/sdb2 になります。
Windows VMの設定ファイルを作成する
「WalbrixにWindowsをインストールする」に用意されている例を参考にして、設定ファイルを書きます。マシン名はranger、メモリは3GB、CPUコア数は1つにしておきます。ディスクは800GBのパーティションをCドライブ、2TBのパーティションをDドライブとして認識するよう書き換えます。赤文字にしてある部分が書き換えた部分です。
builder='hvm'
memory = 3072
name = "ranger"
vcpus=1
acpi=1
apic=1
vif = [ 'type=ioemu,bridge=eth0']
disk = [ 'phy:/dev/sdb1,ioemu:hda,w','phy:/dev/sdb2,ioemu:hdb,w','phy:/dev/sr1,hdc:cdrom,r' ]
boot='dc'
sdl=0
vnc=1
vnclisten='0.0.0.0'
localtime=1
usb=1
usbdevice='tablet'
設定ファイル名はマシン名と同じ名前にしておかなければならないので、このファイルを /etc/xen/ranger として作成しました。
設定した仮想マシンを起動し、VNCで接続する
設定が完了したので、DVDドライブにWindows 8.1のインストールディスクを入れ、仮想マシンを起動してみます。
WBFREE01 xen # xl create /etc/xen/ranger
しばらくしてプロンプトに戻ってくれば、VMが正常に起動したということのようです。一応確認のために起動しているVMのリストを確認してみました。
WBFREE01 xen # xl list
Name ID Mem VCPUs State Time(s)
Domain-0 0 512 2 r----- 2731.5
owncloud 1 1024 1 -b---- 19.8
ranger 6 3072 1 ------ 23073.1
rangerがリストにあるので、きっと起動していると信じてVNC接続してみます。接続先IPアドレスは、ssh接続している先と同じアドレスです。
無事にWindows 8.1のインストールディスクから起動できているようです。ここまでくれば、あとは普通にWindowsをインストールして起動するのと手順は変わりません。物理PCにインストールするより時間がかかりますが……。
Windowsインストール後にやったこと
私は普段、複数のPCをリモートデスクトップで操作していて、それにはChromeリモートデスクトップを使っています。なので、まず最初にChromeとChromeリモートデスクトップをインストールしました。これでIPアドレスやらファイアウォールやらを気にせずにどこからでもデスクトップにアクセスできます。
そしてもうひとつ、絶対にやっておかなければならないこと! それはPCの電源設定を高パフォーマンスに変更すること。実はこれを忘れていて、上記インストールの翌朝、スリープ状態になっているWindowsにアクセスできなくて困ったのでした。スリープ解除のために操作するキーボードもマウスも電源ボタンもありませんからね、仮想マシンには。