After using OpenBSD as the main OS for 2-3 years I wanted to give Qubes OS another shot, but I still wanted to have Qube with full desktop experience of OpenBSD. So here is my configuration how I set up my OpenBSD qube with full 1080p resolution, and with audio and usb support. This config allows me (and possibly you) to use OpenBSD qube in full screen (desktop like experience) using gop, which is not available in OpenBSD Qube using SeaBIOS.
qvm-features openbsd-vm audio-model ac97
qvm-features openbsd-vm stubdom-qrexec 1
Enable UEFI in OpenBSD qube
qvm-features openbsd-vm uefi 1
We need to modify libvirt configuration for this qube, as xbf driver causes kernel panic on OpenBSD when booting under UEFI. This will make disks to show as SATA disks instead of IDE disks when xbf driver is not loaded.
4.1. Copy default config file.
sudo cp /usr/share/qubes/templates/libvirt/xen.xml /etc/qubes/templates/libvirt/xen/by-name/openbsd-vm.xml
4.2. Modify below config segment in openbsd-vm.xml:
from this:
<disk type="block" device="{{ device.devtype }}">
<driver name="phy" />
<source dev="{{ device.path }}" />
{% if device.name == 'root' %}
<target dev="xvda" />
{% elif device.name == 'private' %}
<target dev="xvdb" />
{% elif device.name == 'volatile' %}
<target dev="xvdc" />
{% elif device.name == 'kernel' %}
<target dev="xvdd" />
{% else %}
<target dev="xvd{{dd[counter.i]}}" />
{% if counter.update({'i': counter.i + 1}) %}{% endif %}
{% endif %}
{% if not device.rw %}
<readonly />
{% endif %}
{% if device.domain %}
<backenddomain name="{{ device.domain }}" />
{% endif %}
</disk>
to this:
<disk type="block" device="{{ device.devtype }}">
<driver name="phy" />
<source dev="{{ device.path }}" />
{% if device.name == 'root' %}
<target dev="sda" bus="virtio" />
{% elif device.name == 'private' %}
<target dev="sdb" bus="virtio" />
{% elif device.name == 'volatile' %}
<target dev="sdc" bus="virtio" />
{% elif device.name == 'kernel' %}
<target dev="sdd" bus="virtio" />
{% else %}
<target dev="sd{{dd[counter.i]}}" bus="virtio" />
{% if counter.update({'i': counter.i + 1}) %}{% endif %}
{% endif %}
{% if not device.rw %}
<readonly />
{% endif %}
{% if device.domain %}
<backenddomain name="{{ device.domain }}" />
{% endif %}
</disk>
machine gop 22 -> sets output of gop to 1920x1080. Change this to number that
represents resolution you want. see `machine gop` for all modes
boot -c -> Enter boot_config
'disable xbf'
then 'quit'
.config -e -o /bsd.new /bsd
command as root
10.1. Type disable xbf
and then quit
. This will generate new modified kernel with disabled xbf driver./etc/boot.conf
:
machine gop 22
boot bsd.new
Thats it. You should now have Fully working OpenBSD Qube with working USB passthrough, audio and correct resolution for full screen usage.
Known problems: