I have a QEMU VM running Solaris 2.6 on a SPARCstation-5 machine. I currently start it with the following command:
qemu-system-sparc \
-name sunvm \
-machine SS-5 \
-m 256 \
-drive file=sunvm.img,bus=0,unit=0,media=disk \
-nic bridge,model=lance,mac=52:54:00:ab:cd:ef,helper=/usr/lib/qemu/qemu-bridge-helper,br=br0 \
-vnc :1
This works fine and I can connect to the VM through the network and with VNC.
I'd like to manage this VM using libvirt/virsh, which means I need to come up with libvirt XML that represents the same machine.
I tried using virt-install to create the XML and came up with the following:
virt-install \
--name sunvm \
--osinfo generic \
--ram 256 \
--arch sparc \
--machine SS-5 \
--vcpus 1 \
--import \
--disk path=sunvm.img,format=qcow2,bus=scsi \
--network bridge=br0,model=lance,mac=52:54:00:ab:cd:ef \
--noautoconsole \
--graphics vnc,port=5901 \
--print-xml --dry-run
This generates the following XML:
<domain type="qemu">
<name>sunvm</name>
<uuid>8b9dc638-5b67-4eec-9fe9-65443777fc10</uuid>
<memory>262144</memory>
<currentMemory>262144</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch="sparc" machine="SS-5">hvm</type>
<boot dev="hd"/>
</os>
<clock offset="utc"/>
<devices>
<emulator>/usr/bin/qemu-system-sparc</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/home/user/sunvm.img"/>
<target dev="sda" bus="scsi"/>
</disk>
<interface type="bridge">
<source bridge="br0"/>
<mac address="52:54:00:ab:cd:ef"/>
<model type="lance"/>
</interface>
<console type="pty"/>
<graphics type="vnc" port="5901"/>
<video>
<model type="vga"/>
</video>
</devices>
</domain>
When I try to create this machine with virsh, I get the message:
error: XML error: No PCI buses available
I tried adding the following line to the XML:
<controller type="pci" index="0" model="pci-root"/>
I then got the message:
error: unsupported configuration: domain configuration does not support video model 'vga'
I tried different video models like qxl, cirrus, vmvga, xen, vbox, and qxl, but they gave the same error.
I tried removing both the video and graphics XML elements and then adding:
<qemu:commandline xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0">
<qemu:arg value="-vnc"/>
<qemu:arg value=":1"/>
</qemu:commandline>
I then got the message:
error: internal error: process exited while connecting to monitor: qemu-system-sparc: -device lance,netdev=hostnet0,id=net0,mac=52:54:00:ab:cd:ef,bus=pci,addr=0x1: Parameter 'driver' expects pluggable device type
I couldn't figure out what that meant, so I tried removing the "interface" XML element and adding these direct qemu arguments:
<qemu:arg value="-nic"/>
<qemu:arg value="bridge,model=lance,mac=52:54:00:ab:cd:ef,helper=/usr/lib/qemu/qemu-bridge-helper,br=br0"/>
I then got the message:
error: internal error: process exited while connecting to monitor: qemu-system-sparc: bridge helper failed
I don't understand why the bridge helper would fail when it works fine running qemu directly. I have setuid enabled on /usr/lib/qemu/qemu-bridge-helper
and /etc/qemu/bridge.conf
contains allow br0
.
In any case, I tried temporarily changing the nic argument to "user" instead of "bridge", just to see if it would get any farther. This allowed me to start the VM, but when I connect over VNC it says "This VM has no graphic display device."
At this point I got stuck and I don't know what else to try.
Is there any way to get this VM working in libvirt with both functional bridged networking and a VNC-accessible display?
I'm using Debian 11 (bullseye) with libvirt 7.0.0 and QEMU 5.2.