ツールubuntu-vm-builder
を発見しました。これをインストールして、Ubuntuワークステーションで次のように呼び出しました。
Sudo vmbuilder xen ubuntu --suite maverick --flavour virtual --Arch AMD64 --mem=512 --rootsize 8192
ただし、このワークステーションは、仮想マシンの意図されたターゲットホストではありません。 Xen3.0.3を実行しているRedHat Enterprise Linux5マシンでゲストをホストしたいと思います。
このコマンドの出力は、次の3つのファイルを含むubuntu-xen
という名前のフォルダーのように見えます。
tmpXXXXXX
、私が推測する非常に大きなファイルはルートパーティションイメージですtmpYYYYYY
、スワップパーティションイメージだと思うやや大きなファイルxen.conf
、テキストファイルxen.conf
ファイルをRHELサーバーの/etc/xen
ディレクトリに新しい名前newvm
でコピーし、ファイル内のtempXXXXXX
とtempYYYYYY
のパスを調整しました。ローカルワークステーションからRHELサーバーにそれらをコピーした後。 Virtual Machine Manager virt-manager
を起動すると、Dom0マシンの下にnewvm
仮想マシンが表示されます。
newvm
を起動しようとすると、次のエラーが発生します。
Error starting domain: virDomainCreate() failed POST operation failed: (xend.err 'Error creating domain: Kernel image does not exist: None')
実際、kernel = 'None'
ファイルにはエントリxen.conf
が存在します。カーネルのパスがどうあるべきかを知るにはどうすればよいですか?このパスは、RHEL5ホストのローカルファイルシステムに保存されているカーネルへのパスであると想定されていますか、それともゲストイメージ内のパスであると想定されていますか?
vmbuilder
コマンドが--xen-kernel
オプションと--xen-ramdisk
オプションを提供しているようですが、どちらに何を使用すればよいかわかりません。
Ubuntuは Xen 4.0.1 docs state のみのサポートですが、Xenゲストとして サポートされていると言われています なので、これを機能させることができるはずです。限られたディストリビューションのセット、Ubuntuは除外。
更新1
ローカルワークステーションでvmbuilder
を実行すると、次のような出力行が表示されました。
Calling hook: install_kernel
その後、出力行は次のようになります。
update-initramfs: Generating /boot/initrd.img-2.6.35-23-virtual
[...]
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.35-23-virtual /boot/vmlinuz-2.6.35-23-virtual
そこで、xen.conf
ファイルで、次の行を設定してみました。
kernel = '/boot/vmlinuz-2.6.35-23-virtual'
ramdisk = '/boot/initrd.img-2.6.35-23-virtual'
VMを起動しようとすると、前回と同様のエラーが発生しました。
Error starting domain: virDomainCreate() failed POST operation failed: (xend.err 'Error creating domain: Kernel image does not exist: /boot/vmlinuz-2.6.35-23-virtual')
これにより、RHEL5マシンは、バイナリゲストディスクイメージ内のファイルではなく、ローカルファイルを探していると思います。
ワークステーションでSudo updatedb
を実行した後、これらのファイルはどちらも見つかりませんでした。 vmbuilder
ツールがそれらをインストールしようとした場合、失敗したに違いありません。
アップデート2
ゲストディスクバイナリをマウントすることで、カーネルとinitrdイメージを抽出することができました。
mkdir mnt_tmp
Sudo mount ubuntu-xen/tmpXXXXXX mnt_tmp/ -o loop
cp mnt_tmp/boot/vmlinuz-2.6.35-23-virtual virtual_kernel_ubuntu
cp mnt_tmp/boot/initrd.img-2.6.35-23-virtual virtual_initrd_ubuntu
これらの2つのファイルをRHEL5サーバーにコピーし、xen.conf
ファイルを編集してkernel
およびramdisk
として指すようにしました。
これが完了すると、virt-manager
内からnewvm
仮想マシンを「実行」できましたが、メッセージが表示されました。
Console Not Configured For Guest
エントリをダブルクリックして仮想マシンコンソールを開いたとき。フォーラムで提案されたように、私は次に行を追加しました
vfb = [ 'type=vnc' ]
構成ファイルに仮想マシンを再作成し(約10分のプロセス)、今回は次のメッセージを受け取りました。
Connecting to console for guest
これは無期限に残りました。 [表示]-> [シリアルコンソール]を選択した後、カーネルパニックが発生しました。
[5442621.272173] Kernel panic - not syncing: Attempted to kill the idle task!
[5442621.272179] Pid: 0, comm: swapper Tainted: G D 2.6.35-23-virtual #41-Ubuntu
[5442621.272184] Call Trace:
[5442621.272191] [<ffffffff815a1b81>] panic+0x90/0x111
[5442621.272199] [<ffffffff810652ee>] do_exit+0x3be/0x3f0
[5442621.272204] [<ffffffff815a5e20>] oops_end+0xb0/0xf0
[5442621.272211] [<ffffffff8100ddeb>] die+0x5b/0x90
[5442621.272216] [<ffffffff815a56c4>] do_trap+0xc4/0x170
[5442621.272221] [<ffffffff8100ba35>] do_invalid_op+0x95/0xb0
[5442621.272227] [<ffffffff8130851c>] ? intel_idle+0xac/0x180
[5442621.272232] [<ffffffff810072bf>] ? xen_restore_fl_direct_end+0x0/0x1
[5442621.272239] [<ffffffff815a48fe>] ? _raw_spin_unlock_irqrestore+0x1e/0x30
[5442621.272247] [<ffffffff8108dfb7>] ? tick_broadcast_oneshot_control+0xc7/0x120
[5442621.272253] [<ffffffff8100ad5b>] invalid_op+0x1b/0x20
[5442621.272259] [<ffffffff8130851c>] ? intel_idle+0xac/0x180
[5442621.272264] [<ffffffff813084e0>] ? intel_idle+0x70/0x180
[5442621.272269] [<ffffffff810072bf>] ? xen_restore_fl_direct_end+0x0/0x1
[5442621.272275] [<ffffffff8148a147>] cpuidle_idle_call+0xa7/0x140
[5442621.272281] [<ffffffff81008d93>] cpu_idle+0xb3/0x110
[5442621.272286] [<ffffffff815873aa>] rest_init+0x8a/0x90
[5442621.272291] [<ffffffff81b04c9d>] start_kernel+0x387/0x390
[5442621.272297] [<ffffffff81b04341>] x86_64_start_reservations+0x12c/0x130
[5442621.272303] [<ffffffff81b08002>] xen_start_kernel+0x55d/0x561
アップデート3
i386
の代わりにAMD64
アーキテクチャを試しましたが、同じカーネルパニックが発生しました。
また、Virtual MachineManagerはカーネルのファイル名の形式に注意を払っているようです。同じカーネルバイナリに対して、単にvmlinuz-virtual
という名前を付けてみたところ、無効なカーネルに関するエラーボックスが表示されました。 vmlinuz-2.6.35-23-virtual
という名前を付けたとき、エラーはスローされませんでしたが、その後すぐにカーネルパニックが発生しました。
xen-tools パッケージを調べて、--pygrub
コマンドでxen-create-image
を指定すると、ゲストディスクイメージ内にkernel/initrdが埋め込まれる可能性があります。システム間でゲストイメージを転送する方が簡単です。
xenインフラストラクチャのアップグレードを検討することをお勧めします。xen3.xには、サポートするゲストに制限があります。以下をご覧ください http://www.redhat.com/resourcelibrary/articles/enterprise-linux-virtualization-support
古いubuntuバージョンを試しましたか?
Ubuntuが提供するlinux-image-virtualカーネルと新しいXenハイパーバイザー(おそらくpygrubなどを使用)を使用する必要があります(使用したことがありますか?)。
しかし、あなたの質問は古く、今日ではUbuntu-10.10を使用せず、新しいカーネルではXen(hvmとparavirtの両方)とベアメタルで同じカーネルを使用します。