churchers / vm-bhyve

Shell based, minimal dependency bhyve manager
BSD 2-Clause "Simplified" License
840 stars 181 forks source link

Fix UEFI VM options #525

Open dag-erling opened 1 year ago

dag-erling commented 1 year ago

Currently, vm::run initializes _opts to -AHP, then, in the UEFI case calls vm::uefi which, instead of appending to _opts, sets it to -Hwl bootrom,.... This means UEFI VMs are started without -A, which was never a good idea but which causes them to fail to boot with recent versions of edk2-bhyve (see https://bugs.freebsd.org/273560).

The main purpose of this PR is to change vm::uefi to append to _opts so -A is not lost and UEFI VMs boot correctly.

In addition, it moves the -w option from UEFI-only to default, and deduplicates the -H option.

stratacast commented 1 year ago

This PR is essential to make Linux VMs work in FreeBSD 13.2-RELEASE-p3 with edk2-bhyve-g202308. Without this, my Linux VMs would fail to finish booting entirely.

hjf commented 1 year ago

fwiw, I've applied this patch manually and my linux VM still refuses to start. The configuration is:

loader="uefi"
graphics="no"
xhci_mouse="no"
cpu=1
memory="512M"

(edited out disk and networking)

when trying to start it I get:

vm exit[0]
        reason          SVM
        rip             0x000000001fb54b60
        inst_length     2
        exitcode        0x7b
        exitinfo1       0x511021d
        exitinfo2       0x1fb54b62        
cederom commented 10 months ago

Probably the same problem here (1.5.0/uefi/13.2-RELEASE-p8). It worked until recent update to 13.2-RELEASE-p8. Now machine starts for a moment then exits with error 4 or 134. debug="yes" does not give anything more in the log.

ronaldevers commented 1 day ago

Unless I've confused myself it was adding bhyve_options="-A" that fixed my Ubuntu guest. I'm installing an Ubuntu 24.04 guest. If I do it in UEFI mode with VNC, then the Ubuntu installer crashes usually around the mirror test. It does not crash in grub mode and it also does not crash in UEFI mode when adding the -A. Thanks @dag-erling for this hint and thanks @vermaden (https://vermaden.wordpress.com/2023/08/18/freebsd-bhyve-virtualization/) for pointing me here!