]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - usr.sbin/bhyve/bhyve.8
Merge branch 'releng/11.1' into releng-CDN/11.1
[FreeBSD/FreeBSD.git] / usr.sbin / bhyve / bhyve.8
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 .\" $FreeBSD$
26 .\"
27 .Dd May 3, 2017
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 abehuwxACHPSWY
36 .Op Fl c Ar numcpus
37 .Op Fl g Ar gdbport
38 .Op Fl l Ar lpcdev Ns Op , Ns Ar conf
39 .Op Fl m Ar memsize Ns Op Ar K|k|M|m|G|g|T|t
40 .Op Fl p Ar vcpu:hostcpu
41 .Op Fl s Ar slot,emulation Ns Op , Ns Ar conf
42 .Op Fl U Ar uuid
43 .Ar vmname
44 .Sh DESCRIPTION
45 .Nm
46 is a hypervisor that runs guest operating systems inside a
47 virtual machine.
48 .Pp
49 Parameters such as the number of virtual CPUs, amount of guest memory, and
50 I/O connectivity can be specified with command-line parameters.
51 .Pp
52 If not using a boot ROM, the guest operating system must be loaded with
53 .Xr bhyveload 8
54 or a similar boot loader before running
55 .Nm ,
56 otherwise, it is enough to run
57 .Nm
58 with a boot ROM of choice.
59 .Pp
60 .Nm
61 runs until the guest operating system reboots or an unhandled hypervisor
62 exit is detected.
63 .Sh OPTIONS
64 .Bl -tag -width 10n
65 .It Fl a
66 The guest's local APIC is configured in xAPIC mode.
67 The xAPIC mode is the default setting so this option is redundant.
68 It will be deprecated in a future version.
69 .It Fl A
70 Generate ACPI tables.
71 Required for
72 .Fx Ns /amd64
73 guests.
74 .It Fl b
75 Enable a low-level console device supported by
76 .Fx
77 kernels compiled with
78 .Cd "device bvmconsole" .
79 This option will be deprecated in a future version.
80 .It Fl c Ar numcpus
81 Number of guest virtual CPUs.
82 The default is 1 and the maximum is 16.
83 .It Fl C
84 Include guest memory in core file.
85 .It Fl e
86 Force
87 .Nm
88 to exit when a guest issues an access to an I/O port that is not emulated.
89 This is intended for debug purposes.
90 .It Fl g Ar gdbport
91 For
92 .Fx
93 kernels compiled with
94 .Cd "device bvmdebug" ,
95 allow a remote kernel kgdb to be relayed to the guest kernel gdb stub
96 via a local IPv4 address and this port.
97 This option will be deprecated in a future version.
98 .It Fl h
99 Print help message and exit.
100 .It Fl H
101 Yield the virtual CPU thread when a HLT instruction is detected.
102 If this option is not specified, virtual CPUs will use 100% of a host CPU.
103 .It Fl l Ar lpcdev Ns Op , Ns Ar conf
104 Allow devices behind the LPC PCI-ISA bridge to be configured.
105 The only supported devices are the TTY-class devices
106 .Ar com1
107 and
108 .Ar com2
109 and the boot ROM device
110 .Ar bootrom .
111 .It Fl m Ar memsize Ns Op Ar K|k|M|m|G|g|T|t
112 Guest physical memory size in bytes.
113 This must be the same size that was given to
114 .Xr bhyveload 8 .
115 .Pp
116 The size argument may be suffixed with one of K, M, G or T (either upper
117 or lower case) to indicate a multiple of kilobytes, megabytes, gigabytes,
118 or terabytes.
119 If no suffix is given, the value is assumed to be in megabytes.
120 .Pp
121 .Ar memsize
122 defaults to 256M.
123 .It Fl p Ar vcpu:hostcpu
124 Pin guest's virtual CPU
125 .Em vcpu
126 to
127 .Em hostcpu .
128 .It Fl P
129 Force the guest virtual CPU to exit when a PAUSE instruction is detected.
130 .It Fl s Ar slot,emulation Ns Op , Ns Ar conf
131 Configure a virtual PCI slot and function.
132 .Pp
133 .Nm
134 provides PCI bus emulation and virtual devices that can be attached to
135 slots on the bus.
136 There are 32 available slots, with the option of providing up to 8 functions
137 per slot.
138 .Bl -tag -width 10n
139 .It Ar slot
140 .Ar pcislot[:function]
141 .Ar bus:pcislot:function
142 .Pp
143 The
144 .Ar pcislot
145 value is 0 to 31.
146 The optional
147 .Ar function
148 value is 0 to 7.
149 The optional
150 .Ar bus
151 value is 0 to 255.
152 If not specified, the
153 .Ar function
154 value defaults to 0.
155 If not specified, the
156 .Ar bus
157 value defaults to 0.
158 .It Ar emulation
159 .Bl -tag -width 10n
160 .It Li hostbridge | Li amd_hostbridge
161 .Pp
162 Provide a simple host bridge.
163 This is usually configured at slot 0, and is required by most guest
164 operating systems.
165 The
166 .Li amd_hostbridge
167 emulation is identical but uses a PCI vendor ID of
168 .Li AMD .
169 .It Li passthru
170 PCI pass-through device.
171 .It Li virtio-net
172 Virtio network interface.
173 .It Li virtio-blk
174 Virtio block storage interface.
175 .It Li virtio-rnd
176 Virtio RNG interface.
177 .It Li virtio-console
178 Virtio console interface, which exposes multiple ports
179 to the guest in the form of simple char devices for simple IO
180 between the guest and host userspaces.
181 .It Li ahci
182 AHCI controller attached to arbitrary devices.
183 .It Li ahci-cd
184 AHCI controller attached to an ATAPI CD/DVD.
185 .It Li ahci-hd
186 AHCI controller attached to a SATA hard-drive.
187 .It Li e1000
188 Intel e82545 network interface.
189 .It Li uart
190 PCI 16550 serial device.
191 .It Li lpc
192 LPC PCI-ISA bridge with COM1 and COM2 16550 serial ports and a boot ROM.
193 The LPC bridge emulation can only be configured on bus 0.
194 .It Li fbuf
195 Raw framebuffer device attached to VNC server.
196 .It Li xhci
197 eXtensible Host Controller Interface (xHCI) USB controller.
198 .El
199 .It Op Ar conf
200 This optional parameter describes the backend for device emulations.
201 If
202 .Ar conf
203 is not specified, the device emulation has no backend and can be
204 considered unconnected.
205 .Pp
206 Network devices:
207 .Bl -tag -width 10n
208 .It Ar tapN Ns Op , Ns Ar mac=xx:xx:xx:xx:xx:xx
209 .It Ar vmnetN Ns Op , Ns Ar mac=xx:xx:xx:xx:xx:xx
210 .Pp
211 If
212 .Ar mac
213 is not specified, the MAC address is derived from a fixed OUI and the
214 remaining bytes from an MD5 hash of the slot and function numbers and
215 the device name.
216 .Pp
217 The MAC address is an ASCII string in
218 .Xr ethers 5
219 format.
220 .El
221 .Pp
222 Block storage devices:
223 .Bl -tag -width 10n
224 .It Pa /filename Ns Oo , Ns Ar block-device-options Oc
225 .It Pa /dev/xxx Ns Oo , Ns Ar block-device-options Oc
226 .El
227 .Pp
228 The
229 .Ar block-device-options
230 are:
231 .Bl -tag -width 8n
232 .It Li nocache
233 Open the file with
234 .Dv O_DIRECT .
235 .It Li direct
236 Open the file using
237 .Dv O_SYNC .
238 .It Li ro
239 Force the file to be opened read-only.
240 .It Li sectorsize= Ns Ar logical Ns Oo / Ns Ar physical Oc
241 Specify the logical and physical sector sizes of the emulated disk.
242 The physical sector size is optional and is equal to the logical sector size
243 if not explicitly specified.
244 .El
245 .Pp
246 TTY devices:
247 .Bl -tag -width 10n
248 .It Li stdio
249 Connect the serial port to the standard input and output of
250 the
251 .Nm
252 process.
253 .It Pa /dev/xxx
254 Use the host TTY device for serial port I/O.
255 .El
256 .Pp
257 Boot ROM device:
258 .Bl -tag -width 10n
259 .It Pa romfile
260 Map
261 .Ar romfile
262 in the guest address space reserved for boot firmware.
263 .El
264 .Pp
265 Pass-through devices:
266 .Bl -tag -width 10n
267 .It Ns Ar slot Ns / Ns Ar bus Ns / Ns Ar function
268 Connect to a PCI device on the host at the selector described by
269 .Ar slot ,
270 .Ar bus ,
271 and
272 .Ar function
273 numbers.
274 .El
275 .Pp
276 Guest memory must be wired using the
277 .Fl S
278 option when a pass-through device is configured.
279 .Pp
280 The host device must have been reserved at boot-time using the
281 .Va pptdev
282 loader variable as described in
283 .Xr vmm 4 .
284 .Pp
285 Virtio console devices:
286 .Bl -tag -width 10n
287 .It Li port1= Ns Pa /path/to/port1.sock Ns ,anotherport= Ns Pa ...
288 A maximum of 16 ports per device can be created.
289 Every port is named and corresponds to a Unix domain socket created by
290 .Nm .
291 .Nm
292 accepts at most one connection per port at a time.
293 .Pp
294 Limitations:
295 .Bl -bullet -offset 2n
296 .It
297 Due to lack of destructors in
298 .Nm ,
299 sockets on the filesystem must be cleaned up manually after
300 .Nm
301 exits.
302 .It
303 There is no way to use the "console port" feature, nor the console port
304 resize at present.
305 .It
306 Emergency write is advertised, but no-op at present.
307 .El
308 .El
309 .Pp
310 Framebuffer devices:
311 .Bl -tag -width 10n
312 .It Oo rfb= Ns Oo Ar IP: Oc Ns Ar port Oc Ns Oo ,w= Ns Ar width Oc Ns Oo ,h= Ns Ar height Oc Ns Oo ,vga= Ns Ar vgaconf Oc Ns Oo Ns ,wait Oc
313 .Bl -tag -width 8n
314 .It Ar IP:port
315 An
316 .Ar IP
317 address and a
318 .Ar port
319 VNC should listen on.
320 The default is to listen on localhost IPv4 address and default VNC port 5900.
321 Listening on an IPv6 address is not supported.
322 .It Ar width No and Ar height
323 A display resolution, width and height, respectively.
324 If not specified, a default resolution of 1024x768 pixels will be used.
325 Minimal supported resolution is 640x480 pixels,
326 and maximum is 1920x1200 pixels.
327 .It Ar vgaconf
328 Possible values for this option are
329 .Dq io
330 (default),
331 .Dq on
332 , and
333 .Dq off .
334 PCI graphics cards have a dual personality in that they are
335 standard PCI devices with BAR addressing, but may also
336 implicitly decode legacy VGA I/O space
337 .Pq Ad 0x3c0-3df
338 and memory space
339 .Pq 64KB at Ad 0xA0000 .
340 The default
341 .Dq io
342 option should be used for guests that attempt to issue BIOS
343 calls which result in I/O port queries, and fail to boot if I/O decode is disabled.
344 .Pp
345 The
346 .Dq on
347 option should be used along with the CSM BIOS capability in UEFI
348 to boot traditional BIOS guests that require the legacy VGA I/O and
349 memory regions to be available.
350 .Pp
351 The
352 .Dq off
353 option should be used for the UEFI guests that assume that
354 VGA adapter is present if they detect the I/O ports.
355 An example of such a guest is
356 .Ox
357 in UEFI mode.
358 .Pp
359 Please refer to the
360 .Nm
361 .Fx
362 wiki page
363 .Pq Lk https://wiki.freebsd.org/bhyve
364 for configuration notes of particular guests.
365 .It wait
366 Instruct
367 .Nm
368 to only boot upon the initiation of a VNC connection, simplifying the installation
369 of operating systems that require immediate keyboard input.
370 This can be removed for post-installation use.
371 .El
372 .El
373 .Pp
374 xHCI USB devices:
375 .Bl -tag -width 10n
376 .It Li tablet
377 A USB tablet device which provides precise cursor synchronization
378 when using VNC.
379 .El
380 .El
381 .It Fl S
382 Wire guest memory.
383 .It Fl u
384 RTC keeps UTC time.
385 .It Fl U Ar uuid
386 Set the universally unique identifier
387 .Pq UUID
388 in the guest's System Management BIOS System Information structure.
389 By default a UUID is generated from the host's hostname and
390 .Ar vmname .
391 .It Fl w
392 Ignore accesses to unimplemented Model Specific Registers (MSRs).
393 This is intended for debug purposes.
394 .It Fl W
395 Force virtio PCI device emulations to use MSI interrupts instead of MSI-X
396 interrupts.
397 .It Fl x
398 The guest's local APIC is configured in x2APIC mode.
399 .It Fl Y
400 Disable MPtable generation.
401 .It Ar vmname
402 Alphanumeric name of the guest.
403 This should be the same as that created by
404 .Xr bhyveload 8 .
405 .El
406 .Sh SIGNAL HANDLING
407 .Nm
408 deals with the following signals:
409 .Pp
410 .Bl -tag -width indent -compact
411 .It SIGTERM
412 Trigger ACPI poweroff for a VM
413 .El
414 .Sh EXIT STATUS
415 Exit status indicates how the VM was terminated:
416 .Pp
417 .Bl -tag -width indent -compact
418 .It 0
419 rebooted
420 .It 1
421 powered off
422 .It 2
423 halted
424 .It 3
425 triple fault
426 .El
427 .Sh EXAMPLES
428 If not using a boot ROM, the guest operating system must have been loaded with
429 .Xr bhyveload 8
430 or a similar boot loader before
431 .Xr bhyve 4
432 can be run.
433 Otherwise, the boot loader is not needed.
434 .Pp
435 To run a virtual machine with 1GB of memory, two virtual CPUs, a virtio
436 block device backed by the
437 .Pa /my/image
438 filesystem image, and a serial port for the console:
439 .Bd -literal -offset indent
440 bhyve -c 2 -s 0,hostbridge -s 1,lpc -s 2,virtio-blk,/my/image \\
441   -l com1,stdio -A -H -P -m 1G vm1
442 .Ed
443 .Pp
444 Run a 24GB single-CPU virtual machine with three network ports, one of which
445 has a MAC address specified:
446 .Bd -literal -offset indent
447 bhyve -s 0,hostbridge -s 1,lpc -s 2:0,virtio-net,tap0 \\
448   -s 2:1,virtio-net,tap1 \\
449   -s 2:2,virtio-net,tap2,mac=00:be:fa:76:45:00 \\
450   -s 3,virtio-blk,/my/image -l com1,stdio \\
451   -A -H -P -m 24G bigvm
452 .Ed
453 .Pp
454 Run an 8GB quad-CPU virtual machine with 8 AHCI SATA disks, an AHCI ATAPI
455 CD-ROM, a single virtio network port, an AMD hostbridge, and the console
456 port connected to an
457 .Xr nmdm 4
458 null-modem device.
459 .Bd -literal -offset indent
460 bhyve -c 4 \\
461   -s 0,amd_hostbridge -s 1,lpc \\
462   -s 1:0,ahci,hd:/images/disk.1,hd:/images/disk.2,\\
463 hd:/images/disk.3,hd:/images/disk.4,\\
464 hd:/images/disk.5,hd:/images/disk.6,\\
465 hd:/images/disk.7,hd:/images/disk.8,\\
466 cd:/images/install.iso \\
467   -s 3,virtio-net,tap0 \\
468   -l com1,/dev/nmdm0A \\
469   -A -H -P -m 8G
470 .Ed
471 .Pp
472 Run a UEFI virtual machine with a display resolution of 800 by 600 pixels
473 that can be accessed via VNC at: 0.0.0.0:5900.
474 .Bd -literal -offset indent
475 bhyve -c 2 -m 4G -w -H \\
476   -s 0,hostbridge \\
477   -s 3,ahci-cd,/path/to/uefi-OS-install.iso \\
478   -s 4,ahci-hd,disk.img \\
479   -s 5,virtio-net,tap0 \\
480   -s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait \\
481   -s 30,xhci,tablet \\
482   -s 31,lpc -l com1,stdio \\
483   -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \\
484    uefivm
485 .Ed
486 .Sh SEE ALSO
487 .Xr bhyve 4 ,
488 .Xr nmdm 4 ,
489 .Xr vmm 4 ,
490 .Xr ethers 5 ,
491 .Xr bhyvectl 8 ,
492 .Xr bhyveload 8
493 .Sh HISTORY
494 .Nm
495 first appeared in
496 .Fx 10.0 .
497 .Sh AUTHORS
498 .An Neel Natu Aq Mt neel@freebsd.org
499 .An Peter Grehan Aq Mt grehan@freebsd.org