I successfully installed OpenBSD under xhyve, although there were a few issues, mostly xhyve's fault [1]. One which seems to be an issue with OpenBSD itself rather than xhyve is that with a headless machine, the installer always uses MBR mode. I selected GPT and ignored the warning "An EFI/GPT disk may not boot. Proceed?"; it boots fine, of course, since it's using the TianoCore EDK II firmware. (And MBR mode would not boot, unless I manually created and populated an EFI System Partition.)
I tracked this down to install.md checking for efifb (it's expecting
something like 'efifb0 at mainbus0: 1024x768, 32bpp' in the dmesg):
====
if dmesg | grep -q 'efifb0 at mainbus0'; then
MDEFI=y
fi
====
With a headless VM, however, the dmesg line is:
efifb at mainbus0 not configured
I can't find a better way to detect EFI via dmesg or sysctl hw, so a
simple patch to install.md will have to suffice:
====
diff --git distrib/amd64/common/install.md distrib/amd64/common/install.md
index d4fc8418a97..0c9db939463 100644
--- distrib/amd64/common/install.md
+++ distrib/amd64/common/install.md
@@ -35,7 +35,7 @@ MDXAPERTURE=2
MDXDM=y
NCPU=$(sysctl -n hw.ncpufound)
-if dmesg | grep -q 'efifb0 at mainbus0'; then
+if dmesg | egrep -q 'efifb0? at mainbus0'; then
MDEFI=y
fi
====
(diff also attached)
This probably also applies to physical hardware where efifb is broken
for whatever reason. I've verified that this still behaves correctly
with a working efifb0.
No idea if this also applies to any other platforms beside amd64, but
a quick glance at i386, arm64, and armv7 seems to say no.
-Andrew
[1] https://github.com/machyve/xhyve/issues/179#issuecomment-561903641
install-efi-gpt.diff
Description: Binary data
