Articles in this section

Guest OS shows "No bootable device" or an "efi" error after installation in SolusVM 2

Applicable to:

  • SolusVM 2

Symptoms 

After installation, a guest OS in VM shows one of the following:

PRODUCT_ERROR: No bootable device

PRODUCT_ERROR: There is nothing to satisfy “efi”

Cause

Three cases are possible:

  1. VM is created with BIOS instead of EFI despite the configuration. Most probably the OVMF package is missing on the Compute Resource (CR).
  2. VM is created with EFI, but libvirt cannot detect the EFI firmware files on the CR and returns an error during creation. This occurs on the latest AlmaLinux (see the workaround below). RHEL-based distributions have dropped i440fx support, so the firmware configuration required for i440fx + UEFI is not present out of the box on the host. 

    The issue is recognised and considered as a product issue with the internal ID SVM2-6401

  3. AMD CPUs are not supported. No fix is available.

Debian-based systems are not affected at the moment. The issue occurs on AlmaLinux 9 and later.

Resolution

Note: SolusVM 2 generates this configuration itself after the fix - update SolusVM 2 installation to 2.0.0-36494 Stable.

Workaround:
  1. Collect diagnostic information from the CR and share it with SolusVM Support for a faster permanent fix:

    # ls -la /usr/share/qemu/firmware
    # grep -n . /usr/share/qemu/firmware/*
    # grep -w nvram -A10 /etc/libvirt/qemu.conf
    # rpm -V edk2-ovmf-20230524-4.el9_3.noarch 

  2. Check whether the OVMF package is installed (the package is required if not present):

    RPM-based systems:

    # rpm -qa | grep -i ovmf


    DEB-based systems:

    # dpkg -l | grep -i ovmf

  3. Provide the full XML definition of the VM

    # [root@something ~]# virsh dumpxml UUID > /root/name.xml


    Note: The UUID is shown in the SolusVM 2 Admin panel: Virtual Machines > open the VPS in question > Machine UUID below the VPS name.


    Note: Ensure the VM uses VIRTIO and EFI in the UI settings.

  4. Apply the fix on the CR (AlmaLinux):
    • Create a copy of the firmware descriptor:

      # cp /usr/share/qemu/firmware/50-edk2-ovmf-x64-nosb.json /usr/share/qemu/firmware/90-edk2-ovmf-x64-nosb.json

    • Edit the new file with nano or vim and replace pc-q35-* with pc-i440fx-*.
  5. Reboot or reinstall the VM

As a result, the VM boots as expected.

Was this article helpful?

Comments

0 comments

Please sign in to leave a comment.