This guide describes how to validate a converted openSUSE qcow2 image using KVM + libvirt on Fedora, booting directly into graphical (GUI) mode with legacy BIOS (SeaBIOS).
This is intended as a post-conversion smoke test after migrating a VMware VMDK to qcow2 and applying offline fixes (fstab, GRUB, initramfs, etc.).
Install required virtualization tools:
sudo dnf install -y \
libvirt \
qemu-kvm \
qemu-img \
virt-viewer \
libguestfs-tools
Enable libvirt and ensure the default network is active:
sudo systemctl enable --now libvirtd
sudo virsh net-start default 2>/dev/null || true
/home/ssahani/by-path/out/opensuse-leap-15.4-fixed.qcow2
Assumptions:
This XML configuration is intentionally conservative and works reliably for legacy openSUSE guests:
machine='pc')cat >/tmp/opensuse-test.xml <<'EOF'
<domain type='kvm'>
<name>opensuse-leap-15-4-gui</name>
<memory unit='MiB'>4096</memory>
<vcpu>2</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='host-passthrough'/>
<devices>
<!-- Disk -->
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/home/ssahani/by-path/out/opensuse-leap-15.4-fixed.qcow2'/>
<target dev='vda' bus='virtio'/>
</disk>
<!-- Network -->
<interface type='network'>
<source network='default'/>
<model type='virtio'/>
</interface>
<!-- Graphics -->
<graphics type='vnc' autoport='yes' listen='127.0.0.1'/>
<video>
<model type='qxl' vram='65536'/>
</video>
<input type='tablet' bus='usb'/>
</devices>
</domain>
EOF
If a domain with the same name already exists, remove it first:
sudo virsh destroy opensuse-leap-15-4-gui 2>/dev/null || true
sudo virsh undefine opensuse-leap-15-4-gui 2>/dev/null || true
Define and start the VM:
sudo virsh define /tmp/opensuse-test.xml
sudo virsh start opensuse-leap-15-4-gui
virt-viewer opensuse-leap-15-4-gui
sudo virsh vncdisplay opensuse-leap-15-4-gui
Connect to the displayed address, for example:
127.0.0.1:5901
A successful boot should show:
If this sequence completes, the image is boot-validated.
Try a simpler video model:
<model type='vga'/>
Some older installs expect SATA instead of virtio:
<target dev='sda' bus='sata'/>
This is a guest OS configuration issue, not a virtualization problem.
Inside the guest:
systemctl get-default
systemctl status display-manager
Status: ✅ Verified working for openSUSE Leap 15.4 (BIOS, GUI)
```