Xen半虚拟化客户 – 无效的内核

我已经在Ubuntu的12.04 LTS上设置了xen。 我已经尝试安装一个客户到我创build的名为xen-lvm的lvm

virt-install脚本:

sudo virt-install \ --name client2-ubuntu-server \ --ram 512 \ --location http://www.mirrorservice.org/sites/archive.ubuntu.com/ubuntu/dists/precise/main/installer-i386/ \ --accelerate \ --disk path=/dev/dev-server/xen-lvm \ --boot kernel=/boot/vmlinuz-3.2.0-35-virtual,initrd=/boot/initrd.img-3.2.0-35-virtual \ --force 

当我尝试启动虚拟机( xm create client1-ubuntu-server )时,我第一次尝试安装时没有–boot选项,它具有完全相同的错误:

 Error: (2, 'Invalid kernel', 'elf_xen_note_check: ERROR: Will only load images built for the generic loader or Linux images') 

有人知道我需要做什么吗? 运行32位和硬件虚拟化是不可能的(必须半虚拟化)。

也许我不应该在guest虚拟机中安装主grub引导加载程序,而是改变为我的主机操作系统?


更新

我已经设法使用xm create而不是virt-install ,以便在错误发生之前使用bootloader启动,如下所示: 在这里输入图像说明 我认为这个问题是因为我没有select“虚拟”内核的pygrub选项。 我没有发现如何将虚拟内核添加到domU(最好在安装阶段)。 我会认为,氙netboot图像将安装与此,但我猜不是。

我的xm创build脚本是这样的:

 name = 'client1-ubuntu-32' memory = 512 disk = ['phy:/dev/ubu-32/xen-lvm,xvda,w'] vif = [' '] # Comment this out if uncommenting the next section (installing) #bootloader="/usr/bin/pygrub" # This section is for installing ubuntu kernel = "/var/lib/xen/images/ubuntu-netboot/vmlinuz" ramdisk = "/var/lib/xen/images/ubuntu-netboot/initrd.gz" extra = "debian-installer/exit/always_halt=true -- console=hvc0" 

事实certificate,你可以使用pygrub安装grub给PV guest。

最后的诀窍是在apt / task菜单中使用“manual package selection”,以便去除通用内核并安装虚拟内核。 (你必须使用shift- +来添加一个包和shift-minus来突出显示时删除它们)。 我只用pygrub作为参数之一使用xm create命令testing了这一点。 由于虚拟内核是默认选中的,我猜这个修补程序也可以使用virt-install(但没有testing过)

您还必须确保您将使用ext4的默认分区更改为使用ext3才能正常工作。 我不知道这是否是一个pygrub特定的问题。

这个手册包select是痛苦的。 值得一看的方式来使用这里提到的最小的虚拟安装:

我不知道libvirt。 然而:

我已经成立了xen

必须是半虚拟化的

– 加速\

man virt-install

-p,–paravirt这个客人应该是半虚拟客人。 如果主机支持para和full虚拟化,并且既没有指定这个参数也没有指定“–hvm”,这将被假定。 – 加速如果安装QEMU来宾,则优先使用KVM或KQEMU(按此顺序)。 此行为现​​在是默认值,此选项已被弃用。 要安装一个普通的QEMU guest,使用'–virt-type qemu'

所以看起来你正在通过错误的select。 似乎虽然生成一个Xenconfiguration文件。

也,

  • 已经生成的domUconfiguration文件的内容是什么?
  • 有/boot/vmlinuz-3.2.0-35-virtual编译与paravirt支持?

也许我不应该在guest虚拟机中安装主grub引导加载程序,而是改变为我的主机操作系统?

你不能和PV客人一起使用grub。 您可以使用pygrub或pvgrub将内核存储在树中(在VM中)。 然而,你的命令行提示你正在运行一个out-of-tree内核(存储在dom0文件系统中),所以你不需要任何引导程序。

你的domU是i386。 内核PAE是否启用? 在很久以前,非PAE 32位的支持已经被放弃了。