xref: /illumos-gate/usr/src/man/man8/bhyve.8 (revision a8f5dec3ef73cc0bafb200f4f554dc1a6ac0a12f)
1.\" Copyright (c) 2013 Peter Grehan
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\"
13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23.\" SUCH DAMAGE.
24.\"
25.\" Portions Copyright 2022 OmniOS Community Edition (OmniOSce) Association.
26.\"
27.Dd May 5, 2023
28.Dt BHYVE 8
29.Os
30.Sh NAME
31.Nm bhyve
32.Nd "run a guest operating system inside a virtual machine"
33.Sh SYNOPSIS
34.Nm
35.Op Fl aCDdeHhPSuWwxY
36.Oo
37.Sm off
38.Fl c\~
39.Oo
40.Op Cm cpus=
41.Ar numcpus
42.Oc
43.Op Cm ,sockets= Ar n
44.Op Cm ,cores= Ar n
45.Op Cm ,threads= Ar n
46.Oc
47.Sm on
48.Oo Fl f
49.Sm off
50.Ar name Cm \&,
51.Oo
52.Cm string | file
53.Oc
54.Cm \&= Ar data
55.Sm on
56.Oc
57.Oo
58.Sm off
59.Fl G\~
60.Oo Ar w Oc
61.Oo Ar bind_address Cm \&: Oc
62.Ar port
63.Oc
64.Sm on
65.Oo Fl B
66.Sm off
67.Ar type Ns \&,
68.Op Ar key Ns = Ns Ar value
69.Oo \&, Ns Ar key Ns = Ns Ar value Ns Oc \&...
70.Oc
71.Sm on
72.Op Fl k Ar config_file
73.Op Fl K Ar layout
74.Oo Fl l
75.Sm off
76.Ar lpcdev Op Cm \&, Ar conf
77.Sm on
78.Oc
79.Sm off
80.Oo Fl m\~
81.Ar memsize
82.Oo
83.Cm K | k | M | m | G | g | T | t
84.Oc
85.Sm on
86.Oc
87.Op Fl o Ar var Ns Cm = Ns Ar value
88.Op Fl r Ar file
89.Sm off
90.Oo Fl s\~
91.Ar slot Cm \&, Ar emulation Op Cm \&, Ar conf
92.Sm on
93.Oc
94.Op Fl U Ar uuid
95.Ar vmname
96.Nm
97.Fl l Cm help
98.Nm
99.Fl s Cm help
100.Sh DESCRIPTION
101.Nm
102is a hypervisor that runs guest operating systems inside a
103virtual machine.
104.Pp
105Parameters such as the number of virtual CPUs, amount of guest memory, and
106I/O connectivity can be specified with command-line parameters.
107.Pp
108.Nm
109runs until the guest operating system reboots or an unhandled hypervisor
110exit is detected.
111.Sh OPTIONS
112.Bl -tag -width 10n
113.It Fl a
114The guest's local APIC is configured in xAPIC mode.
115The xAPIC mode is the default setting so this option is redundant.
116It will be deprecated in a future version.
117.It Xo
118.Fl B
119.Sm off
120.Ar type Ns \&,
121.Op Ar key Ns = Ns Ar value
122.Oo \&, Ns Ar key Ns = Ns Ar value Ns Oc \&...
123.Sm on
124.Xc
125Configure smbios data.
126.Ar type
127must be set to one of
128.Cm 0 , 1 , 2
129or
130.Cm 3 .
131Supported keys for each type are:
132.Bl -tag -width XXX -offset XXX
133.It Cm 0
134.Cm vendor , version , release_date .
135.It Cm 1
136.Cm manufacturer ,
137.Cm product_name Pq or Cm product ,
138.Cm version ,
139.Cm serial_number Pq or Cm serial ,
140.Cm sku ,
141.Cm family_name Pq or Cm family ,
142.Cm uuid .
143.It Cm 2
144.Cm manufacturer , product_name , version , serial_number , asset_tag ,
145.Cm location
146.It Ic 3
147.Cm manufacturer , version , serial_number , asset_tag, sku .
148.El
149.It Xo Fl c
150.Sm off
151.Op Oo Cm cpus= Oc Ar numcpus
152.Op Cm ,sockets= Ar n
153.Op Cm ,cores= Ar n
154.Op Cm ,threads= Ar n
155.Xc
156.Sm on
157Number of guest virtual CPUs
158and/or the CPU topology.
159The default value for each of
160.Ar numcpus ,
161.Ar sockets ,
162.Ar cores ,
163and
164.Ar threads
165is 1.
166The current maximum number of guest virtual CPUs is 32.
167If
168.Ar numcpus
169is not specified then it will be calculated from the other arguments.
170The topology must be consistent in that the
171.Ar numcpus
172must equal the product of
173.Ar sockets ,
174.Ar cores ,
175and
176.Ar threads .
177If a
178.Ar setting
179is specified more than once the last one has precedence.
180.It Fl C
181Include guest memory in core file.
182.It Fl D
183Destroy the VM on guest initiated power-off.
184.It Fl d
185Suspend CPUs at boot.
186.It Fl e
187Force
188.Nm
189to exit when a guest issues an access to an I/O port that is not emulated.
190This is intended for debug purposes.
191.It Fl f Ar name Ns Cm \&, Ns Oo Cm string Ns | Ns Cm file Ns Oc Ns Cm \&= Ns Ar data
192Add a fw_cfg file
193.Ar name
194to the fw_cfg interface.
195If a
196.Cm string
197is specified, the fw_cfg file contains the string as data.
198If a
199.Cm file
200is specified, bhyve reads the file and adds the file content as fw_cfg data.
201.It Fl G Xo
202.Sm off
203.Oo Ar w Oc
204.Oo Ar bind_address Cm \&: Oc
205.Ar port
206.Sm on
207.Xc
208Start a debug server that uses the GDB protocol to export guest state to a
209debugger.
210An IPv4 TCP socket will be bound to the supplied
211.Ar bind_address
212and
213.Ar port
214to listen for debugger connections.
215Only a single debugger may be attached to the debug server at a time.
216If the option begins with
217.Sq w ,
218.Nm
219will pause execution at the first instruction waiting for a debugger to attach.
220.It Fl H
221Yield the virtual CPU thread when a HLT instruction is detected.
222If this option is not specified, virtual CPUs will use 100% of a host CPU.
223.It Fl h
224Print help message and exit.
225.It Fl k Ar config_file
226Set configuration variables from a simple, key-value config file.
227Each line of the config file is expected to consist of a config variable
228name, an equals sign
229.Pq Sq = ,
230and a value.
231No spaces are permitted between the variable name, equals sign, or
232value.
233Blank lines and lines starting with
234.Sq #
235are ignored.
236See
237.Xr bhyve_config 5
238for more details.
239.It Fl K Ar layout
240Specify the keyboard layout.
241The value that can be specified sets the file name in
242.Pa /usr/share/bhyve/kbdlayout .
243This specification only works when loaded with UEFI mode for VNC.
244When using a VNC client that supports QEMU Extended Key Event Message
245.Pq e.g. TigerVNC ,
246this option isn't needed.
247When using a VNC client that doesn't support QEMU Extended Key Event Message
248.Pq e.g. tightVNC ,
249the layout defaults to the US keyboard unless specified otherwise.
250.It Fl l Cm help
251Print a list of supported LPC devices.
252.It Fl l Ar lpcdev Ns Op \&, Ns Ar conf
253Allow devices behind the LPC PCI-ISA bridge to be configured.
254The only supported devices are the TTY-class devices
255.Cm com1 , com2 , com3
256and
257.Cm com4 ,
258the TPM module
259.Cm tpm ,
260the boot ROM device
261.Cm bootrom ,
262the
263.Cm fwcfg
264type and the debug/test device
265.Cm pc-testdev .
266.Pp
267The possible values for the
268.Ar conf
269argument are listed in the
270.Fl s
271flag description.
272.It Xo
273.Fl m Ar memsize Ns Oo
274.Sm off
275.Cm K | k | M | m | G | g | T | t
276.Sm on
277.Oc
278.Xc
279Set the guest physical memory size.
280The size argument may be suffixed with one of
281.Cm K , M , G
282or
283.Cm T
284.Pq either upper or lower case
285to indicate a multiple of kibibytes, mebibytes, gibibytes, or tebibytes.
286If no suffix is given, the value is assumed to be in mebibytes.
287.Pp
288The default is 256MiB.
289.It Fl o Ar var Ns Cm = Ns Ar value
290Set the configuration variable
291.Ar var
292to
293.Ar value .
294.It Fl P
295Force the guest virtual CPU to exit when a PAUSE instruction is detected.
296.It Fl S
297Wire guest memory.
298.It Fl s Cm help
299Print a list of supported PCI devices.
300.It Fl s Ar slot Ns Cm \&, Ns Ar emulation Ns Op Cm \&, Ns Ar conf
301Configure a virtual PCI slot and function.
302.Pp
303.Nm
304provides PCI bus emulation and virtual devices that can be attached to
305slots on the bus.
306There are 32 available slots, with the option of providing up to 8 functions
307per slot.
308.Pp
309The
310.Ar slot
311can be specified in one of the following formats:
312.Pp
313.Bl -bullet -compact
314.It
315.Ar pcislot
316.It
317.Sm off
318.Ar pcislot Cm \&: Ar function
319.Sm on
320.It
321.Sm off
322.Ar bus Cm \&: Ar pcislot Cm \&: Ar function
323.Sm on
324.El
325.Pp
326The
327.Ar pcislot
328value is 0 to 31.
329The optional
330.Ar function
331value is 0 to 7.
332The optional
333.Ar bus
334value is 0 to 255.
335If not specified, the
336.Ar function
337value defaults to 0.
338If not specified, the
339.Ar bus
340value defaults to 0.
341.Pp
342The
343.Ar emulation
344argument can be one of the following:
345.Bl -tag -width "amd_hostbridge"
346.It Cm hostbridge
347A simple host bridge.
348This is usually configured at slot 0, and is required by most guest
349operating systems.
350.It Cm amd_hostbridge
351Emulation identical to
352.Cm hostbridge
353but using a PCI vendor ID of AMD.
354.It Cm passthru
355PCI pass-through device.
356.It Cm virtio-net-viona
357Accelerated Virtio network interface.
358.It Cm virtio-net
359Legacy Virtio network interface.
360.It Cm virtio-blk
361Virtio block storage interface.
362.It Cm virtio-9p
363Virtio 9p (VirtFS) interface.
364.It Cm virtio-rnd
365Virtio random number generator interface.
366.It Cm virtio-console
367Virtio console interface, which exposes multiple ports
368to the guest in the form of simple char devices for simple IO
369between the guest and host userspaces.
370.It Cm ahci
371AHCI controller attached to arbitrary devices.
372.It Cm ahci-cd
373AHCI controller attached to an ATAPI CD/DVD.
374.It Cm ahci-hd
375AHCI controller attached to a SATA hard drive.
376.It Cm e1000
377Intel e82545 network interface.
378.It Cm uart
379PCI 16550 serial device.
380.It Cm lpc
381LPC PCI-ISA bridge with COM1, COM2, COM3, and COM4 16550 serial ports,
382a boot ROM, and, optionally, a fwcfg type and the debug/test device.
383The LPC bridge emulation can only be configured on bus 0.
384.It Cm fbuf
385Raw framebuffer device attached to VNC server.
386.It Cm xhci
387eXtensible Host Controller Interface (xHCI) USB controller.
388.It Cm nvme
389NVM Express (NVMe) controller.
390.El
391.Pp
392The optional parameter
393.Ar conf
394describes the backend for device emulations.
395If
396.Ar conf
397is not specified, the device emulation has no backend and can be
398considered unconnected.
399.Pp
400.Sy Host Bridge Devices
401.Bl -tag -width 10n
402.It Cm model Ns = Ns Ar model
403Specify a hostbridge model to emulate.
404Valid model strings, and their associated vendor and device IDs are:
405.Sy amd Pq 0x1022/0x7432 ,
406.Sy netapp Pq 0x1275/0x1275 ,
407.Sy i440fx Pq 0x8086/0x1237
408and
409.Sy q35 Pq 0x8086/0x29b0 .
410The default value of
411.Ar model
412is
413.Cm netapp .
414.It Cm vendor Ns = Ns Ar vendor
415PCI vendor ID.
416.It Cm devid Ns = Ns Ar devid
417PCI device ID.
418.El
419.Pp
420Providing extra configuration parameters for a host bridge is optional, but if
421parameters are provided then either
422.Va model
423by itself, or both of
424.Va vendor
425and
426.Va devid
427must be specified.
428.Pp
429.Sy Accelerated Virtio Network Backends :
430.Bl -tag -width 10n
431.It Oo Cm vnic Ns = Oc Ns Ar vnic Ns Oo , Ns Cm feature_mask Ns = Ns Ar mask Oc
432.Pp
433.Ar vnic
434is the name of a configured virtual NIC on the system.
435.Ar mask
436is applied to the virtio feature flags which are advertised to the guest.
437Bits set in the
438.Ar mask
439value are removed from the advertised features.
440.El
441.Pp
442.Sy Other Network Backends :
443.Bl -tag -width 10n
444.It Oo Cm vnic Ns = Oc Ns Ar vnic Ns Oo , Ns Ar network-backend-options Oc
445.Pp
446.Ar vnic
447is the name of a configured virtual NIC on the system.
448.El
449.Pp
450The
451.Ar network-backend-options
452are:
453.Bl -tag -width 8n
454.It Cm promiscphys
455Enable promiscuous mode at the physical level (default: false)
456.It Cm promiscsap
457Enable promiscuous mode at the SAP level (default: true)
458.It Cm promiscmulti
459Enable promiscuous mode for all multicast addresses (default: true)
460.It Cm promiscrxonly
461The selected promiscuous modes are only enabled for received traffic
462(default: true).
463.El
464.Pp
465.Sy Block storage device backends :
466.Sm off
467.Bl -bullet
468.It
469.Pa /filename Op Cm \&, Ar block-device-options
470.It
471.Pa /dev/xxx Op Cm \&, Ar block-device-options
472.El
473.Sm on
474.Pp
475The
476.Ar block-device-options
477are:
478.Bl -tag -width 10n
479.It Cm nocache
480Open the file with
481.Dv O_DIRECT .
482.It Cm direct
483Open the file using
484.Dv O_SYNC .
485.It Cm ro
486Force the file to be opened read-only.
487.It Cm sectorsize= Ns Ar logical Ns Oo Cm \&/ Ns Ar physical Oc
488Specify the logical and physical sector sizes of the emulated disk.
489The physical sector size is optional and is equal to the logical sector size
490if not explicitly specified.
491.It Cm nodelete
492Disable emulation of guest trim requests via
493.Dv DIOCGDELETE
494requests.
495.It Cm bootindex= Ns Ar index
496Add the device to the bootorder at
497.Ar index .
498A fwcfg file is used to specify the bootorder.
499The guest firmware may ignore or not have support for this fwcfg file.
500In that case, this feature will not work as expected.
501.El
502.Pp
503.Sy 9P device backends :
504.Sm off
505.Bl -bullet
506.It
507.Ar sharename Cm = Ar /path/to/share Op Cm \&, Ar 9p-device-options
508.El
509.Sm on
510.Pp
511The
512.Ar 9p-device-options
513are:
514.Bl -tag -width 10n
515.It Cm ro
516Expose the share in read-only mode.
517.El
518.Pp
519.Sy TTY device backends :
520.Bl -tag -width 10n
521.It Cm stdio
522Connect the serial port to the standard input and output of
523the
524.Nm
525process.
526.It Pa /dev/xxx
527Use the host TTY device for serial port I/O.
528.El
529.Pp
530.Sy TPM device backends :
531.Bl -tag -width 10n
532.It Ar type Ns \&, Ns Ar path Ns Op Cm \&, Ns Ar tpm-device-options
533Emulate a TPM device.
534.El
535.Pp
536The
537.Ar tpm-device-options
538are:
539.Bl -tag -width 10n
540.It Cm version= Ns Ar version
541Version of the TPM device according to the TCG specification.
542Defaults to
543.Cm 2.0
544.El
545.Pp
546.Sy Boot ROM device backends :
547.Bl -tag -width 10n
548.It Pa romfile Ns Op Cm \&, Ns Ar varfile
549Map
550.Ar romfile
551in the guest address space reserved for boot firmware.
552If
553.Ar varfile
554is provided, that file is also mapped in the boot firmware guest
555address space, and any modifications the guest makes will be saved
556to that file.
557.El
558.Pp
559Fwcfg types:
560.Bl -tag -width 10n
561.It Ar fwcfg
562The fwcfg interface is used to pass information such as the CPU count or ACPI
563ables to the guest firmware.
564Supported values are
565.Ql bhyve
566and
567.Ql qemu .
568Due to backward compatibility reasons,
569.Ql bhyve
570is the default option.
571When
572.Ql bhyve
573is used, bhyve's fwctl interface is used.
574It currently reports only the CPU count to the guest firmware.
575The
576.Ql qemu
577option uses QEMU's fwcfg interface.
578This interface is widely used and allows user-defined information to be passed
579o the guest.
580It is used for passing the CPU count, ACPI tables, a boot order and many other
581things to the guest.
582Some operating systems such as Fedora CoreOS can be configured by qemu's fwcfg
583interface as well.
584.El
585.Pp
586.Sy Pass-through device backends :
587.Bl -tag -width 10n
588.It Pa /dev/ppt Ns Ar N
589Connect to a PCI device on the host identified by the specified path.
590.It Cm rom= Ns Ar romfile
591Add
592.Ar romfile
593as option ROM to the PCI device.
594The ROM will be loaded by firmware and should be capable of initialising the
595device.
596.It Cm bootindex= Ns Ar index
597Add the device to the bootorder at
598.Ar index .
599A fwcfg file is used to specify the bootorder.
600The guest firmware may ignore or not have support for this fwcfg file.
601In that case, this feature will not work as expected.
602.El
603.Pp
604Guest memory must be wired using the
605.Fl S
606option when a pass-through device is configured.
607.Pp
608The host device must have been previously attached to the
609.Sy ppt
610driver.
611.Pp
612.Sy Virtio console device backends :
613.Bl -bullet
614.Sm off
615.It
616.Cm port1= Ns Ar /path/to/port1.sock Ns
617.Op Cm ,port Ns Ar N Cm \&= Ns Ar /path/to/port2.sock No \~ Ar ...
618.Sm on
619.El
620.Pp
621A maximum of 16 ports per device can be created.
622Every port is named and corresponds to a UNIX domain socket created by
623.Nm .
624.Nm
625accepts at most one connection per port at a time.
626.Pp
627Limitations:
628.Bl -bullet
629.It
630Due to lack of destructors in
631.Nm ,
632sockets on the filesystem must be cleaned up manually after
633.Nm
634exits.
635.It
636There is no way to use the
637.Dq console port
638feature, nor the console port resize at present.
639.It
640Emergency write is advertised, but no-op at present.
641.El
642.Pp
643.Sy TPM devices :
644.Bl -tag -width 10n
645.It Ns Ar type
646Specifies the type of the TPM device.
647.Pp
648Supported types:
649.Bl -tag -width 10n
650.It Cm passthru
651.El
652.It Cm version= Ns Ar version
653The
654.Ar version
655of the emulated TPM device according to the TCG specification.
656.Pp
657Supported versions:
658.Bl -tag -width 10n
659.It Cm 2.0
660.El
661.El
662.Pp
663.Sy Framebuffer device backends :
664.Bl -bullet
665.Sm off
666.It
667.Op Cm rfb= Ar ip-and-port
668.Op Cm ,w= Ar width
669.Op Cm ,h= Ar height
670.Op Cm ,vga= Ar vgaconf
671.Op Cm ,wait
672.Op Cm ,password= Ar password
673.Sm on
674.El
675.Pp
676Configuration options are defined as follows:
677.Bl -tag -width 10n
678.It Cm rfb= Ns Ar ip-and-port Pq or Cm tcp= Ns Ar ip-and-port
679An IP address and a port VNC should listen on.
680There are two formats:
681.Pp
682.Bl -bullet -compact
683.It
684.Sm off
685.Op Ar IPv4 Cm \&:
686.Ar port
687.Sm on
688.It
689.Sm off
690.Cm \&[ Ar IPv6 Cm \&] Cm \&: Ar port
691.Sm on
692.El
693.Pp
694The default is to listen on localhost IPv4 address and default VNC port 5900.
695An IPv6 address must be enclosed in square brackets.
696.It Cm unix Ns = Ns Ar path
697The path to a UNIX socket which will be created and where
698.Nm
699will accept VNC connections.
700.It Cm w= Ns Ar width No and Cm h= Ns Ar height
701A display resolution, width and height, respectively.
702If not specified, a default resolution of 1024x768 pixels will be used.
703Minimal supported resolution is 640x480 pixels,
704and maximum is 1920x1200 pixels.
705.It Cm vga= Ns Ar vgaconf
706Possible values for this option are
707.Cm io
708(default),
709.Cm on
710, and
711.Cm off .
712PCI graphics cards have a dual personality in that they are
713standard PCI devices with BAR addressing, but may also
714implicitly decode legacy VGA I/O space
715.Pq Ad 0x3c0-3df
716and memory space
717.Pq 64KB at Ad 0xA0000 .
718The default
719.Cm io
720option should be used for guests that attempt to issue BIOS calls which result
721in I/O port queries, and fail to boot if I/O decode is disabled.
722.Pp
723The
724.Cm on
725option should be used along with the CSM BIOS capability in UEFI
726to boot traditional BIOS guests that require the legacy VGA I/O and
727memory regions to be available.
728.Pp
729The
730.Cm off
731option should be used for the UEFI guests that assume that
732VGA adapter is present if they detect the I/O ports.
733An example of such a guest is
734.Ox
735in UEFI mode.
736.It Cm wait
737Instruct
738.Nm
739to only boot upon the initiation of a VNC connection, simplifying the
740installation of operating systems that require immediate keyboard input.
741This can be removed for post-installation use.
742.It Cm password= Ns Ar password
743This type of authentication is known to be cryptographically weak and is not
744intended for use on untrusted networks.
745Many implementations will want to use stronger security, such as running
746the session over an encrypted channel provided by IPsec or SSH.
747.El
748.Pp
749.Sy xHCI USB device backends :
750.Bl -tag -width 10n
751.It Cm tablet
752A USB tablet device which provides precise cursor synchronization
753when using VNC.
754.El
755.Pp
756.Sy NVMe device backends :
757.Bl -bullet
758.Sm off
759.It
760.Ar devpath
761.Op Cm ,maxq= Ar #
762.Op Cm ,qsz= Ar #
763.Op Cm ,ioslots= Ar #
764.Op Cm ,sectsz= Ar #
765.Op Cm ,ser= Ar #
766.Op Cm ,eui64= Ar #
767.Op Cm ,dsm= Ar opt
768.Sm on
769.El
770.Pp
771Configuration options are defined as follows:
772.Bl -tag -width 10n
773.It Ar devpath
774Accepted device paths are:
775.Ar /dev/blockdev
776or
777.Ar /path/to/image
778or
779.Cm ram= Ns Ar size_in_MiB .
780.It Cm maxq
781Max number of queues.
782.It Cm qsz
783Max elements in each queue.
784.It Cm ioslots
785Max number of concurrent I/O requests.
786.It Cm sectsz
787Sector size (defaults to blockif sector size).
788.It Cm ser
789Serial number with maximum 20 characters.
790.It Cm eui64
791IEEE Extended Unique Identifier (8 byte value).
792.It Cm dsm
793DataSet Management support.
794Supported values are:
795.Cm auto , enable ,
796and
797.Cm disable .
798.El
799.Pp
800.Sy AHCI device backends :
801.Bl -bullet
802.It
803.Sm off
804.Op Oo Cm hd\&: | cd\&: Oc Ar path
805.Op Cm ,nmrr= Ar nmrr
806.Op Cm ,ser= Ar #
807.Op Cm ,rev= Ar #
808.Op Cm ,model= Ar #
809.Sm on
810.El
811.Pp
812Configuration options are defined as follows:
813.Bl -tag -width 10n
814.It Cm nmrr
815Nominal Media Rotation Rate, known as RPM.
816Value 1 will indicate device as Solid State Disk.
817Default value is 0, not report.
818.It Cm ser
819Serial Number with maximum 20 characters.
820.It Cm rev
821Revision Number with maximum 8 characters.
822.It Cm model
823Model Number with maximum 40 characters.
824.El
825.It Fl U Ar uuid
826Set the universally unique identifier
827.Pq UUID
828in the guest's System Management BIOS System Information structure.
829By default a UUID is generated from the host's hostname and
830.Ar vmname .
831.It Fl u
832RTC keeps UTC time.
833.It Fl W
834Force virtio PCI device emulations to use MSI interrupts instead of MSI-X
835interrupts.
836.It Fl w
837Ignore accesses to unimplemented Model Specific Registers (MSRs).
838This is intended for debug purposes.
839.It Fl x
840The guest's local APIC is configured in x2APIC mode.
841.It Fl Y
842Disable MPtable generation.
843.It Ar vmname
844Alphanumeric name of the guest.
845.El
846.Sh CONFIGURATION VARIABLES
847.Nm
848uses an internal tree of configuration variables to describe global and
849per-device settings.
850When
851.Nm
852starts,
853it parses command line options (including config files) in the order given
854on the command line.
855Each command line option sets one or more configuration variables.
856For example,
857the
858.Fl s
859option creates a new tree node for a PCI device and sets one or more variables
860under that node including the device model and device model-specific variables.
861Variables may be set multiple times during this parsing stage with the final
862value overriding previous values.
863.Pp
864Once all of the command line options have been processed,
865the configuration values are frozen.
866.Nm
867then uses the value of configuration values to initialize device models
868and global settings.
869.Pp
870More details on configuration variables can be found in
871.Xr bhyve_config 5 .
872.Sh SIGNAL HANDLING
873.Nm
874deals with the following signals:
875.Pp
876.Bl -tag -width SIGTERM -compact
877.It SIGTERM
878Trigger ACPI poweroff for a VM
879.El
880.Sh EXIT STATUS
881Exit status indicates how the VM was terminated:
882.Pp
883.Bl -tag -width indent -compact
884.It 0
885rebooted
886.It 1
887powered off
888.It 2
889halted
890.It 3
891triple fault
892.It 4
893exited due to an error
894.El
895.Sh EXAMPLES
896To run a virtual machine with 1GB of memory, two virtual CPUs, a virtio
897block device backed by the
898.Pa /my/image
899filesystem image, and a serial port for the console:
900.Bd -literal -offset indent
901bhyve -c 2 -s 0,hostbridge -s 1,lpc -s 2,virtio-blk,/my/image \e
902  -l com1,stdio -H -P -m 1G vm1
903.Ed
904.Pp
905Run a 24GB single-CPU virtual machine with three network ports.
906.Bd -literal -offset indent
907bhyve -s 0,hostbridge -s 1,lpc -s 2:0,virtio-net-viona,vmvnic0 \e
908  -s 2:1,virtio-net-viona,vmvnic1 -s 2:2,virtio-net-viona,vmvnic2 \e
909  -s 3,virtio-blk,/my/image -l com1,stdio \e
910  -H -P -m 24G bigvm
911.Ed
912.Pp
913Run an 8GB virtual machine with 2 quad core CPUs, 2 NVMe disks and one other
914disk attached as a Virtio block device, an AHCI ATAPI CD-ROM, a single viona
915network port, an i440fx hostbridge, and the console port connected to a socket.
916.Bd -literal -offset indent
917bhyve -c sockets=2,cores=4,threads=2 \e
918  -s 0,hostbridge,model=i440fx -s 1,lpc \e
919  -s 1:0,nvme,/dev/zvol/rdsk/tank/hdd0 \e
920  -s 1:1,nvme,/dev/zvol/rdsk/tank/hdd1 \e
921  -s 1:2,virtio-blk,/dev/zvol/rdsk/tank/hdd1 \e
922  -s 2:0,ahci,cd:/images/install.iso \e
923  -s 3,virtio-net-viona,vnic=vmvnic0 \e
924  -l com1,socket,/tmp/vm.com1,wait \e
925  -H -P -m 8G
926.Ed
927.Pp
928Run a UEFI virtual machine with a display resolution of 800 by 600 pixels
929that can be accessed via VNC at: 0.0.0.0:5900.
930.Bd -literal -offset indent
931bhyve -c 2 -m 4G -w -H \e
932  -s 0,hostbridge \e
933  -s 3,ahci-cd,/path/to/uefi-OS-install.iso \e
934  -s 4,nvme,/dev/zvol/rdsk/tank/hdd0 \e
935  -s 5,virtio-net-viona,vnic=vnmic0 \e
936  -s 29,fbuf,vga=off,rfb=0.0.0.0:5900,w=800,h=600,wait \e
937  -s 30,xhci,tablet \e
938  -s 31,lpc -l com1,stdio \e
939  -l bootrom,/usr/share/bhyve/firmware/BHYVE_UEFI.fd \e
940   uefivm
941.Ed
942.Pp
943Run a UEFI virtual machine with a VARS file to save EFI variables.
944Note that
945.Nm
946will write guest modifications to the given VARS file.
947Be sure to create a per-guest copy of the template VARS file from
948.Pa /usr/share/bhyve/firmware .
949.Bd -literal -offset indent
950bhyve -c 2 -m 4g -w -H \e
951  -s 0,hostbridge \e
952  -s 31,lpc -l com1,stdio \e
953  -l bootrom,/usr/share/bhyve/firmware/BHYVE_UEFI.fd,BHYVE_UEFI_VARS.fd \e
954   uefivm
955.Ed
956.Sh SEE ALSO
957.Xr bhyve_config 5 ,
958.Xr bhyvectl 8
959.Pp
960.Rs
961.%A Intel
962.%B 64 and IA-32 Architectures Software Developers' Manual
963.%V Volume 3
964.Re
965