Xen 3.2(Fedora 9付属Xenner編)


2008年5月13日にFedora 9がリリースされました。
そのFedora 9付属のXen 3.2ベースのXenハイパバイザーはブートできないという制限があります。
Xenハイパバイザーが無ければXenの準仮想化(Para-Virtualized)モードのゲストOS(PVゲスト)を実行できません。
しかし、Fedora 9にはXenner(version 0.29)という便利なXenハイパバイザーエミュレータが付属しています。
XennerはKVMが組み込まれた通常カーネル環境でPVゲストを実行でき、その使用方法も非常に簡単です。
(Xenner自体はKVMゲストとして動作し、KVM上でXen DomainUインタフェースを提供するユティリティです)

ここではFedora 9の通常カーネル環境でXennerを使用してCentOS 5.2(x86)をPVゲストとして実行する手順を紹介します。

  1. Fedora 9のインストール
    (1)インストールするソフトウェアセットのカスタマイズでベースシステムの「仮想化」を選択します。
    ※これによってkvm, virt-manager, xen, xenner, xen-runtimeパッケージ等がインストールされます。
    (2)Fedora 9起動後、NetworkManagerサービスの代りにnetworkサービスを使用するようにします。
    # /etc/rc.d/init.d/NetworkManager stop
    # /etc/rc.d/init.d/network start
    ここでネットワーク動作を確認します(Webアクセス等)。
    # chkconfig --level 2345 NetworkManager off
    # chkconfig --level 345 network on

  2. Xenner環境の構築
    (1)xennerサービスの自動起動設定
    # chkconfig --level 345 xenner on
    (2)SELinux機能の無効化
    xennerサービス起動時のエラー(vmcoreマウントエラー)抑止のためにSELinux機能を無効にします。
    # vi /etc/sysconfig/selinux
    「SELINUX=enforcing」を「SELINUX=disabled」に変更します。
    # reboot
    ※/etc/xen/xend-config.sxpの内容は特に変更する必要はありません。

  3. PVゲストの準備
    今回はCentOS 5.2(x64)のXen環境でvirt-installコマンドを使用してCentOS 5.2(x86)をPVゲストとして作成しました。
    このPVゲストをXenner上で実行させてデスクトップ操作させるためにこのPVゲストに仮想フレームバッファを導入しておきます。
    その詳細手順は「仮想フレームバッファ(Fedora Core 6 x64編)」の場合と同様です。
    ここでの仮想ディスクは4GB固定サイズのx33pvcent52flat4gb.imgというファイルとします。
    Fedora 9側でこの仮想ディスクを/root直下に配置し以下の操作を行います。

  4. PVゲストの起動
    以下のコマンドでPVゲストを起動します。
    /usr/bin/xenner -M xenner -m 512 -name pvcentos52 -boot c \
    -kernel /root/centos52/vmlinuz-2.6.18-92.el5xen \
    -initrd /root/centos52/initrd-2.6.18-92.el5xen.img \
    -hda /root/x33pvcent52flat4gb.img -xenconsole \
    -append "ro root=LABEL=/" \
    -network 00:16:3e:4c:c4:43,virbr0
    [補足]
    (1)「-xenconsole」はブートメッセージ表示のために必須です。
    (2)-networkでvirbr0を指定することで「eth0 のIP情報を検出中... 完了。」とだけ表示されてIPの払い出しがOKとなります。
    (3)-no-acpiを指定するとブート時の内部エラーが減りますが-no-acpiなしでも支障はありません。
    (4)ブートメッセージ例
    (5)PVゲストを起動するとホスト側にはxenner0というネットワークインタフェースが自動生成されます。

  5. DHCPで割り当てられるIPアドレスの確認
    Xenner環境でのネットワークはTUN/TAPデバイスドライバを使用したNAT型になります。
    Xenner環境でPVゲストを起動した場合、PVゲストとの組み合わせによってはログインプロンプト表示まで到らないことがあります。
    そのような場合はホスト側からDHCPで割り当てられるIPアドレスを確認する必要があります。
    DHCPで割り当てられるIPアドレスは/var/log/messagesから容易に確認できます(DHCP ACKが動的IPアドレスの確定を指します)。
    下記はホスト側の/var/log/messagesの内容例です。

    kernel: kvm: guest NX capability removed
    kernel: tun: Universal TUN/TAP device driver, 1.6
    ...
    avahi-daemon[2413]: Registering new address record for fe80::2ff:4ff:fef5:e6d4 on xenner0.*.
    kernel: kvm: emulating exchange as write
    avahi-daemon[2413]: Withdrawing address record for fe80::2ff:4ff:fef5:e6d4 on xenner0.
    kernel: device xenner0 entered promiscuous mode
    kernel: kvm: guest NX capability removed
    kernel: virbr0: port 1(xenner0) entering listening state
    avahi-daemon[2413]: Registering new address record for fe80::2ff:47ff:fe2f:a652 on xenner0.*.
    kernel: virbr0: port 1(xenner0) entering learning state
    kernel: virbr0: topology change detected, propagating
    kernel: virbr0: port 1(xenner0) entering forwarding state
    dnsmasq[2484]: DHCPDISCOVER(virbr0) 192.168.122.188 00:16:3e:4c:c4:43
    dnsmasq[2484]: DHCPOFFER(virbr0) 192.168.122.188 00:16:3e:4c:c4:43
    dnsmasq[2484]: DHCPREQUEST(virbr0) 192.168.122.188 00:16:3e:4c:c4:43
    dnsmasq[2484]: DHCPACK(virbr0) 192.168.122.188 00:16:3e:4c:c4:43

  6. VNCによるPVゲストのデスクトップ操作
    まず、vncviewerを導入します。
    # yum install vncviewer

    次にvncviewerを起動し、接続先に「192.168.122.188:1」を指定します。
    GDM画面でログインすることでPVゲストのデスクトップ操作が可能となります。
    下記はPVゲストのデスクトップ例です。




  7. Fedora 9カーネルのアップグレード
    Fedora 9のカーネルをkernel 2.6.25-14から2.6.26.5-45にアップグレードしました。
    これはFedora 9にVMware Server 2.0を導入する際に実施したものです。
    Fedora 9がkernel 2.6.26.5-45で、かつVMware Server 2.0がインストールされた環境でもXennerは動作しました。
    アップグレードしたFedora 9カーネルでのXenner実行例