Roadmap - churchers/vm-bhyve GitHub Wiki
Version 1.3 (Dev)
- User control over slot/function used for passthru devices, as well as the ability to configure the slot vm-bhyve should start at for automatic devices.
- Ability to control wired memory via
wired_memory="yes". Note that it is no longer possible to usebhyve_options="-S"for this purpose.bhyve_optionsstill exists but we no longer scan it for-Sin order to pass the same option to bhyveload. - Control over CPU topology using new bhyve CPU syntax. As far as I am aware, this will require a FreeBSD 12 host.
-
graphics_vga=on|off|iooption to control thevgafbuf parameter. Instructions for OpenBSD under UEFI specified using this setting. - vm-bhyve will now automatically switch to
ahci-hdfor install media if it doesn't end with.iso. We also set this device as read-only.
Version 1.2 (Current FreeBSD Ports Version)
This is the current development version, and has the following new features:
- Support for up to 32 AHCI devices on a single controller. Previously bhyve would add a new AHCI controller for each device. In particular, this heavily limited the number of devices that could be attached to a UEFI guest. (FreeBSD 12 only)
- New
vm set&vm getcommands to manage global configuration variables. At the moment the only variable available isconsole, but this paves the way to make more of the basic functionality configurable. - 'Interactive' mode which starts a guest inside a
tmuxsession. Unlike normal, thetmuxsession is not detached, providing a similar experience to running in foreground mode. However, the advantage of interactive mode is that the tmux session can be detached, leaving the guest running in the background. - Partial command support so for example, commands such as
vm sw lcan be used to list virtual switches. - 1.2 now defaults to a UTC clock for all guests unless specifically disabled. This seems more consistent and predictable.
- "media" datastores. If you have a directory full of ISO images, it makes little sense to copy those all to
$vm_dir/.iso. Now you can just add that directory as a media datastore and we will look for ISO files there. When running the install command we also accept a full path to an ISO, and will look in the current directory. - The
vm startcommand can now start multiple guests at the same time. - Reworked virtual switches. Bridges are now named after the switch and code has been modularised
- Better support for virtio-console devices
Version 1.1
- Addition of "datastore" concept and
vm datastorecommand set. This allows us to create multiple locations to store virtual machines. Guests can be created on a specific datastore, and we look in all locations when trying to find a guest specified by the user. - Moved "global" configuration into
$vm_dir/.config/system.conf. For a short while we had both aswitchanddatastoreconfiguration file. These are now combined, and we have new__configfunctions that load and access this file, so we don't have to continually resort tosysrc. - Removal of
guestconfiguration setting. Users will need to make sure they have eitherloader="grub"orloader="bhyveload"specified for any guests that need it. - Support for UEFI graphics via VNC.
- Support for using
tmuxinstead ofcufor the guest's serial console.
Version 1.0
The current plan is for the existing codebase (as of 0.12.5) to become v1.0 once I've had a few weeks to make sure there are no obvious bugs. I am happy with the current feature set. Various versions of FreeBSD/Linux/NetBSD/OpenBSD/Windows have all been tested and appear to work fine. I've tried setting 5 various guests to start on host boot, which started without issue.
As of 15th Apr, the current code has been promoted to 1.0-beta. I plan to leave it in this state for a week or two, with any changes just incrementing the revision/build number (which is now a separate integer number). After that I will move to 1.0 and submit a port update. Any functionality changes will now be 1.1 and will likely stay GitHub only for the time being. I would rather not send constant port updates to FreeBSD; Users wanting the latest and greatest can download from GitHub, anyone else can get a stable 1.0 from ports.
This version has now been branched to 1-0.stable. Ports will be updated with this version once I'm happy to take it out of beta. The version number has been simplified to just 1.0, with an additional build number. If any fixes are needed, they will be done on this branch, and if required, updated in ports with a 1.0-pX version number.
Version 0.12.5 (Completed)
- Defaulted to partition 1 for grub guests, which means the partition option no longer needs to be specified in configuration if partition 1 is correct (which it is in most cases).
- Added
-fforeground option which allows guest (and installer) to be run in the foreground. This has proved very useful for installs, removing the need to connect to the console after running thevm installcommand.
Version 0.12 (Completed)
- Added support for rctl limits
Version 0.11 (Completed)
Updated grub-bhyve support so we now use automatic grub.cfg files located on the host, and no longer pass boot commands directly to the loader. This provides the following benefits
- The loader always runs on the guest console, so if the guest does not boot, users can access the loader using the
vm consolecommand. - If a user reboots a guest from the console, the loader will appear and the user has the option to either boot the default option (which will boot automatically), or access the grub command line.
- In previous versions,
grub-bhyvecould hang and use 100% cpu if the boot commands were incorrect. This should no longer happen. - The
bootcommand is no longer required for install or boot, simplifying the configuration file.
Version 0.10 (Completed)
Completely re-written the grub-bhyve support. Users have full control over the boot and install commands passed to the loader, using grub_installX and grub_runX options.