2016-05-27 13:56:36 +01:00
|
|
|
.Dd May 27, 2016
|
2015-06-30 16:54:38 +01:00
|
|
|
.Dt VM-BHYVE 8
|
|
|
|
|
.Os
|
|
|
|
|
.Sh NAME
|
|
|
|
|
.Nm vm
|
|
|
|
|
.Nd "utility to manage bhyve virtual machines"
|
|
|
|
|
.Sh SYNOPSIS
|
|
|
|
|
.Nm
|
2016-04-15 19:22:28 +01:00
|
|
|
.Cm version
|
|
|
|
|
.Nm
|
2015-06-30 16:54:38 +01:00
|
|
|
.Cm init
|
|
|
|
|
.Pp
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm switch list
|
|
|
|
|
.Nm
|
2015-11-11 15:22:56 +00:00
|
|
|
.Cm switch info
|
|
|
|
|
.Op Ar name
|
|
|
|
|
.Nm
|
2015-06-30 16:54:38 +01:00
|
|
|
.Cm switch create
|
|
|
|
|
.Ar name
|
|
|
|
|
.Nm
|
2015-11-09 10:11:28 +00:00
|
|
|
.Cm switch import
|
|
|
|
|
.Ar name bridge
|
|
|
|
|
.Nm
|
2015-06-30 16:54:38 +01:00
|
|
|
.Cm switch vlan
|
|
|
|
|
.Ar name vlan-id
|
|
|
|
|
.Nm
|
2015-08-09 17:06:05 +01:00
|
|
|
.Cm switch nat
|
|
|
|
|
.Ar name on|off
|
|
|
|
|
.Nm
|
2015-06-30 16:54:38 +01:00
|
|
|
.Cm switch add
|
|
|
|
|
.Ar name interface
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm switch remove
|
|
|
|
|
.Ar name interface
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm switch destroy
|
|
|
|
|
.Ar name
|
|
|
|
|
.Pp
|
|
|
|
|
.Nm
|
2016-04-19 11:47:52 +01:00
|
|
|
.Cm datastore list
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm datastore add
|
|
|
|
|
.Ar name spec
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm datastore remove
|
|
|
|
|
.Ar name
|
|
|
|
|
.Pp
|
|
|
|
|
.Nm
|
2015-06-30 16:54:38 +01:00
|
|
|
.Cm create
|
2016-04-19 11:47:52 +01:00
|
|
|
.Op Fl d Ar datastore
|
2015-06-30 16:54:38 +01:00
|
|
|
.Op Fl t Ar template
|
|
|
|
|
.Op Fl s Ar size
|
|
|
|
|
.Ar name
|
|
|
|
|
.Nm
|
2015-08-04 16:21:17 +01:00
|
|
|
.Cm destroy
|
|
|
|
|
.Ar name
|
|
|
|
|
.Nm
|
2015-07-10 13:51:40 +01:00
|
|
|
.Cm list
|
|
|
|
|
.Nm
|
2015-11-11 15:22:56 +00:00
|
|
|
.Cm info
|
|
|
|
|
.Op Ar name
|
|
|
|
|
.Nm
|
2015-06-30 16:54:38 +01:00
|
|
|
.Cm install
|
|
|
|
|
.Ar name iso
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm start
|
|
|
|
|
.Ar name
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm stop
|
|
|
|
|
.Ar name
|
2016-04-05 10:29:47 +01:00
|
|
|
.Ar ...
|
2015-06-30 16:54:38 +01:00
|
|
|
.Nm
|
|
|
|
|
.Cm console
|
|
|
|
|
.Ar name
|
2015-10-13 13:28:57 +01:00
|
|
|
.Op Ar com1|com2
|
2015-06-30 16:54:38 +01:00
|
|
|
.Nm
|
2015-10-21 10:51:38 +01:00
|
|
|
.Cm rename
|
|
|
|
|
.Ar name
|
2015-10-21 11:16:50 +01:00
|
|
|
.Ar new-name
|
2015-10-21 10:51:38 +01:00
|
|
|
.Nm
|
2015-10-16 10:57:48 +01:00
|
|
|
.Cm add
|
|
|
|
|
.Op Fl d Ar device
|
|
|
|
|
.Op Fl t Ar type
|
|
|
|
|
.Op Fl s Ar size|switch
|
|
|
|
|
.Ar name
|
|
|
|
|
.Nm
|
2015-06-30 16:54:38 +01:00
|
|
|
.Cm reset
|
|
|
|
|
.Ar name
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm poweroff
|
|
|
|
|
.Ar name
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm startall
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm stopall
|
2015-08-03 14:07:46 +01:00
|
|
|
.Nm
|
|
|
|
|
.Cm configure
|
|
|
|
|
.Ar name
|
2015-10-15 14:55:48 +01:00
|
|
|
.Nm
|
2016-03-26 12:50:28 +00:00
|
|
|
.Cm passthru
|
|
|
|
|
.Nm
|
2015-10-15 14:55:48 +01:00
|
|
|
.Cm clone
|
2015-11-14 21:05:47 +00:00
|
|
|
.Ar name[@snapshot]
|
2015-10-15 14:55:48 +01:00
|
|
|
.Ar new-name
|
2015-10-22 11:17:16 +01:00
|
|
|
.Nm
|
|
|
|
|
.Cm snapshot
|
|
|
|
|
.Op Fl f
|
|
|
|
|
.Ar name|name@snapshot
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm rollback
|
|
|
|
|
.Op Fl r
|
|
|
|
|
.Ar name@snapshot
|
2015-06-30 16:54:38 +01:00
|
|
|
.Pp
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm iso
|
|
|
|
|
.Op Ar url
|
2015-08-07 09:58:24 +01:00
|
|
|
.Pp
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm image list
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm image create
|
|
|
|
|
.Op Fl d Ar description
|
2016-04-26 14:35:10 +01:00
|
|
|
.Op Fl u
|
2015-08-07 09:58:24 +01:00
|
|
|
.Ar name
|
|
|
|
|
.Nm
|
2015-08-14 09:27:42 +01:00
|
|
|
.Cm image provision
|
2016-04-26 14:35:10 +01:00
|
|
|
.Op Fl d Ar datastore
|
2015-08-07 09:58:24 +01:00
|
|
|
.Ar uuid
|
|
|
|
|
.Ar new-name
|
|
|
|
|
.Nm
|
2015-08-14 09:27:42 +01:00
|
|
|
.Cm image destroy
|
2015-08-07 09:58:24 +01:00
|
|
|
.Ar uuid
|
2015-06-30 16:54:38 +01:00
|
|
|
.\" ============ DESCRIPTION =============
|
|
|
|
|
.Sh DESCRIPTION
|
|
|
|
|
The
|
|
|
|
|
.Nm
|
2015-10-12 16:46:15 +01:00
|
|
|
utility is used to provide simplified management of
|
|
|
|
|
.Xr bhyve 8
|
|
|
|
|
virtual machines,
|
2015-06-30 16:54:38 +01:00
|
|
|
including networking and console access.
|
|
|
|
|
.Pp
|
|
|
|
|
Networking is handled by creating one or more virtual switches. Each switch
|
|
|
|
|
has a simple name which is referenced in the virtual machine configuration file.
|
|
|
|
|
The
|
|
|
|
|
.Nm
|
|
|
|
|
utility automatically creates a
|
|
|
|
|
.Xr bridge 4
|
|
|
|
|
device for each virtual switch and assigns virtual machine
|
|
|
|
|
.Xr tap 4
|
|
|
|
|
interfaces dynamically.
|
|
|
|
|
.Pp
|
|
|
|
|
All configuration for virtual machines is stored in a simple rc style configuration
|
|
|
|
|
file. When virtual machines are first created, the configuration file is copied from
|
|
|
|
|
a template which can be specified by the user. Multiple templates can be created providing
|
|
|
|
|
an easy way to provision guests with specific configurations.
|
|
|
|
|
.Pp
|
|
|
|
|
.Nm
|
|
|
|
|
gracefully handles reboot and shutdown commands from inside the guests, whilst providing
|
|
|
|
|
full management of the virtual machine from the host system.
|
|
|
|
|
.\" ============ BASIC SETUP ============
|
|
|
|
|
.Sh BASIC SETUP
|
|
|
|
|
Once
|
|
|
|
|
.Nm
|
|
|
|
|
is installed, create the directory which will store your virtual machine configuration and data.
|
|
|
|
|
This directory will be referred to as
|
|
|
|
|
.Pa $vm_dir
|
|
|
|
|
throughput this man page.
|
|
|
|
|
.Pp
|
|
|
|
|
Add the following into
|
|
|
|
|
.Pa /etc/rc.conf
|
|
|
|
|
.Bd -literal -offset indent
|
2015-10-18 20:09:20 +01:00
|
|
|
vm_enable="YES"
|
|
|
|
|
vm_dir="/your/vm/path"
|
|
|
|
|
vm_list=""
|
|
|
|
|
vm_delay="5"
|
2015-06-30 16:54:38 +01:00
|
|
|
.Ed
|
|
|
|
|
.Pp
|
|
|
|
|
The first and second lines are required to enable the
|
|
|
|
|
.Nm
|
2016-04-08 09:14:47 +01:00
|
|
|
utility. Please see the
|
2015-06-30 16:54:38 +01:00
|
|
|
.Cm startall
|
|
|
|
|
command description for more information on the third and fourth settings.
|
|
|
|
|
.Pp
|
|
|
|
|
Now run the
|
|
|
|
|
.Nm vm
|
|
|
|
|
.Cm init
|
|
|
|
|
command to finish initialisation. This will create subdirectories inside
|
|
|
|
|
.Pa $vm_dir
|
|
|
|
|
to hold configuration and templates. It will also load any required kernel modules.
|
|
|
|
|
This command needs to be run on each boot, which is normally handled by the rc.d script.
|
|
|
|
|
.Pp
|
2016-04-08 09:14:47 +01:00
|
|
|
Sample templates are installed to
|
|
|
|
|
.Pa /usr/local/share/examples/vm-bhyve/ .
|
|
|
|
|
You can make use of these by copying them into your
|
|
|
|
|
.Pa $vm_dir/.templates/
|
|
|
|
|
directory.
|
2015-06-30 16:54:38 +01:00
|
|
|
You can create and edit the templates as required. It is recommended to keep a template called
|
|
|
|
|
.Pa default.conf ,
|
|
|
|
|
as this will be used when no template is manually specified.
|
|
|
|
|
.\" ============ ZFS =============
|
|
|
|
|
.Sh ZFS
|
2015-08-06 19:31:08 +01:00
|
|
|
If you are using a ZFS dataset to store your virtual machines, and want a new child dataset created
|
|
|
|
|
for each one, specify the dataset to use in
|
|
|
|
|
.Pa /etc/rc.conf
|
|
|
|
|
as follows:
|
2015-06-30 16:54:38 +01:00
|
|
|
.Bd -literal -offset indent
|
2015-08-06 19:31:08 +01:00
|
|
|
$vm_dir="zfs:pool/dataset"
|
2015-06-30 16:54:38 +01:00
|
|
|
.Ed
|
|
|
|
|
.Pp
|
2015-08-06 19:31:08 +01:00
|
|
|
In contrast to earlier versions, if
|
|
|
|
|
.Pa $vm_dir
|
|
|
|
|
is a normal path, a standard subdirectory will be created for each virtual machine, regardless
|
|
|
|
|
of the file system type. However,
|
|
|
|
|
.Nm
|
|
|
|
|
is now able to handle situations where the dataset mountpoint does not match the dataset name.
|
2015-06-30 16:54:38 +01:00
|
|
|
.\" ============ QUICKSTART =============
|
|
|
|
|
.Sh QUICKSTART
|
|
|
|
|
Create a virtual switch called
|
|
|
|
|
.Sy public
|
|
|
|
|
(which is the switch name specified in the default templates) and attach it to a real interface.
|
|
|
|
|
Use your own interface in place of
|
|
|
|
|
.Sy em0
|
|
|
|
|
as required.
|
|
|
|
|
.Bd -literal -offset ident
|
|
|
|
|
# vm switch create public
|
|
|
|
|
# vm switch add public em0
|
|
|
|
|
.Ed
|
|
|
|
|
.Pp
|
|
|
|
|
Download an ISO file to use for installation:
|
|
|
|
|
.Bd -literal -offset ident
|
|
|
|
|
# vm iso ftp://ftp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/10.1/FreeBSD-10.1-RELEASE-amd64-disc1.iso
|
|
|
|
|
.Ed
|
|
|
|
|
.Pp
|
|
|
|
|
Create a new guest using the default template and disk size, then start the installation. The
|
|
|
|
|
.Ar install
|
2016-04-08 09:14:47 +01:00
|
|
|
subcommand will immediately return you to your shell. Once started, use the
|
2015-06-30 16:54:38 +01:00
|
|
|
.Ar console
|
2016-04-08 09:14:47 +01:00
|
|
|
command to connect to the guest and complete the installation.
|
2015-06-30 16:54:38 +01:00
|
|
|
.Bd -literal -offset ident
|
|
|
|
|
# vm create my-guest
|
|
|
|
|
# vm install my-guest FreeBSD-10.1-RELEASE-amd64-disc1.iso
|
|
|
|
|
# vm console my-guest
|
|
|
|
|
.Ed
|
2015-07-01 11:10:50 +01:00
|
|
|
.Pp
|
|
|
|
|
Please note that Linux guests currently require the
|
|
|
|
|
.Sy sysutils/grub2-bhyve
|
2016-04-08 09:14:47 +01:00
|
|
|
package to be installed. This is used in place of
|
2015-07-01 11:10:50 +01:00
|
|
|
.Xr bhyveload 8
|
|
|
|
|
to load the guest kernel into memory.
|
2015-10-10 22:18:33 +01:00
|
|
|
.\" ============== WINDOWS ===============
|
|
|
|
|
.Sh WINDOWS SUPPORT
|
|
|
|
|
Windows guests are supported on versions of FreeBSD that have UEFI
|
|
|
|
|
support in
|
|
|
|
|
.Xr bhyve 8 .
|
2016-04-07 17:52:43 +01:00
|
|
|
As of April 2016, UEFI support should be available in FreeBSD 10.3+ and
|
|
|
|
|
11-CURRENT.
|
2015-10-10 22:18:33 +01:00
|
|
|
.Pp
|
|
|
|
|
You will also need a copy of the UEFI firmware (see URL below), which needs to be placed in
|
|
|
|
|
.Pa $vm_dir/.config/BHYVE_UEFI.fd .
|
|
|
|
|
.Pp
|
|
|
|
|
As there is no VGA console in
|
|
|
|
|
.Xr bhyve 8 ,
|
|
|
|
|
an unattended installation ISO is required which allows Windows to install and
|
|
|
|
|
boot without any user interaction. Instructions for creating a suitable ISO can
|
|
|
|
|
be found at the URL below.
|
|
|
|
|
.Pp
|
|
|
|
|
Once the installation ISO is ready, has been placed in the
|
|
|
|
|
.Pa $vm_dir/.iso
|
|
|
|
|
directory, and you have the UEFI firmware, installation can be performed as normal.
|
|
|
|
|
.Bd -literal -offset indent
|
|
|
|
|
# vm create -t windows -s 30G winguest
|
|
|
|
|
# vm install winguest win_repack.iso
|
|
|
|
|
.Ed
|
|
|
|
|
.Pp
|
|
|
|
|
Windows installation has been tested with 2012r2 and takes around 20-25 minutes.
|
|
|
|
|
During install, the guest will reboot twice (three runs in total). You can see
|
|
|
|
|
the guest reboot by watching the log file
|
|
|
|
|
.Pa $vm_dir/guestname/vm-bhyve.log .
|
|
|
|
|
The third run should boot fully into Windows. The
|
2015-10-11 17:48:55 +01:00
|
|
|
.Sy virtio
|
2015-10-10 22:18:33 +01:00
|
|
|
network adapter will request an IP address using DHCP. Connect to the guest console
|
|
|
|
|
and press
|
2015-10-11 17:48:55 +01:00
|
|
|
.Sy i
|
2015-10-10 22:18:33 +01:00
|
|
|
to see the IP address that has been assigned. The default unattended installation files
|
|
|
|
|
should make RDP available, using Administrator and Test123 as the default login details.
|
|
|
|
|
.Pp
|
|
|
|
|
The UEFI firmware (BHYVE_UEFI_20151002.fd), as well as instructions for creating an
|
|
|
|
|
unattended installation ISO can currently be obtained from
|
|
|
|
|
.Pa https://people.freebsd.org/~grehan/bhyve_uefi/
|
2016-04-08 21:26:09 +01:00
|
|
|
.\" ============ GLOBAL OPTIONS =============
|
|
|
|
|
.Sh GLOBAL OPTIONS
|
|
|
|
|
There are some options that can be specified after
|
|
|
|
|
.Sy vm ,
|
|
|
|
|
but before any subcommand. These are global options that affect the way
|
|
|
|
|
.Nm
|
|
|
|
|
functions.
|
|
|
|
|
.Bl -tag -width 12n
|
|
|
|
|
.It Fl f
|
|
|
|
|
Run
|
|
|
|
|
.Nm
|
|
|
|
|
in the foreground. This option is primarily useful with the
|
|
|
|
|
.Nm Cm start
|
|
|
|
|
command and runs the guest on stdio.
|
|
|
|
|
.El
|
2015-06-30 16:54:38 +01:00
|
|
|
.\" ============ SUBCOMMANDS =============
|
|
|
|
|
.Sh SUBCOMMANDS
|
|
|
|
|
.Bl -tag -width indent
|
2016-04-15 19:22:28 +01:00
|
|
|
.It Cm version
|
|
|
|
|
Show the version number of vm-bhyve installed.
|
2015-06-30 16:54:38 +01:00
|
|
|
.It Cm init
|
|
|
|
|
.br
|
|
|
|
|
This should be run once after each host reboot before running any other
|
|
|
|
|
.Nm
|
|
|
|
|
commands. The main function of the
|
|
|
|
|
.Cm init
|
|
|
|
|
command is as follows:
|
|
|
|
|
.Pp
|
|
|
|
|
o Load all necessary kernel modules if not already loaded
|
|
|
|
|
.br
|
|
|
|
|
o Set tap devices to come up automatically when opened
|
|
|
|
|
.br
|
|
|
|
|
o Create any configured virtual switches
|
|
|
|
|
.It Cm switch list
|
|
|
|
|
List virtual switches. This reads all configured virtual switches from the
|
|
|
|
|
.Pa $vm_dir/.config/switch
|
|
|
|
|
file and displays them. If the virtual switches are loaded, it also tries
|
|
|
|
|
to display the
|
|
|
|
|
.Xr bridge 4
|
|
|
|
|
interface that has been assigned to each one.
|
2015-11-11 15:22:56 +00:00
|
|
|
.It Cm switch info Op Ar name
|
|
|
|
|
This command shows detailed information about the specified virtual switch.
|
|
|
|
|
If no switch name is provided, information is output for all configured switches.
|
|
|
|
|
Information displayed includes the following:
|
|
|
|
|
.Pp
|
|
|
|
|
o Basic switch settings
|
|
|
|
|
.br
|
|
|
|
|
o Overall bytes sent and received via this switch
|
|
|
|
|
.br
|
|
|
|
|
o Physical ports connected
|
|
|
|
|
.br
|
|
|
|
|
o Virtual ports, including the associated virtual machine
|
|
|
|
|
.br
|
2015-06-30 16:54:38 +01:00
|
|
|
.It Cm switch create Ar name
|
|
|
|
|
Create a new virtual switch. The name must be supplied and may only contain
|
|
|
|
|
letters, numbers and dashes. However, it may not contain a dash at the beginning
|
|
|
|
|
or end.
|
|
|
|
|
.Pp
|
|
|
|
|
When a new virtual switch is created, the persistent configuration file is updated
|
|
|
|
|
and a new
|
|
|
|
|
.Xr bridge 4
|
|
|
|
|
interface is provisioned.
|
2015-11-09 10:11:28 +00:00
|
|
|
.It Cm switch import Ar name Ar bridge
|
|
|
|
|
This command allows you to import an existing bridge interface that has been created
|
|
|
|
|
manually and use it for virtual machines. Once a bridge is imported, you can use
|
|
|
|
|
the switch
|
|
|
|
|
.Pa name
|
|
|
|
|
in guest configuration. Ideally the manual bridge should be configured in
|
|
|
|
|
.Pa /etc/rc.conf ,
|
|
|
|
|
so that it is available on each host boot.
|
|
|
|
|
.Pp
|
|
|
|
|
Please note that this creates a 'manual' switch and is designed to allow you to configure your
|
|
|
|
|
own bridge. None of the
|
|
|
|
|
.Pa add ,
|
|
|
|
|
.Pa remove ,
|
|
|
|
|
.Pa vlan
|
|
|
|
|
or
|
|
|
|
|
.Pa nat
|
|
|
|
|
commands are supported on manual switches.
|
|
|
|
|
.Pp
|
|
|
|
|
If a manual switch is destroyed using the
|
|
|
|
|
.Pa destroy
|
|
|
|
|
command, we remove all vm-bhvye configuration, but leave the
|
|
|
|
|
.Xr bridge 4
|
|
|
|
|
interface intact.
|
2015-06-30 16:54:38 +01:00
|
|
|
.It Cm switch vlan Ar name Ar vlan-id
|
|
|
|
|
Assign a VLAN number to a virtual switch. The VLAN number must be between 0-4094.
|
|
|
|
|
.Pp
|
|
|
|
|
When adding an interface to a VLAN enabled virtual switch, a new
|
|
|
|
|
.Xr vlan 4
|
|
|
|
|
interface is created. This interface has the relevent parent interface and VLAN tag
|
|
|
|
|
configured. This vlan interface is then added to the virtual switch. As such, all
|
|
|
|
|
traffic between guests on the same switch is untagged and travels freely. However,
|
|
|
|
|
all traffic exiting via physical interfaces is tagged.
|
|
|
|
|
.Pp
|
|
|
|
|
If the virtual switch already has physical interfaces assigned, they are all removed
|
|
|
|
|
from the bridge, reconfigured, then re-added.
|
|
|
|
|
.Pp
|
|
|
|
|
To remove the VLAN configuration from a virtual switch, specify a
|
|
|
|
|
.Ar vlan-id
|
|
|
|
|
of 0.
|
2015-08-09 17:06:05 +01:00
|
|
|
.It Cm switch nat Ar name Ar on|off
|
2015-11-09 09:18:37 +00:00
|
|
|
Enable or disable NAT functionality on the specified switch. Please note that
|
2015-08-09 17:06:05 +01:00
|
|
|
.Xr pf
|
2015-11-09 09:18:37 +00:00
|
|
|
is required for this functionality and must be enabled in
|
|
|
|
|
.Pa /etc/rc.conf .
|
|
|
|
|
If DHCP is desired, please install the
|
2015-08-09 17:06:05 +01:00
|
|
|
.Xr dnsmasq
|
2015-11-09 09:18:37 +00:00
|
|
|
pacakge. vm-bhyve will generate a sample dnsmasq configuration in
|
|
|
|
|
.Pa /usr/local/etc/dnsmasq.conf.bhyve ,
|
|
|
|
|
but it is up to the user to either use this configuration directly, or merge with
|
|
|
|
|
any existing dnsmasq settings you have configured.
|
2015-08-09 17:06:05 +01:00
|
|
|
.Pp
|
|
|
|
|
The switch should have no host ports assigned, as these will end up on the private side
|
|
|
|
|
of the NAT network.
|
|
|
|
|
.Nm
|
|
|
|
|
automatically detects the hosts default gateway, which is used as the forwarding interface
|
|
|
|
|
for NAT connections.
|
|
|
|
|
.Pp
|
|
|
|
|
Once enabled, a 172.16.X.0/24 network is assigned to the switch (bridge) interface.
|
|
|
|
|
.Ar X
|
|
|
|
|
is chosen based on the ID of the bridge interface. For example, if the switch is using
|
|
|
|
|
bridge10, the network will be 172.16.10.0/24.
|
|
|
|
|
.Xr dnsmasq
|
2015-11-09 09:18:37 +00:00
|
|
|
can be used to provide DHCP to the guests, and
|
2015-08-09 17:06:05 +01:00
|
|
|
.Xr pf
|
|
|
|
|
rules are inserted to provide the NAT translation.
|
|
|
|
|
.Pp
|
|
|
|
|
.Pa /etc/pf.conf
|
|
|
|
|
is created if it doesn't exist, and a single include statement is added. This
|
|
|
|
|
include statement can be moved within the file if required.
|
2015-06-30 16:54:38 +01:00
|
|
|
.It Cm switch add Ar name Ar interface
|
|
|
|
|
Add the specified interface to the named virtual switch.
|
|
|
|
|
.Pp
|
|
|
|
|
The interface will immediately be added to the relevant bridge if possible, and
|
|
|
|
|
stored in the persistent switch configuration file. If a
|
|
|
|
|
.Ar vlan-id
|
|
|
|
|
is specified on the virtual switch, this will cause a new
|
|
|
|
|
.Xr vlan 4
|
|
|
|
|
interface to be created.
|
|
|
|
|
.It Cm switch remove Ar name Ar interface
|
|
|
|
|
Removes the specified interface from the named virtual switch and updates the
|
|
|
|
|
persistent configuration file.
|
|
|
|
|
.It Cm switch destroy Ar name
|
|
|
|
|
Completely remove the named virtual switch and all configuration. The associated
|
|
|
|
|
.Xr bridge 4
|
|
|
|
|
interface will be removed, as well as any
|
|
|
|
|
.Xr vlan 4
|
|
|
|
|
interfaces if they are not in use by other virtual switches.
|
2016-04-19 11:47:52 +01:00
|
|
|
.It Cm datastore list
|
|
|
|
|
List the configured datastores. Normally
|
|
|
|
|
.Sy vm-bhyve
|
|
|
|
|
will store all guests under the directory specified in
|
|
|
|
|
.Pa /etc/rc.conf .
|
|
|
|
|
This is the
|
|
|
|
|
.Sy default
|
|
|
|
|
datastore. Additional datastores can be added, providing the
|
|
|
|
|
ability to store guests in multiple locations on your system.
|
|
|
|
|
.It Cm datastore add Ar name spec
|
|
|
|
|
Add a new datastore to the system. The datastore name can only contain letters,
|
|
|
|
|
numbers and _. characters. The
|
|
|
|
|
.Pa spec
|
|
|
|
|
should use the same format as
|
|
|
|
|
.Sy $vm_dir .
|
|
|
|
|
A standard directory can be specified by just providing the path, whereas a ZFS
|
|
|
|
|
storage location should be specified in
|
|
|
|
|
.Sy zfs:pool/dataset
|
|
|
|
|
format.
|
|
|
|
|
.Pp
|
|
|
|
|
Please note that the dircetory or dataset should already exist. We do not try to
|
|
|
|
|
create it.
|
|
|
|
|
.It Cm datastore remove Ar name
|
|
|
|
|
Remove the specified datastore from the list. This does not destroy the directory
|
|
|
|
|
or dataset, leaving all files intact.
|
2015-06-30 16:54:38 +01:00
|
|
|
.It Xo
|
|
|
|
|
.Cm create
|
2016-04-19 11:47:52 +01:00
|
|
|
.Op Fl d Ar datastore
|
2015-06-30 16:54:38 +01:00
|
|
|
.Op Fl t Ar template
|
|
|
|
|
.Op Fl s Ar size
|
|
|
|
|
.Ar name
|
|
|
|
|
.Xc
|
|
|
|
|
Create a new virtual machine.
|
|
|
|
|
.Pp
|
|
|
|
|
Unless specified, the
|
|
|
|
|
.Pa default.conf
|
|
|
|
|
template will be used and a 20GB virtual disk image is created. This command will
|
|
|
|
|
created the virtual machine directory
|
|
|
|
|
.Pa $vm_dir/$name ,
|
|
|
|
|
and create the configuration file and empty disk image within.
|
|
|
|
|
.Bl -tag -width 12n
|
2016-04-19 11:47:52 +01:00
|
|
|
.It Fl d Ar datastore
|
|
|
|
|
Specify the datastore to create this virtual machine under. If not specified, the
|
|
|
|
|
.Sy default
|
|
|
|
|
dataset will be used, which is the location specified in
|
|
|
|
|
.Pa /etc/rc.conf .
|
2015-06-30 16:54:38 +01:00
|
|
|
.It Fl t Ar template
|
|
|
|
|
Specifies the template to use from within the
|
|
|
|
|
.Pa $vm_dir/.templates
|
|
|
|
|
directory. The
|
|
|
|
|
.Sy .conf
|
|
|
|
|
suffix is not required.
|
|
|
|
|
.It Fl s Ar size
|
|
|
|
|
The size of disk image to create in GB. Unless specified, the guest image will
|
|
|
|
|
be a sparse file 20GB in size.
|
|
|
|
|
.El
|
2015-08-04 16:21:17 +01:00
|
|
|
.It Cm destroy Ar name
|
|
|
|
|
Removes the specified virtual machine from the system, deleting all associated
|
|
|
|
|
disk images & configuration.
|
2015-07-10 13:51:40 +01:00
|
|
|
.It Cm list
|
|
|
|
|
.br
|
|
|
|
|
List all the virtual machines in the
|
2015-10-24 20:27:24 +01:00
|
|
|
.Pa $vm_dir
|
2015-07-10 13:51:40 +01:00
|
|
|
directory. This will show the basic configuration for each virtual machine, and whether
|
|
|
|
|
they are currently running.
|
2015-11-11 15:22:56 +00:00
|
|
|
.It Cm info Op Ar name
|
|
|
|
|
Shows detailed information about the specified virtual machine. If no name is given,
|
|
|
|
|
information for all virtual machines is displayed.
|
|
|
|
|
.Pp
|
|
|
|
|
This output includes detailed information about network and disk devices, including
|
|
|
|
|
the space usage for all virtual disks (exluding custom disk devices). If the guest
|
|
|
|
|
is running, the output also shows the amount of host memory curently in use,
|
|
|
|
|
and additional network details including bytes sent/received for each virtual interface.
|
2015-07-10 13:51:40 +01:00
|
|
|
.It Cm install Ar name Ar iso
|
2015-06-30 16:54:38 +01:00
|
|
|
Start a guest installation for the named virtual machine, using the specified ISO file.
|
|
|
|
|
The
|
|
|
|
|
.Ar iso
|
|
|
|
|
argument should be the filename of an ISO file already downloaded into the
|
|
|
|
|
.Pa $vm_dir/.iso
|
|
|
|
|
directory. ISO files in this directory can be managed using the
|
|
|
|
|
.Ar iso
|
|
|
|
|
subcommand described below.
|
|
|
|
|
.Pp
|
|
|
|
|
Once started, the guest loader will be booted in the foreground. This allows you to choose
|
|
|
|
|
the
|
|
|
|
|
.Sy Install
|
|
|
|
|
boot option for guests that require it. Once the loader has completed, you will be returned
|
|
|
|
|
to the shell and bhyve will continue running in the background. Use the
|
|
|
|
|
.Ar console
|
|
|
|
|
subcommand to connect to the guest and complete installation.
|
|
|
|
|
.Pp
|
|
|
|
|
After installation, the guest can be rebooted and will restart using its own disk image to boot.
|
|
|
|
|
At this point the installation ISO file is still attached, allowing you to use the CD/DVD image
|
|
|
|
|
for any post installation tasks. The ISO file will remain attached after each reboot until the
|
|
|
|
|
guest is fully stopped.
|
2015-07-10 13:51:40 +01:00
|
|
|
.It Cm start Ar name
|
2015-06-30 16:54:38 +01:00
|
|
|
Start the named virtual machine. The guest will boot and run completely in the background. Use
|
|
|
|
|
the
|
|
|
|
|
.Ar console
|
|
|
|
|
subcommand to connect to it if required.
|
|
|
|
|
.Pp
|
|
|
|
|
For each network adapter specified in the guest configuration, a
|
|
|
|
|
.Xr tap 4
|
|
|
|
|
interface will be created. If possible, the tap interface will be attached the relevent
|
|
|
|
|
.Xr bridge 4
|
|
|
|
|
interface, based on the virtual switch specified in the guest configuration.
|
2016-04-05 10:29:47 +01:00
|
|
|
.It Cm stop Ar name Ar ...
|
2015-06-30 16:54:38 +01:00
|
|
|
Stop a named virtual machine. All
|
|
|
|
|
.Xr tap 4
|
|
|
|
|
and
|
|
|
|
|
.Xr nmdm 4
|
|
|
|
|
devices will be automatically cleaned up once the guest has exited.
|
2016-04-05 10:29:47 +01:00
|
|
|
.Pp
|
|
|
|
|
If a guest is stuck in the bootloader stage, you are given the option to forcibly stop it.
|
|
|
|
|
.Pp
|
|
|
|
|
Multiple guests can be specified to this command at the same time. Each one will be sent a
|
|
|
|
|
poweroff event.
|
2015-10-13 13:28:57 +01:00
|
|
|
.It Cm console Ar name Op Ar com1|com2
|
2015-06-30 16:54:38 +01:00
|
|
|
Connect to the console of the named virtual machine. Without network access, this is the primary
|
|
|
|
|
way of connecting to the guest once it is running.
|
|
|
|
|
.Pp
|
2015-10-13 13:28:57 +01:00
|
|
|
By default this will connect to the first com port specified in the client configuration, which
|
|
|
|
|
is usually com1. Alternatively you can specify the com port to connect to.
|
|
|
|
|
.Pp
|
2015-06-30 16:54:38 +01:00
|
|
|
This looks for the
|
|
|
|
|
.Xr nmdm 4
|
|
|
|
|
device associated with the virtual machine, and connects to it with
|
|
|
|
|
.Xr cu 1 .
|
|
|
|
|
Use ~+Ctrl-D to exit the console and return to the host.
|
2015-10-21 10:51:38 +01:00
|
|
|
.It Cm rename Ar name Ar new-name
|
|
|
|
|
Renames the specified virtual machine. The guest must be stopped to use this function.
|
2015-10-16 10:57:48 +01:00
|
|
|
.It Xo
|
|
|
|
|
.Cm add
|
|
|
|
|
.Op Fl d Ar device
|
|
|
|
|
.Op Fl t Ar type
|
|
|
|
|
.Op Fl s Ar size|switch
|
|
|
|
|
.Ar name
|
|
|
|
|
.Xc
|
|
|
|
|
Add a new network or disk device to the named virtual machine. The options depend on
|
|
|
|
|
the type of device that is being added:
|
|
|
|
|
.Bl -tag -width 15n
|
|
|
|
|
.It Fl d Ar device
|
|
|
|
|
The type of device to add. Currently this can either be
|
|
|
|
|
.Pa disk
|
|
|
|
|
or
|
|
|
|
|
.Pa network
|
|
|
|
|
.It Fl t Ar type
|
|
|
|
|
For disk devices, this specifies the type of disk device to create.
|
|
|
|
|
Valid options for this are
|
|
|
|
|
.Pa zvol ,
|
|
|
|
|
.Pa sparse-zvol
|
|
|
|
|
and
|
|
|
|
|
.Pa file .
|
|
|
|
|
If not specified, this defaults to
|
|
|
|
|
.Pa file .
|
|
|
|
|
.It Fl s Ar size|switch
|
|
|
|
|
For disk devices, this is used to specify the size of the disk image to create. For
|
|
|
|
|
network devices, use this option to specify the virtual switch to connect the network interface to.
|
|
|
|
|
.El
|
|
|
|
|
.Pp
|
|
|
|
|
For both types of device, the emulation type will be chosen automatically based on the
|
|
|
|
|
emulation used for the existing guest devices.
|
2015-07-10 13:51:40 +01:00
|
|
|
.It Cm reset Ar name
|
2015-06-30 16:54:38 +01:00
|
|
|
Forcefully reset the named virtual machine. This can cause corruption to the guest file system just
|
|
|
|
|
as with real hardware and should only be used if necessary.
|
2015-07-10 13:51:40 +01:00
|
|
|
.It Cm poweroff Ar name
|
2015-06-30 16:54:38 +01:00
|
|
|
Forcefully power off the named virtual machine. As with
|
|
|
|
|
.Ar reset
|
|
|
|
|
above, this does not inform the guest to shutdown gracefully and should only be used if the guest
|
|
|
|
|
can not be shut down using normal methods.
|
2015-07-10 13:51:40 +01:00
|
|
|
.It Cm startall
|
2015-06-30 16:54:38 +01:00
|
|
|
Start all virtual machines configured for auto-start. This is the command used by the rc.d scripts
|
|
|
|
|
to start all machines on boot.
|
|
|
|
|
.Pp
|
|
|
|
|
The list of virtual machines should be specified using the
|
|
|
|
|
.Pa $vm_list
|
|
|
|
|
variable in
|
|
|
|
|
.Pa /etc/rc.conf .
|
|
|
|
|
This allows you to use shared storage for virtual machine data, whilst making sure that the correct
|
|
|
|
|
guests are started automatically on each host. (Or to just make sure your required guests start on boot
|
|
|
|
|
whilst leaving test/un-needed guests alone)
|
|
|
|
|
.Pp
|
|
|
|
|
The delay between starting guests can be set using the
|
|
|
|
|
.Pa $vm_delay
|
2015-10-11 17:48:55 +01:00
|
|
|
variable, which defaults to 5 seconds. Too small a delay can cause problems, as each guest doesn't
|
2015-06-30 16:54:38 +01:00
|
|
|
have enough time to claim a null modem device before the next guest starts. Increasing this value
|
|
|
|
|
can be useful if you have disk-intensive guests and want to give each guest a chance to fully
|
|
|
|
|
boot before the next starts.
|
2015-07-10 13:51:40 +01:00
|
|
|
.It Cm stopall
|
2015-06-30 16:54:38 +01:00
|
|
|
Stop all running virtual machines. This sends a stop command to all
|
|
|
|
|
.Xr bhyve 8
|
|
|
|
|
instances, regardless of whether they were starting using
|
|
|
|
|
.Nm
|
|
|
|
|
or not.
|
2015-08-03 14:07:46 +01:00
|
|
|
.It Cm configure Ar name
|
|
|
|
|
The
|
|
|
|
|
.Cm configure
|
|
|
|
|
command simply opens the virtual machine configuration file in your default editor,
|
|
|
|
|
allowing you to easily make changes. Please note, changes do not take effect until
|
|
|
|
|
the virtual machine is fully shutdown and restarted.
|
2016-03-26 12:50:28 +00:00
|
|
|
.It Cm passthru
|
|
|
|
|
The
|
|
|
|
|
.Cm passthru
|
|
|
|
|
command lists all PCI devices in the system, the device ID required for bhyve, and
|
|
|
|
|
whether the device is currently ready to be used by a guest. In order to make a
|
|
|
|
|
device ready, it needs to be reserved on boot by adding the device ID to the
|
|
|
|
|
.Sy pptdevs
|
|
|
|
|
variable in
|
|
|
|
|
.Pa /boot/loader.conf .
|
|
|
|
|
.Pp
|
|
|
|
|
Once a device is ready, it can be assigned to a guest by adding
|
|
|
|
|
.Sy passthruX="{ID}"
|
|
|
|
|
to the guest's configuration file.
|
|
|
|
|
.Sy X
|
|
|
|
|
should be an integer starting at 0 for the first passthrough device.
|
|
|
|
|
.Pp
|
|
|
|
|
More details can be found in the bhyve wiki.
|
2015-11-14 21:05:47 +00:00
|
|
|
.It Cm clone Ar name[@snapshot] Ar new-name
|
2015-10-15 14:55:48 +01:00
|
|
|
Create a clone of the virtual machine
|
|
|
|
|
.Pa name ,
|
|
|
|
|
as long as it is currently powered off. The new machine will be called
|
|
|
|
|
.Pa new-name ,
|
|
|
|
|
and will be ready to boot with a newly assigned UUID and empty log file.
|
|
|
|
|
.Pp
|
2015-11-14 21:05:47 +00:00
|
|
|
If no snapshot name is given, a new snapshot will be taken of the guest and any descendent
|
|
|
|
|
datasets or ZVOLs. If you wish to use an existing snapshot as the source for the clone,
|
|
|
|
|
please make sure the snapshot exists for the guest and any child ZVOLs, otherwise the clone
|
|
|
|
|
will fail.
|
|
|
|
|
.Pp
|
|
|
|
|
Please note that this function requires ZFS.
|
2015-10-22 11:17:16 +01:00
|
|
|
.It Xo
|
|
|
|
|
.Cm snapshot
|
|
|
|
|
.Op Fl f
|
|
|
|
|
.Ar name|name@snapshot
|
|
|
|
|
.Xc
|
|
|
|
|
Create a snapshot of the names virtual machine. This command is only supported with ZFS
|
|
|
|
|
and will take a snapshot of the guest dataset and any descendent ZVOL devices.
|
|
|
|
|
.Pp
|
|
|
|
|
The guest and snapshot name can be specified in the normal
|
|
|
|
|
.Pa name@snapshot
|
|
|
|
|
way familiar to ZFS users. If no snapshot name is given, the snapshot is based on the current timestamp in
|
|
|
|
|
.Pa Y-m-d-H:M:S
|
|
|
|
|
format.
|
|
|
|
|
.Pp
|
|
|
|
|
By default the guest must be stopped to use this command, although you can force a snapshot
|
|
|
|
|
of a running guest by using the
|
|
|
|
|
.Fl f
|
|
|
|
|
option.
|
|
|
|
|
.It Xo
|
|
|
|
|
.Cm rollback
|
|
|
|
|
.Op Fl r
|
|
|
|
|
.Ar name@snapshot
|
|
|
|
|
.Xc
|
|
|
|
|
Rollback the guest to the specified snapshot. This will roll back the guest dataset and all
|
|
|
|
|
descendent ZVOL devices.
|
|
|
|
|
.Pp
|
|
|
|
|
Normally, ZFS will only allow you to roll back to the most recent snapshot.
|
|
|
|
|
If the snapshot given is not the most recent, ZFS will produce a warning detailing that you
|
|
|
|
|
need to use the
|
|
|
|
|
.Fl r
|
|
|
|
|
option to remove the more recent snapshots. It will also produce a list of the snapshots that
|
|
|
|
|
will be destroyed if you use this option. The
|
|
|
|
|
.Fl r
|
|
|
|
|
option can be passed directly into
|
|
|
|
|
.Nm
|
|
|
|
|
.Cm rollback
|
|
|
|
|
.Pp
|
|
|
|
|
The guest must always be stopped to use this command.
|
2015-07-10 13:51:40 +01:00
|
|
|
.It Cm iso Op Ar url
|
2015-06-30 16:54:38 +01:00
|
|
|
List all the ISO files currently stored in the
|
|
|
|
|
.Pa $vm_dir/.iso
|
|
|
|
|
directory. This is often useful during guest installation, allowing you to copy and paste the ISO
|
|
|
|
|
filename.
|
|
|
|
|
.Pp
|
|
|
|
|
If a
|
|
|
|
|
.Sy url
|
|
|
|
|
is specified, instead of listing ISO files, it attempts to download the given file using
|
|
|
|
|
.Xr fetch 1 .
|
2015-08-07 09:58:24 +01:00
|
|
|
.It Cm image list
|
|
|
|
|
List available images. Any virtual machine can be packaged into an image, which can then be
|
|
|
|
|
used to create additional machines. All images have a globally unique ID (UUID) which is
|
|
|
|
|
used to identify them. The list command shows the UUID, the original machine name, the
|
|
|
|
|
date it was created and a short description of the image.
|
|
|
|
|
.Pp
|
|
|
|
|
Please note that these commands rely on using ZFS featured to package/unpackage the images,
|
|
|
|
|
and as such are only available when using a ZFS dataset as the storage location.
|
|
|
|
|
.It Xo
|
|
|
|
|
.Cm image create
|
|
|
|
|
.Op Fl d Ar description
|
2016-04-26 14:35:10 +01:00
|
|
|
.Op Fl u
|
2015-08-07 09:58:24 +01:00
|
|
|
.Ar name
|
|
|
|
|
.Xc
|
|
|
|
|
Create a new image from the named virtual machine. This will create a compressed copy of
|
|
|
|
|
the original guest dataset, which is stored in the
|
|
|
|
|
.Pa $vm_dir/images
|
|
|
|
|
directory. It also creates a
|
|
|
|
|
.Pa UUID.manifest
|
|
|
|
|
file which contains details about the image.
|
|
|
|
|
.Pp
|
|
|
|
|
Once complete, it will display the UUID which has been assigned to this image.
|
2016-04-26 14:35:10 +01:00
|
|
|
.Pp
|
|
|
|
|
If you do not want the image to be compressed, specify the
|
|
|
|
|
.Sy -u
|
|
|
|
|
option.
|
|
|
|
|
.It Xo
|
|
|
|
|
.Cm image provision
|
|
|
|
|
.Op Fl d Ar datastore
|
|
|
|
|
.Ar uuid Ar new-name
|
|
|
|
|
.Xc
|
2015-08-07 09:58:24 +01:00
|
|
|
Create a new virtual machine, named
|
|
|
|
|
.Pa new-name ,
|
2016-04-26 14:35:10 +01:00
|
|
|
from the specified image UUID. This will be created on the
|
|
|
|
|
.Sy default
|
|
|
|
|
datastore unless specified otherwise.
|
2015-08-07 09:58:24 +01:00
|
|
|
.It Cm image destroy Ar uuid
|
|
|
|
|
Destroy the specified image.
|
2015-06-30 16:54:38 +01:00
|
|
|
.El
|
2015-07-01 11:10:50 +01:00
|
|
|
.\" ============ CONFIGURATION FORMAT ===========
|
|
|
|
|
.Sh CONFIGURATION FORMAT
|
|
|
|
|
Each virtual machine has a configuration file that specifies the hardware configuration. This
|
|
|
|
|
uses a similar format to the
|
|
|
|
|
.Sy rc
|
|
|
|
|
files, making them easy to edit by hand. The settings for each guest are stored in
|
|
|
|
|
.Pa $vm_dir/$vm_name/$vm_name.conf .
|
|
|
|
|
An overview of the available configuration options is listed below.
|
2015-11-02 12:42:38 +00:00
|
|
|
.Bl -tag -width 17n
|
2016-04-05 10:29:47 +01:00
|
|
|
.It loader
|
|
|
|
|
Windows, Linux & FreeBSD guests will use the correct loader by default. For other
|
|
|
|
|
guests that require a loader to be used, this can set to
|
|
|
|
|
.Sy bhyveload
|
|
|
|
|
or
|
|
|
|
|
.Sy grub .
|
|
|
|
|
As an example, NetBSD & OpenBSD can be supported by using the
|
|
|
|
|
.Sy generic
|
|
|
|
|
guest type, and specifying the
|
|
|
|
|
.Sy grub
|
|
|
|
|
loader.
|
2016-04-07 11:25:11 +01:00
|
|
|
.It loader_timeout
|
|
|
|
|
By default the
|
|
|
|
|
.Sy bhyveload
|
|
|
|
|
and
|
|
|
|
|
.Sy grub
|
|
|
|
|
loaders will wait for 3 seconds before booting the default option. If access
|
|
|
|
|
to the grub console is needed, this can be increased to give more time to connect
|
|
|
|
|
to the console. If access to the grub console is not required, it can also be
|
|
|
|
|
reduced to speed up overall boot.
|
2015-10-09 15:42:11 +01:00
|
|
|
.It uefi
|
2016-04-05 10:29:47 +01:00
|
|
|
Set this (any non-empty value) for guests that need UEFI firmware. If set to
|
|
|
|
|
.Sy csm ,
|
|
|
|
|
the BIOS compatibility UEFI-CSM firmware will be used.
|
2015-07-01 11:10:50 +01:00
|
|
|
.It cpu
|
|
|
|
|
A numeric value specifying the number of virtual CPU cores to assign to the guest.
|
|
|
|
|
.It memory
|
|
|
|
|
The amount of memory to assign to the guest. This can be specified in megabytes or
|
|
|
|
|
gigabytes using the
|
|
|
|
|
.Sy M
|
|
|
|
|
and
|
|
|
|
|
.Sy G
|
|
|
|
|
suffixes.
|
2015-10-24 20:27:24 +01:00
|
|
|
.It hostbridge
|
|
|
|
|
This option allows you to specify the type of hostbridge used for the guest hardware.
|
|
|
|
|
Normally you can leave this as default, which is to use a standard bhyve hostbridge.
|
|
|
|
|
.Pp
|
|
|
|
|
There are two other options.
|
|
|
|
|
.Sy amd ,
|
|
|
|
|
which is almost identical to the standard hostbridge, but advertises itself with a
|
|
|
|
|
vendor ID of AMD. There are also some special cases where you may require no
|
|
|
|
|
hostbridge at all, which can be achieved using the
|
|
|
|
|
.Sy none
|
|
|
|
|
value.
|
2015-10-13 13:28:57 +01:00
|
|
|
.It comports
|
|
|
|
|
This option allows you to specify which com ports to create for the guest. The default
|
|
|
|
|
is to create a single
|
|
|
|
|
.Sy com1
|
|
|
|
|
port. Valid values for this are
|
|
|
|
|
.Sy com1
|
|
|
|
|
and
|
|
|
|
|
.Sy com2 .
|
|
|
|
|
You can also connect two com ports by specifying both, separated by a space.
|
2015-10-21 13:14:15 +01:00
|
|
|
.It utctime
|
|
|
|
|
Set this option to
|
|
|
|
|
.Sy yes
|
|
|
|
|
if the guest RTC should keep UTC time.
|
2015-10-22 11:17:16 +01:00
|
|
|
.It debug
|
|
|
|
|
If this is set to
|
|
|
|
|
.Sy yes ,
|
|
|
|
|
all output from the
|
|
|
|
|
.Xr bhyve 8
|
|
|
|
|
process will be written to
|
|
|
|
|
.Sy ${vm_dir}/guest/bhyve.log .
|
|
|
|
|
This is useful for debugging purposes as it allows you to see any error messages
|
|
|
|
|
that are being produced by
|
|
|
|
|
.Xr bhyve 8
|
|
|
|
|
itself.
|
2015-07-01 11:10:50 +01:00
|
|
|
.It network0_type
|
|
|
|
|
The emulation to use for the first network adapter. This option can be unspecified
|
|
|
|
|
if no guest networking is required. The recommended value for this is
|
|
|
|
|
.Sy virtio-net .
|
|
|
|
|
Additional network interfaces can be configured by adding additional
|
|
|
|
|
.Sy networkX_type
|
|
|
|
|
and
|
|
|
|
|
.Sy networkX_switch
|
|
|
|
|
values, replacing
|
|
|
|
|
.Sy X
|
|
|
|
|
with the next available integer.
|
|
|
|
|
.It network0_switch
|
|
|
|
|
The virtual switch to connect interface
|
|
|
|
|
.Sy 0
|
|
|
|
|
to. This should correspond to a virtual switch created using the
|
|
|
|
|
.Pa vm switch create
|
|
|
|
|
subcommand. If the virtual switch is not found, an interface will still be assigned,
|
|
|
|
|
but not connected to any bridge.
|
2015-11-09 11:59:36 +00:00
|
|
|
.Pp
|
|
|
|
|
Note that this field is no longer strictly required. If you are using a custom device
|
|
|
|
|
for the networking that is already configured, you may not need the interface connected
|
|
|
|
|
to a virtual switch. See the
|
|
|
|
|
.Sy network0_device
|
|
|
|
|
configuration option.
|
|
|
|
|
.It network0_device
|
|
|
|
|
Normally vm-bhyve will create a
|
|
|
|
|
.Xr tap 4
|
|
|
|
|
device at run-time for each virtual network interface. This may be an issue in more advanced
|
|
|
|
|
configurations where you want to pre-configure the networking manually in a way unsupported by
|
|
|
|
|
vm-bhyve. This option allows you to instruct vm-bhyve to use an existing network device for
|
|
|
|
|
this virtual interface, rather than creating one dynamically.
|
2015-10-12 16:46:15 +01:00
|
|
|
.It network0_mac
|
|
|
|
|
This option allows you to specify a mac address to use for this interface. If not
|
|
|
|
|
provided,
|
|
|
|
|
.Xr bhyve 8
|
|
|
|
|
will generate a mac address.
|
2015-07-01 11:10:50 +01:00
|
|
|
.It disk0_type
|
|
|
|
|
The emulation type for the first virtual disk. At least one virtual disk is required.
|
|
|
|
|
Valid options for this are currently
|
|
|
|
|
.Sy virtio-blk
|
|
|
|
|
and
|
|
|
|
|
.Sy ahci-hd .
|
|
|
|
|
Additional disks can be added by adding additional
|
|
|
|
|
.Sy diskX_type
|
|
|
|
|
and
|
2015-08-05 14:32:44 +01:00
|
|
|
.Sy diskX_name
|
2015-07-01 11:10:50 +01:00
|
|
|
values, replacing
|
|
|
|
|
.Sy X
|
|
|
|
|
with the next available integer.
|
|
|
|
|
.It disk0_name
|
|
|
|
|
The filename for the first virtual disk. The first disk is created automatically when
|
2015-10-23 13:24:06 +01:00
|
|
|
provisioning a new virtual machine. If additional disks are added manually, the image will need
|
|
|
|
|
to be created, usually done using the
|
2015-08-13 22:03:01 +01:00
|
|
|
.Xr truncate 1
|
|
|
|
|
or
|
|
|
|
|
.Xr zfs 8
|
2015-10-23 13:24:06 +01:00
|
|
|
commands. Alternatively, you can use the
|
|
|
|
|
.Pa vm add
|
|
|
|
|
command, which will create the disk image for you.
|
|
|
|
|
.Pp
|
|
|
|
|
Normally disk images or zvols are stored directly inside the guest. To use a disk
|
|
|
|
|
image that is stored anywhere else, you can specify the full path in this option,
|
|
|
|
|
and configure the device as
|
|
|
|
|
.Sy custom
|
|
|
|
|
.It disk0_dev
|
|
|
|
|
The type of device to use for the disk. If not specified, this will default to
|
|
|
|
|
.Sy file ,
|
|
|
|
|
and a sparse file, located in the guest directory, will be used as the disk image.
|
|
|
|
|
Other options include
|
|
|
|
|
.Sy zvol
|
|
|
|
|
&
|
|
|
|
|
.Sy sparse-zvol ,
|
|
|
|
|
which will used a ZVOL as the disk image, created directly under the guest dataset.
|
|
|
|
|
Alternatively you can specify
|
|
|
|
|
.Sy custom ,
|
|
|
|
|
in which case
|
|
|
|
|
.Pa diskX_name
|
|
|
|
|
should be the full path to the image file or device.
|
2015-11-01 10:43:00 +00:00
|
|
|
.It disk0_opts
|
|
|
|
|
Any additional options to use for this disk device. Multiple options can be specified,
|
|
|
|
|
separated by a comma. Please see the
|
|
|
|
|
.Xr bhyve 8
|
|
|
|
|
man page for more details on supported options.
|
2016-04-14 16:24:47 +01:00
|
|
|
.It disk0_size
|
|
|
|
|
This setting can be specified in templates to set the size of this disk.
|
|
|
|
|
When creating a guest,
|
|
|
|
|
.Nm
|
|
|
|
|
will default to creating a 20G image for each disk, unless an alternative size is
|
|
|
|
|
specified using this option. The size of the first disk can be overridden using
|
|
|
|
|
the
|
|
|
|
|
.Sy -s
|
|
|
|
|
command line option.
|
|
|
|
|
.Pp
|
|
|
|
|
NOTE: This setting is only supported in templates. It has no function in
|
|
|
|
|
real guest configuration, and is not copied over when a new machine is provisioned
|
2015-10-14 12:35:13 +01:00
|
|
|
.It uuid
|
|
|
|
|
This option allows you to specify a fixed UUID for the guests SMBIOS. Normally, the
|
|
|
|
|
UUID is generated by
|
|
|
|
|
.Xr bhyve 8
|
|
|
|
|
based on the hostname and guest name. Because this may change if guests are moved
|
|
|
|
|
between systems, the
|
|
|
|
|
.Pa vm create
|
|
|
|
|
command automatically assigns a UUID to all newly created guests.
|
2016-04-05 10:29:47 +01:00
|
|
|
.It grub_installX
|
|
|
|
|
This option allows you to specify grub commands needed to boot the install media for
|
|
|
|
|
this guest.
|
|
|
|
|
.Sy X
|
|
|
|
|
should be an integer starting at 0, with additional grub commands using the next numbers
|
|
|
|
|
in sequence.
|
|
|
|
|
.Pp
|
|
|
|
|
If no install commands are specified,
|
|
|
|
|
.Sy grub-bhyve
|
|
|
|
|
will be run on the guests console, so you can use the standard
|
|
|
|
|
.Pa vm console
|
|
|
|
|
command to access the bootloader if needed.
|
|
|
|
|
.It grub_run_partition
|
|
|
|
|
Specify the partition that grub should look in for the grub configuration files.
|
2016-04-09 13:37:39 +01:00
|
|
|
By default, vm-bhyve will specify partition 1, which is correct in most standard cases.
|
2016-04-05 10:29:47 +01:00
|
|
|
.It grub_runX
|
|
|
|
|
The option allows you to specify the grub commands needed to boot the guest from disk.
|
|
|
|
|
.Sy X
|
|
|
|
|
should be an integer starting at 0, with additional grub commands using the next numbers
|
|
|
|
|
in sequence.
|
|
|
|
|
.Pp
|
|
|
|
|
If no boot commands are specified,
|
|
|
|
|
.Sy grub-bhyve
|
|
|
|
|
will be run on the guests console, so you can use the standard
|
|
|
|
|
.Pa vm console
|
|
|
|
|
command to access the bootloader if needed.
|
|
|
|
|
.Pp
|
|
|
|
|
The sample templates contain examples of how the grub configuration variables can be used.
|
2016-04-05 14:20:08 +01:00
|
|
|
.It grub_run_dir
|
|
|
|
|
By default
|
|
|
|
|
.Sy grub-bhyve
|
|
|
|
|
will look in the dircetory
|
|
|
|
|
.Sy /boot/grub
|
|
|
|
|
for the grub configuration file. This option allows you to specify an alternate path
|
|
|
|
|
to use when starting a guest.
|
|
|
|
|
.It grub_run_file
|
|
|
|
|
Allows you to specify the grub configuration file that
|
|
|
|
|
.Sy grub-bhyve
|
|
|
|
|
will look for inside the guest, rather than the
|
|
|
|
|
default of
|
|
|
|
|
.Sy grub.cfg .
|
2015-08-12 14:46:37 +01:00
|
|
|
.It passthruX
|
|
|
|
|
Specify a device to pass through to the guest. You will need to reserve the device first
|
|
|
|
|
so that is it claimed by the ppt driver on boot.
|
|
|
|
|
.Pp
|
|
|
|
|
Once the device is successfully reserved, you can add it to the guest by adding
|
|
|
|
|
.Sy passthruX="1/2/3"
|
|
|
|
|
to the guest configuration file, where
|
|
|
|
|
.Sy X
|
|
|
|
|
is an integer starting at 0, and
|
|
|
|
|
.Sy 1/2/3
|
|
|
|
|
is the Base/Slot/Function of the device. If you are passing through multiple functions on
|
|
|
|
|
the same device, make sure they are specified together in the configuration file in the
|
|
|
|
|
same sequence as the original device.
|
|
|
|
|
.Pp
|
2015-08-13 22:03:01 +01:00
|
|
|
Please see https://wiki.freebsd.org/bhyve/pci_passthru for more details on how this works.
|
2015-11-01 10:43:00 +00:00
|
|
|
.It virt_random
|
|
|
|
|
Set this option to
|
|
|
|
|
.Sy yes
|
|
|
|
|
if you want to create a
|
|
|
|
|
.Sy virtio-rnd
|
|
|
|
|
device for this guest.
|
2016-05-27 12:18:00 +01:00
|
|
|
.It graphics
|
|
|
|
|
If set to you, a frame buffer is added to the guest. This provides a graphical
|
|
|
|
|
console that is accessible using VNC. By default the console is 800x600, and will
|
|
|
|
|
listen on
|
|
|
|
|
.Sy 0.0.0.0:5900 .
|
|
|
|
|
If port 5900 is not available, the next available port will be used. The active address and
|
|
|
|
|
port can be viewed in
|
|
|
|
|
.Sy vm list
|
|
|
|
|
and
|
|
|
|
|
.Sy vm info
|
|
|
|
|
output.
|
|
|
|
|
.It graphics_port
|
|
|
|
|
This option allows you to specific a fixed port that the VNC service should listen on.
|
|
|
|
|
Please remember that all guests should ideally use a unique port to avoid any problems.
|
|
|
|
|
.It graphics_listen
|
|
|
|
|
By default the graphical VNC console will listen on
|
|
|
|
|
.Sy 0.0.0.0 ,
|
|
|
|
|
so is accessible by connecting to any IP address assigned to the bhyve host. Use this
|
|
|
|
|
option to specify a specific IP address that the VNC service should bind to.
|
|
|
|
|
.It graphics_res
|
|
|
|
|
Specify the resolution of the graphical console in
|
|
|
|
|
.Pa WxH
|
|
|
|
|
format. Please note that only a certain range of resolutions are currently supported.
|
|
|
|
|
Please set
|
|
|
|
|
.Pa config.sample
|
|
|
|
|
for a full up-to-date list.
|
2016-05-27 13:49:49 +01:00
|
|
|
.It graphics_wait
|
|
|
|
|
Set this to yes in order to make guest boot wait for the VNC console
|
|
|
|
|
to be opened. This can help when installing operating systems
|
|
|
|
|
that require immediate keyboard input (such as a timed 'enter setup'
|
|
|
|
|
screen).
|
|
|
|
|
.It xhci_mouse
|
2016-05-27 12:18:00 +01:00
|
|
|
Set this option to
|
|
|
|
|
.Sy yes
|
|
|
|
|
in order to provide an XHCI mouse device to the guest. This tracks much better than
|
|
|
|
|
the default PS2 mouse in VNC settings, although this mouse may not supported by older
|
|
|
|
|
guests.
|
2015-11-02 12:42:38 +00:00
|
|
|
.It zfs_dataset_opts
|
2016-05-27 12:18:00 +01:00
|
|
|
This allows you to specify one or more ZFS properties to set on the dataset when a
|
2015-11-02 12:42:38 +00:00
|
|
|
guest is created. Because properties are assigned as the dataset is created, this option
|
|
|
|
|
is most useful when specified inside a template. As a guest is created, all properties
|
|
|
|
|
listed in this option will be applied to the guest dataset.
|
|
|
|
|
.Pp
|
|
|
|
|
Multiple properties can be specified, separated by a space. Please note that spaces
|
|
|
|
|
are not currently supported in the property values.
|
|
|
|
|
.It zfs_zvol_opts
|
|
|
|
|
Allows you to specify ZFS properties that should be assigned to any ZVOLs that are
|
|
|
|
|
created for a guest. As with
|
|
|
|
|
.Pa zfs_dataset_opts ,
|
|
|
|
|
this makes most sense when entered into a template, as the properties can be assigned
|
|
|
|
|
while a guest is being created. Some ZVOL options, such as
|
|
|
|
|
.Pa volblocksize
|
|
|
|
|
can only be set at creation time.
|
|
|
|
|
.Pp
|
|
|
|
|
Multiple properties can be specified, separated by a space. For example, the following
|
|
|
|
|
will configure the ZVOL block size to 128k, and turn compression off.
|
|
|
|
|
.Pp
|
|
|
|
|
zfs_zvol_opts="volblocksize=128k compress=off"
|
2016-04-07 16:05:40 +01:00
|
|
|
.It limit_pcpu
|
|
|
|
|
Limit the bhyve process to the specified cpu percentage.
|
|
|
|
|
.Pp
|
|
|
|
|
Please note this, as with all
|
|
|
|
|
.Sy limit
|
|
|
|
|
settings, requires
|
|
|
|
|
.Xr rctl 8
|
|
|
|
|
to be enabled in your kernel.
|
|
|
|
|
.It limit_rbps
|
|
|
|
|
Limit guest disk read throughput to the specified bits per second.
|
|
|
|
|
.It limit_wbps
|
|
|
|
|
Limit guest disk write throughput to the specified bits per second.
|
|
|
|
|
.It limit_riops
|
|
|
|
|
Limit guest disk read iops to the specified number of operations per second.
|
|
|
|
|
.It limit_wiops
|
|
|
|
|
Limit guest disk write iops to the specified number of operations per second.
|
2015-07-01 11:10:50 +01:00
|
|
|
.El
|
2015-06-30 16:54:38 +01:00
|
|
|
.\" ============ SEE ALSO =============
|
|
|
|
|
.Sh SEE ALSO
|
|
|
|
|
.Xr bhyve 8 ,
|
|
|
|
|
.Xr bhyveload 8 ,
|
|
|
|
|
.Xr tap 4 ,
|
|
|
|
|
.Xr bridge 4 ,
|
|
|
|
|
.Xr vlan 4 ,
|
|
|
|
|
.Xr nmdm 4 ,
|
|
|
|
|
.Xr cu 1 ,
|
2015-08-14 09:27:42 +01:00
|
|
|
.Xr fetch 1 ,
|
|
|
|
|
.Xr truncate 1 ,
|
2016-04-07 16:05:40 +01:00
|
|
|
.Xr zfs 8 ,
|
2016-04-08 09:14:47 +01:00
|
|
|
.Xr rctl 8
|
2015-06-30 16:54:38 +01:00
|
|
|
.\" ============ BUGS =============
|
|
|
|
|
.Sh BUGS
|
|
|
|
|
Please report all bugs/issues/feature requests to the github project at
|
|
|
|
|
https://github.com/churchers/vm-bhyve
|
2015-07-01 11:10:50 +01:00
|
|
|
.\" ============ AUTHOR =============
|
|
|
|
|
.Sh AUTHOR
|
2015-06-30 16:54:38 +01:00
|
|
|
.An Matt Churchyard Aq Mt churchers@gmail.com
|