web-dev-qa-db-ja.com

RHEL5ホスト上のXenで準仮想化ゲストとしてUbuntu10.10をセットアップする-どのカーネルですか?

ツール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でコピーし、ファイル内のtempXXXXXXtempYYYYYYのパスを調整しました。ローカルワークステーションから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という名前を付けたとき、エラーはスローされませんでしたが、その後すぐにカーネルパニックが発生しました。

4
kostmo

xen-tools パッケージを調べて、--pygrubコマンドでxen-create-imageを指定すると、ゲストディスクイメージ内にkernel/initrdが埋め込まれる可能性があります。システム間でゲストイメージを転送する方が簡単です。

1
thelsdj

xenインフラストラクチャのアップグレードを検討することをお勧めします。xen3.xには、サポートするゲストに制限があります。以下をご覧ください http://www.redhat.com/resourcelibrary/articles/enterprise-linux-virtualization-support

古いubuntuバージョンを試しましたか?

1
Danie

Ubuntuが提供するlinux-image-virtualカーネルと新しいXenハイパーバイザー(おそらくpygrubなどを使用)を使用する必要があります(使用したことがありますか?)。

しかし、あなたの質問は古く、今日ではUbuntu-10.10を使用せず、新しいカーネルではXen(hvmとparavirtの両方)とベアメタルで同じカーネルを使用します。

0
Luke404