我已经在 ubuntu server 12.04 LTS 上设置了 xen。我尝试将客户机安装到我创建的名为 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
我首先尝试在不使用 --boot 选项的情况下进行安装,当我尝试启动虚拟机时出现了完全相同的错误(xm create client1-ubuntu-server
):
Error: (2, 'Invalid kernel', 'elf_xen_note_check: ERROR: Will only load images built for the generic loader or Linux images')
有人知道我需要做什么吗?运行 32 位和硬件虚拟化是不可能的(必须进行半虚拟化)。
也许我不应该在客户机中安装主 grub 引导加载程序,而是更改主机操作系统的引导加载程序?
更新
我已设法使用xm create
而不是 ,virt-install
以便到达使用引导加载程序启动的点,然后出现错误,如下所示:
我认为问题是因为我没有 pygrub 选项来选择“虚拟”内核。我未能发现如何将虚拟内核添加到 domU(最好在安装阶段)。我本以为 xen netboot 映像会随此安装,但我想不是。
我的 xm 创建脚本如下:
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"
答案1
事实证明您可以使用 pygrub 将 grub 安装到 PV 客户机。
最后的诀窍是使用 apt/task 菜单中的“手动选择软件包”来删除通用内核并安装虚拟内核。(您必须使用 shift-+ 添加软件包,使用 shift-minus 删除突出显示的软件包)。我只使用 xm create 命令并以 pygrub 作为参数之一进行了测试。由于默认选择了虚拟内核,我猜这个修复也可能适用于使用 virt-install(但未经测试)
您还必须确保将默认分区从使用 ext4 更改为使用 ext3,才能使其正常工作。我不知道这是否是 pygrub 特有的问题。
这种手动选择软件包的方式很麻烦。值得研究一下如何使用上述最小虚拟安装这里:
答案2
我不知道 libvirt。但是:
我已经设置了 xen
必须半虚拟化
但
- 加速 \
虚拟机安装
-p, --paravirt 此客户机应为半虚拟化客户机。如果主机同时支持半虚拟化和全虚拟化,并且未指定此参数或“--hvm”,则将假定为这种情况。 --accelerate 如果安装 QEMU 客户机,则首选 KVM 或 KQEMU(按此顺序)。此行为现在是默认行为,此选项已弃用。要安装普通 QEMU 客户机,请使用“--virt-type qemu”
所以看起来你传递了错误的选项。不过似乎生成了一个 Xen 配置文件。
还,
- 生成的domU配置文件的内容是什么?
- /boot/vmlinuz-3.2.0-35-virtual 是否已编译 paravirt 支持?
也许我不应该在客户机中安装主 grub 引导加载程序,而是更改主机操作系统的引导加载程序?
您不能将 grub 与 PV 客户机一起使用。您可以使用 pygrub 或 pvgrub 将内核存储在树内(在 VM 中)。但是您的命令行建议您运行树外内核(存储在 dom0 文件系统中),因此您不需要任何引导加载程序。
您的 domU 是 i386。内核 PAE 启用了吗?Xen 很久以前就不再支持非 PAE 32 位了。