how to use hvm

hvmを使う

hvmはintel VTとかAMD-Vとかの機能を利用した完全仮想化の仮想マシンです。
完全仮想化では順仮想化と違いカーネルを書き換えることなく動作させることができます。
windowsとかが動きます。
以下の文はあまり知識のない自分がかいたものなので、読んでもわからないかもしれません。
そういう方は一番下の参考リンクを読んだほうが早いかもしれません。

準備

ということで準備です。
まずはXenのインストールが必要です。これは省略します。

Debian Etchの人向け

bccというパッケージをインストールしないと/usr/lib/xen/boot/hvmloaderが作成されないようです。
hvmドメインを作成しようとするとhvmloaderが見付かりません、みたいなメッセージが出ることがあります。
su
aptitude install bcc
exit
を行ってからxenのインストールを再び行ってください。
hvmloaderだけほしいという方は以下を行うと、xenのソース/dist/install/usr/lib/xen/boot/にhvmloaderが出来上がると思います。
cd "xenのソースのある場所"
make dist
出来上がったら、出来上がったhvmloaderを/usr/lib/xen/boot/にコピーします。これでhvmloaderの問題は解決されると思います。

コンフィグ

次はコンフィグファイルを作ります。
準仮想化ドメインを作るときにもコンフィグファイルを書きますが、同じようなものを作ります。準仮想化のコンフィグファイルとは若干違います。
参考に出来るサンプルファイルが/etc/xen/にあります。
これ以降は作業ディレクトリを作って、そこで作業をします。まずサンプルファイルを作業ディレクトリにコピーしてきます。
cd /path/to/working directory
cp /etc/xen/xmexample.hvm hoge.hvm
次にコンフィグファイルの名前を変更して、ファイルの中身にも変更を加えます。以下が変更点です。
次文はホームディレクトリの下にwork/hvm01というディレクトリを作成して、そこでwindowsXPを試しにインストールしてみました。
以下が元のファイルと変更したファイルの差分です。
diff /home/yoshi/work/hvm01/winxp.hvm /etc/xen/xmexample.hvm
--- /home/yoshi/work/hvm01/winxp.hvm    2007-10-20 19:33:35.000000000 +0900
+++ /etc/xen/xmexample.hvm      2007-05-18 23:45:21.000000000 +0900
@@ -32,7 +32,7 @@
 # shadow_memory = 8

 # A name for your domain. All domains must have different names.
-name = "hvmsample"
+name = "ExampleHVMDomain"
 
 # 128-bit UUID for the domain.  The default behavior is to generate a new UUID
 # on each call to 'xm create'.
@@ -61,7 +61,7 @@
 # Random MACs are assigned if not given.
 #vif = [ 'type=ioemu, mac=00:16:3e:00:00:11, bridge=xenbr0, model=ne2k_pci' ]
 # type=ioemu specify the NIC is an ioemu device not netfront
-vif = [ 'type=ioemu, mac=00:16:3e:00:00:11,bridge=xenbr2' ]
+vif = [ 'type=ioemu, bridge=xenbr0' ]
 
 #----------------------------------------------------------------------------
 # Define the disk devices you want the domain to have access to, and
@@ -71,8 +71,7 @@
 # and MODE is r for read-only, w for read-write.

 #disk = [ 'phy:hda1,hda1,r' ]
-disk = [ 'file:/home/yoshi/work/hvm01/blank.img,ioemu:hda,w', 'file:/home/yoshi/work/hvm01/windowsxp.iso,hdc:cdrom,r']
-#disk = [ 'file:/home/yoshi/work/hvm01/blank.img,ioemu:hda,w', 'phy:/dev/cdrom,hdc:cdrom,r']
+disk = [ 'file:/var/images/min-el3-i386.img,hda,w', ',hdc:cdrom,r' ]
 
 #----------------------------------------------------------------------------
 # Configure the behaviour when a domain exits.  There are three 'reasons'
@@ -119,7 +118,7 @@
 #-----------------------------------------------------------------------------
 # boot on floppy (a), hard disk (c), Network (n) or CD-ROM (d)
 # default: hard disk, cd-rom, floppy
-boot="d"
+#boot="cda"

 #-----------------------------------------------------------------------------
 #  write to temporary files instead of disk image files
@@ -154,7 +153,7 @@
 #----------------------------------------------------------------------------
 # set password for domain's VNC console
 # default is depents on vncpasswd in xend-config.sxp
-vncpasswd='aaaaaaaa'
+vncpasswd=''
 
 #----------------------------------------------------------------------------
 # no graphics, use serial port
@@ -203,8 +202,8 @@
 #   Enable USB mouse support (only enable one of the following, `mouse' for
 #                            PS/2 protocol relative mouse, `tablet' for
 #                            absolute mouse)
