This provides a single, consistent way to configure boot method. the guest listing
now shows uefi and uefi-csm guests without having to fudge the uefi setting into loader column.
Makes some sense as we display "uefi" under "Loader" when listing guests and only one can be set.
Old uefi="" setting can still be set to "csm" to choose the csm firmware.
Windows guests (or at least all of them that I have run under bhyve) appear to want local time and not UTC time for their clocks. As this was the default before 1.2, nothing was needed, but now that the default has changed this is necessary to get the correct time at boot.
Dash/hyphen and underscore are fairly common and benign characters.
Don't see much reason to support much else and possibly cause problems
in other parts of the code.
I cannot get confimation from devs that these sysctls are a viable or stable
way of testing for bhyve support (although cap.* sysctls seem fairly solid)
As such, also add an rc option to bypass the lot. This also allows bypassing the iommu
check just in case someone happens to have a iommu-capable machine that we think isn't.
Adds passthru0="A/B/C=D:E" syntax, where A/B/C is the host device, and D:E
is the bhyve slot/function. We also add start_slot and install_slot configuration options
to allow users to control the slots used by our bhyve device string.
ifconfig max len is 16 (including the "vm-" prefix). we can't easily take a substring
without possibly risking duplicates. This allows users to easily put things like
"interface vm-public" when configuring utilties like dnsmasq without worrying about
dynamic interface names.
This makes it much easier to switch between versions or modify functionality
just by switching the library files. Very useful for development and also means
the version displayed by "vm version" is linked to the lib files being used, which
is far more appropriate than just the version of the vm executable you have in PATH.
To reduce code we originally parsed some options globally, such as "vm -f start ...".
However this was confusing and inconsistent, especially in relation to other commands
such as zfs(8).
Dataset is only of use if running on ZFS, but in that case it is very
useful if the script wants to create snapshots/etc, and the path can
be retrieved from pwd/cwd if needed.