Linux

無法執行引導載入程序:使用 xl 創建時 -3

  • June 7, 2020

我有一個從 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遷移的

/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/

我還沒有解決這個問題的辦法。我的情況是我在主機上執行 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 不適用於這台特定的機器。它適用於同一主機上的六個其他虛擬機。

引用自:https://serverfault.com/questions/677242