-usbdevice='mouse'
-usbdevice='tablet'
+#usbdevice='mouse'
+#usbdevice='tablet'

 #-----------------------------------------------------------------------------
 #   Set keyboard layout, default is en-us keyboard.

 
変更点をまとめると
name = "hvmsample"
vif = [ 'type=ioemu, mac=00:16:3e:00:00:11,bridge=xenbr2' ]
disk = [ 'file:/home/yoshi/work/hvm01/blank.img,ioemu:hda,w', 'file:/home/yoshi/work/hvm01/windowsxp.iso,hdc:cdrom,r']
boot="d"
vncpasswd='aaaaaaaa'
usbdevice='mouse'
usbdevice='tablet'
です。
変更点の説明をします。
まずnameです。これはドメインの名前です。自由に変更してかまいません。xm listを実行したときに表示される名前です。
name = "hvmsample"
次はvif(virtual interface)です。ネットワークカードの設定です。
vif = [ 'type=ioemu, mac=00:16:3e:00:00:11,bridge=xenbr2' ]
最後のbridge=xenbr2というのはなくても大丈夫です。管理者権限でifconfigしたときに
ifconfig

xenbr2    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF
         UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
         RX packets:5199975 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:462854200 (441.4 MiB)  TX bytes:0 (0.0 b)
というのが表示されれば書いても大丈夫です。出ないなら書かないでください。実行時にエラーが発生します。
これについては/etc/xen/xend-config.sxpに書かれています。ここでは省略します。探せば出てくると思いますので知りたい方は自分で調べてください。
次はdiskです。これは仮想計算機の中のハードディスクとかcdromドライブとかの設定です。
disk = [ 'file:/home/yoshi/work/hvm01/blank.img,ioemu:hda,w', 'file:/home/yoshi/work/hvm01/windowsxp.iso,hdc:cdrom,r']
まず最初はハードディスクについての設定です。file:以下はハードディスクとして使用するイメージファイルへのアドレスパスです。このイメージファイルはあとで作成します。いまのところは読み飛ばしてかまいません。次の項目はインストールするためのCDイメージへのパスです。ここではXenに構築された仮想計算機環境はハードディスクとしてファイルを使用し、cdromドライブにはイメージファイルが入っているような感じになります。パスだけ読みかえてもらえれば大丈夫です。
次はbootです。
boot="d"
これは起動時のブートデバイスを指定しています。サンプルファイルにも書いてありますが、"d"がCDromで"c"がハードディスク、"a"がフロッピーです。ウィンドウズをCDイメージからインストールするので、ここではCDROMデバイスから起動することにしています。
次はvncpasswdです。
vncpasswd='aaaaaaaa'
ドメインを起動したら、コンソールだけではインストール作業が進められないのでVNCを使ってドメインの出力をXウィンドウ上に得ます。

イメージファイルの作成

xenのドメインではハードディスクの物理パーティションを使うことも出来ますし、自分で作成したイメージファイルをハードディスクとして用いることも出来ます。
ここではイメージファイルを作成して、それをハードディスクとしてマウントしています。
disk=[...
の部分です。そのためのイメージファイルの作成を行います。自分はDebianを使っているので、それ以外はわかりません。
dd if=/dev/zero of=/path/to/imagefile.img bs=1 count=1 seek=6G
上のようにすれば6GBのイメージファイルが出来ます。通常のOSをインストールするにはこれで十分だと思います。ファイルサーバとして使いたいならもっと増やしておきましょう。

VNCviewer

上のことを行ったらhvmドメインを起動します。作ったコンフィグファイルをxm createコマンドにあたえます。下みたいな感じです。
xm create hoge.hvm
起動するとstart domainみたいなメッセージが出ます。本当に起動しているかどうか確認します。
xm list
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0  1241     2     r-----  27249.6
hvmsample                                262   128     1     r-----      1.8
こんな感じででるとおもいます。
起動したら、VNCviewerで画面に出力します。
vncviewer 127.0.0.1:0
うまく行けばパスワードを聞かれます。コンフィグファイルのvncpasswdで設定したものを入力します。
うまくいかなくて
vncviewer 127.0.0.1:0

VNC Viewer Free Edition 4.1.1 for X - built Feb 26 2007 20:38:07
Copyright (C) 2002-2005 RealVNC Ltd.
See http://www.realvnc.com for information on VNC.

Tue Oct 23 18:08:44 2007
 main:        unable to connect to host: Connection refused (111)
みたいに出たときは
vncviewer 127.0.0.1:1
とか
vncviewer 127.0.0.1:2
とかを試してみます。

参考にしたページ

最終更新:2007年10月23日 18:10
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。