在 RHEL5 主机上的 Xen 中将 Ubuntu 10.10 设置为半虚拟化客户机-什么内核?

在 RHEL5 主机上的 Xen 中将 Ubuntu 10.10 设置为半虚拟化客户机-什么内核?

我发现了该工具ubuntu-vm-builder,我已经安装该工具,然后在 Ubuntu 工作站上调用它:

sudo vmbuilder xen ubuntu --suite maverick --flavour virtual --arch amd64 --mem=512 --rootsize 8192

但是,这个工作站不是虚拟机的预期目标主机;我想在运行 Xen 3.0.3 的 Red Hat Enterprise Linux 5 机器上托管客户机。

该命令的输出似乎是一个ubuntu-xen包含三个文件的文件夹:

  • tmpXXXXXX,这是一个非常大的文件,我认为它是根分区映像
  • tmpYYYYYY,这是一个相当大的文件,我认为它是交换分区映像
  • xen.conf,文本文件

我已将文件复制到新名称下的xen.confRHEL 服务器目录中,并在将文件中的和路径从本地工作站复制到 RHEL 服务器后调整它们。启动虚拟机管理器时,我可以看到Dom0 机器下列出的虚拟机。/etc/xennewvmtempXXXXXXtempYYYYYYvirt-managernewvm

当我尝试启动时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 访客,即使Xen 4.0.1 文档状态仅支持有限的发行版,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'

尝试启动虚拟机时,我收到与上次类似的错误:

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

我将这两个文件复制到了 RHEL5 服务器,并编辑了文件xen.conf以将它们指向为kernelramdisk

完成此操作后,我可以newvm从内部“运行”虚拟机virt-manager,但遇到了消息

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,但仍然出现了同样的内核恐慌。

此外,虚拟机管理器似乎会注意内核文件名的格式;对于同一个内核二进制文件,我尝试将其简单地命名为vmlinuz-virtual,结果会抛出一个有关内核无效的错误框。当我将其命名为时vmlinuz-2.6.35-23-virtual,它不会抛出错误,但不久之后仍会导致内核崩溃。

答案1

你可能想看看xen工具如果您--pygrubxen-create-image命令中指定该包,它会将内核/initrd 嵌入到客户磁盘映像中,这可以让您更轻松地在系统之间传输客户映像。

答案2

您可能需要考虑升级您的 xen 基础架构,xen 3.x 对其支持的客户端确实存在限制。请查看以下内容,http://www.redhat.com/resourcelibrary/articles/enterprise-linux-virtualization-support

你尝试过旧版本的 ubuntu 吗?

答案3

您应该使用(已经使用过?)Ubuntu 提供的 linux-image-virtual 内核,以及较新的 Xen 虚拟机管理程序(可能带有 pygrub 或类似程序)。

但是您的问题已经过时了,现在您不会使用 Ubuntu-10.10,而在较新的版本上,您在 Xen(hvm 和 paravirt)和裸机上使用相同的内核。

相关内容