bhyveload
— load a
FreeBSD guest inside a bhyve virtual
machine
bhyveload |
[-C ] [-S ]
[-c cons-dev]
[-d disk-path]
[-e name=value]
[-h host-path]
[-l os-loader]
[-m
memsize[K|k|M|m|G|g|T|t]]
vmname |
bhyveload
is used to load a
FreeBSD guest inside a
bhyve(4)
virtual machine.
bhyveload
is based on
loader(8)
and will present an interface identical to the
FreeBSD loader on the user's terminal. This behavior
can be changed by specifying a different OS loader.
The virtual machine is identified as vmname
and will be created if it does not already exist.
The following options are available:
-c
cons-dev
- cons-dev is a
tty(4)
device to use for
bhyveload
terminal I/O.
The text string "stdio" is also accepted and selects
the use of unbuffered standard I/O. This is the default value.
-d
disk-path
- The disk-path is the pathname of the guest's boot
disk image.
-e
name=value
- Set the FreeBSD loader environment variable
name to value.
The option may be used more than once to set more than one
environment variable.
-h
host-path
- The host-path is the directory at the top of the
guest's boot filesystem.
-l
os-loader
- Specify a different OS loader. By default
bhyveload
will use
/boot/userboot.so, which presents a standard
FreeBSD loader.
-m
memsize[K|k|M|m|G|g|T|t]
- memsize is the amount of memory allocated to the
guest.
The memsize argument may be suffixed
with one of K
, M
,
G
or T
(either upper or
lower case) to indicate a multiple of Kilobytes, Megabytes, Gigabytes or
Terabytes respectively.
memsize defaults to 256M.
-C
- Include guest memory in the core file when
bhyveload
dumps core. This is intended for
debugging an OS loader as it allows inspection of the guest memory.
-S
- Wire guest memory.
To create a virtual machine named freebsd-vm
that boots off the ISO image /freebsd/release.iso
and has 1GB memory allocated to it:
bhyveload -m 1G -d
/freebsd/release.iso freebsd-vm
To create a virtual machine named test-vm
with 256MB of memory allocated, the guest root filesystem under the host
directory /user/images/test and terminal I/O sent to
the
nmdm(4)
device /dev/nmdm1B
bhyveload -m 256MB -h
/usr/images/test -c /dev/nmdm1B test-vm
bhyveload
first appeared in
FreeBSD 10.0, and was developed at NetApp Inc.
bhyveload
can only load
FreeBSD as a guest.
Note that in some configurations,
bhyveload
will execute guest loader scripts in the
context of the host machine. Note, however, that
bhyveload
will enter a
capsicum(4)
sandbox before it loads the os-loader or executes any
loader scripts. On the host filesystem, the sandbox will only have access to
the path specified by the -h
flag, the contents of
the /boot directory if -l
was not specified, and the chosen console device.
Note that the guest loader scripts are already subject to some
limitations that are not relaxed simply because we are running in userland.
For instance, any I/O on the loader's “host” device that can
be done in loader scripts is limited to the interface that
bhyveload
provides, which itself will restrict paths
that can be touched to those within a specified -h
directory, if any. Access to files within /boot
inside the sandbox would require arbitrary code execution in userboot, and
userboot is usually provided by the host machine rather than anything that
is a part of the guest image. All access to the -h
directory as well as /boot is strictly read-only in
the sandbox.