我有一个从 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 不适用于这台特定的机器。它在同一主机上的其他六台虚拟机上运行良好。