使用 xl 创建时无法运行引导加载程序:-3

使用 xl 创建时无法运行引导加载程序:-3

我有一个从 Virtual Box 迁移过来的 Ubuntu 14.04

有 3 个分区。我已更新 /etc/fstab 以识别新分区,并 chrooted 以更新 grub

我正在使用以下 ubuntu.cfg

bootloader = '/usr/bin/pygrub'
vcpus       = '1'
memory      = '1024'
root        = '/dev/xvda1 ro'
disk        = [
                  'phy:/dev/vms_xen/ubuntu_swp,xvda3,w',
                  'phy:/dev/vms_xen/ubuntu_root,xvda1,w',
                  'phy:/dev/vms_xen/ubuntu_data,xvda2,w'
              ]
name        = 'Ubuntu_1404'
vif         = [ 'ip=192.168.2.1,mac=08:00:27:ea:81:23' ]
on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'
extra="console=hvc0"

fstab 文件是

/dev/xvda1 /               ext4    rw,user_xattr,acl,barrier=1,noatime          0       1    
/dev/xvda3 none            swap    sw                                   0       0
/dev/xvda2 /data           ext4    rw,user_xattr,acl,barrier=1,noatime          0       0

当我尝试命令时

# xl create -d /etc/xen/ubuntu.cfg
Parsing config file /etc/xen/ubuntu.cfg
(domain
        (domid -1)
        (create_info)
        (hvm 0)
        (hap 1)
        (oos 1)
        (ssidref 0)
        (name Ubuntu_1404)
        (uuid <unknown>)
        (cpupool Pool-0)
        (xsdata (null))
        (platformdata (null))
        (build_info)
        (max_vcpus 1)
        (tsc_mode 0)
        (max_memkb 1048576)
        (target_memkb 1048576)
        (nomigrate 0)
        (bootloader /usr/bin/pygrub)
        (image
                (linux 0)
                        (kernel (null))
                        (cmdline root=/dev/xvda1 ro console=hvc0)
                        (ramdisk (null))
                )
        )
        (device
                (tap
                        (backend_domid 0)
                        (frontend_domid 0)
                        (physpath /dev/vms_xen/ubuntu_swp)
                        (phystype 1)
                        (virtpath xvda3)
                        (unpluggable 0)
                        (readwrite 1)
                        (is_cdrom 0)
                )
        )
        (device
                (tap
                        (backend_domid 0)
                        (frontend_domid 0)
                        (physpath /dev/vms_xen/ubuntu_root)
                        (phystype 1)
                        (virtpath xvda1)
                        (unpluggable 0)
                        (readwrite 1)
                        (is_cdrom 0)
                )
        )
        (device
                (tap
                        (backend_domid 0)
                        (frontend_domid 0)
                        (physpath /dev/vms_xen/ubuntu_data)
                        (phystype 1)
                        (virtpath xvda2)
                        (unpluggable 0)
                        (readwrite 1)
                        (is_cdrom 0)
                )
        )
        (device
                (vif
                        (backend_domid 0)
                        (frontend_domid 0)
                        (devid 0)
                        (mtu 1492)
                        (model rtl8139)
                        (mac 080027ea8123)
                )
        )
)
failed to run bootloader: -3

VM 在我的笔记本电脑上的 Virtual Box 上运行良好,VM 是使用https://superuser.com/questions/892311/convert-vmdk-to-lvm

答案1

/usr/bin/pygrub文件确实存在于你的 Dom0 上吗?

你试过不使用 PyGrub 来运行它吗?删除bootloader 并添加

kernel = '/vmlinuz'
ramdisk = '/initrd.img'

使用主机系统的内核。

如果你没有在客户系统上正确配置 GRUB,PyGrub 将无法启动。另请检查此http://sygard.no/2012/09/ubuntu-12-04-xen-domu-failed-to-run-bootloader-3/

答案2

我还没有解决这个问题的方法。我的情况是,我在主机上运行 Ubuntu 14.04 Xen/xl(默认情况下 apt 源中没有 Bionic 内核),并在虚拟机上运行 Ubuntu 18.04(具有内核 4.15.0-101-generic)。

当虚拟机关闭时,我挂载了磁盘并将内核从盒子内部复制到主机:

mount /dev/ssd/virtualmachine-disk /mnt
cp /mnt/boot/boot/vmlinuz-4.15.0-101-generic /boot
cp /mnt/boot/boot/initrd.img-4.15.0-101-generic /boot
umount /mnt

然后编辑 /etc/xen/virtualmachine.cfg 并更改内核

kernel      = '/boot/vmlinuz-4.15.0-101-generic'
ramdisk     = '/boot/initrd.img-4.15.0-101-generic'

我还不知道为什么 pygrub 不适用于这台特定的机器。它在同一主机上的其他六台虚拟机上运行良好。

相关内容