]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - usr.sbin/bhyve/bhyve.8
MFC r339586:
[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 October 24, 2018
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 Ns Oo ,password= Ns Ar password Oc
313 .Bl -tag -width 8n
314 .It Ar IPv4:port No or Ar [IPv6%zone]: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 An IPv6 address must be enclosed in square brackets and may contain an
322 optional zone identifer.
323 .It Ar width No and Ar height
324 A display resolution, width and height, respectively.
325 If not specified, a default resolution of 1024x768 pixels will be used.
326 Minimal supported resolution is 640x480 pixels,
327 and maximum is 1920x1200 pixels.
328 .It Ar vgaconf
329 Possible values for this option are
330 .Dq io
331 (default),
332 .Dq on
333 , and
334 .Dq off .
335 PCI graphics cards have a dual personality in that they are
336 standard PCI devices with BAR addressing, but may also
337 implicitly decode legacy VGA I/O space
338 .Pq Ad 0x3c0-3df
339 and memory space
340 .Pq 64KB at Ad 0xA0000 .
341 The default
342 .Dq io
343 option should be used for guests that attempt to issue BIOS
344 calls which result in I/O port queries, and fail to boot if I/O decode is disabled.
345 .Pp
346 The
347 .Dq on
348 option should be used along with the CSM BIOS capability in UEFI
349 to boot traditional BIOS guests that require the legacy VGA I/O and
350 memory regions to be available.
351 .Pp
352 The
353 .Dq off
354 option should be used for the UEFI guests that assume that
355 VGA adapter is present if they detect the I/O ports.
356 An example of such a guest is
357 .Ox
358 in UEFI mode.
359 .Pp
360 Please refer to the
361 .Nm
362 .Fx
363 wiki page
364 .Pq Lk https://wiki.freebsd.org/bhyve
365 for configuration notes of particular guests.
366 .It wait
367 Instruct
368 .Nm
369 to only boot upon the initiation of a VNC connection, simplifying the installation
370 of operating systems that require immediate keyboard input.
371 This can be removed for post-installation use.
372 .It password
373 This type of authentication is known to be cryptographically weak and is not
374 intended for use on untrusted networks.
375 Many implementations will want to use stronger security, such as running
376 the session over an encrypted channel provided by IPsec or SSH.
377 .El
378 .El
379 .Pp
380 xHCI USB devices:
381 .Bl -tag -width 10n
382 .It Li tablet
383 A USB tablet device which provides precise cursor synchronization
384 when using VNC.
385 .El
386 .El
387 .It Fl S
388 Wire guest memory.
389 .It Fl u
390 RTC keeps UTC time.
391 .It Fl U Ar uuid
392 Set the universally unique identifier
393 .Pq UUID
394 in the guest's System Management BIOS System Information structure.
395 By default a UUID is generated from the host's hostname and
396 .Ar vmname .
397 .It Fl w
398 Ignore accesses to unimplemented Model Specific Registers (MSRs).
399 This is intended for debug purposes.
400 .It Fl W
401 Force virtio PCI device emulations to use MSI interrupts instead of MSI-X
402 interrupts.
403 .It Fl x
404 The guest's local APIC is configured in x2APIC mode.
405 .It Fl Y
406 Disable MPtable generation.
407 .It Ar vmname
408 Alphanumeric name of the guest.
409 This should be the same as that created by
410 .Xr bhyveload 8 .
411 .El
412 .Sh SIGNAL HANDLING
413 .Nm
414 deals with the following signals:
415 .Pp
416 .Bl -tag -width indent -compact
417 .It SIGTERM
418 Trigger ACPI poweroff for a VM
419 .El
420 .Sh EXIT STATUS
421 Exit status indicates how the VM was terminated:
422 .Pp
423 .Bl -tag -width indent -compact
424 .It 0
425 rebooted
426 .It 1
427 powered off
428 .It 2
429 halted
430 .It 3
431 triple fault
432 .It 4
433 exited due to an error
434 .El
435 .Sh EXAMPLES
436 If not using a boot ROM, the guest operating system must have been loaded with
437 .Xr bhyveload 8
438 or a similar boot loader before
439 .Xr bhyve 4
440 can be run.
441 Otherwise, the boot loader is not needed.
442 .Pp
443 To run a virtual machine with 1GB of memory, two virtual CPUs, a virtio
444 block device backed by the
445 .Pa /my/image
446 filesystem image, and a serial port for the console:
447 .Bd -literal -offset indent
448 bhyve -c 2 -s 0,hostbridge -s 1,lpc -s 2,virtio-blk,/my/image \\
449   -l com1,stdio -A -H -P -m 1G vm1
450 .Ed
451 .Pp
452 Run a 24GB single-CPU virtual machine with three network ports, one of which
453 has a MAC address specified:
454 .Bd -literal -offset indent
455 bhyve -s 0,hostbridge -s 1,lpc -s 2:0,virtio-net,tap0 \\
456   -s 2:1,virtio-net,tap1 \\
457   -s 2:2,virtio-net,tap2,mac=00:be:fa:76:45:00 \\
458   -s 3,virtio-blk,/my/image -l com1,stdio \\
459   -A -H -P -m 24G bigvm
460 .Ed
461 .Pp
462 Run an 8GB quad-CPU virtual machine with 8 AHCI SATA disks, an AHCI ATAPI
463 CD-ROM, a single virtio network port, an AMD hostbridge, and the console
464 port connected to an
465 .Xr nmdm 4
466 null-modem device.
467 .Bd -literal -offset indent
468 bhyve -c 4 \\
469   -s 0,amd_hostbridge -s 1,lpc \\
470   -s 1:0,ahci,hd:/images/disk.1,hd:/images/disk.2,\\
471 hd:/images/disk.3,hd:/images/disk.4,\\
472 hd:/images/disk.5,hd:/images/disk.6,\\
473 hd:/images/disk.7,hd:/images/disk.8,\\
474 cd:/images/install.iso \\
475   -s 3,virtio-net,tap0 \\
476   -l com1,/dev/nmdm0A \\
477   -A -H -P -m 8G
478 .Ed
479 .Pp
480 Run a UEFI virtual machine with a display resolution of 800 by 600 pixels
481 that can be accessed via VNC at: 0.0.0.0:5900.
482 .Bd -literal -offset indent
483 bhyve -c 2 -m 4G -w -H \\
484   -s 0,hostbridge \\
485   -s 3,ahci-cd,/path/to/uefi-OS-install.iso \\
486   -s 4,ahci-hd,disk.img \\
487   -s 5,virtio-net,tap0 \\
488   -s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait \\
489   -s 30,xhci,tablet \\
490   -s 31,lpc -l com1,stdio \\
491   -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \\
492    uefivm
493 .Ed
494 .Pp
495 Run a UEFI virtual machine with a VNC display that is bound to all IPv6
496 addresses on port 5900.
497 .Bd -literal -offset indent
498 bhyve -c 2 -m 4G -w -H \\
499   -s 0,hostbridge \\
500   -s 4,ahci-hd,disk.img \\
501   -s 5,virtio-net,tap0 \\
502   -s 29,fbuf,tcp=[::]:5900,w=800,h=600 \\
503   -s 30,xhci,tablet \\
504   -s 31,lpc -l com1,stdio \\
505   -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \\
506    uefivm
507 .Ed
508 .Sh SEE ALSO
509 .Xr bhyve 4 ,
510 .Xr nmdm 4 ,
511 .Xr vmm 4 ,
512 .Xr ethers 5 ,
513 .Xr bhyvectl 8 ,
514 .Xr bhyveload 8
515 .Sh HISTORY
516 .Nm
517 first appeared in
518 .Fx 10.0 .
519 .Sh AUTHORS
520 .An Neel Natu Aq Mt neel@freebsd.org
521 .An Peter Grehan Aq Mt grehan@freebsd.org