svn commit: r44764 - head/en_US.ISO8859-1/books/handbook/virtualization

Dru Lavigne dru at FreeBSD.org
Mon May 5 18:55:20 UTC 2014


Author: dru
Date: Mon May  5 18:55:19 2014
New Revision: 44764
URL: http://svnweb.freebsd.org/changeset/doc/44764

Log:
  Editorial review of bhyve chapter.
  
  Reviewed by:	Allan Jude
  Sponsored by:	iXsystems

Modified:
  head/en_US.ISO8859-1/books/handbook/virtualization/chapter.xml

Modified: head/en_US.ISO8859-1/books/handbook/virtualization/chapter.xml
==============================================================================
--- head/en_US.ISO8859-1/books/handbook/virtualization/chapter.xml	Mon May  5 18:37:48 2014	(r44763)
+++ head/en_US.ISO8859-1/books/handbook/virtualization/chapter.xml	Mon May  5 18:55:19 2014	(r44764)
@@ -69,6 +69,11 @@
       </listitem>
 
       <listitem>
+	<para>How to install &os; as a guest in
+	  <application>byhve</application>.</para>
+      </listitem>
+
+      <listitem>
 	<para>How to tune a &os; system for best performance under
 	  virtualization.</para>
       </listitem>
@@ -1289,36 +1294,35 @@ perm pass* 0660</programlisting>
     <title>&os; as a Host with
       <application>bhyve</application></title>
 
-    <para>Starting with &os; 10.0-RELEASE the BSD licensed hypervisor
-      <application>bhyve</application> is part of the base system.
-      <application>bhyve</application> supports a number of guests
-      including &os;, OpenBSD, and many flavors of &linux;.
-      <application>bhyve</application> currently only supports a
+    <para>Starting with &os; 10.0-RELEASE, the <application>bhyve</application>
+      <acronym>BSD</acronym>-licensed hypervisor is part of the base system.
+      This hypervisor supports a number of guests,
+      including &os;, OpenBSD, and many &linux; distributions.
+      Currently, <application>bhyve</application> only supports a
       serial console and does not emulate a graphical console.
-      <application>bhyve</application> is a legacy-free hypervisor,
-      meaning that instead of translating instructions, and manually
-      managing memory mappings, it relies on the virtualization
-      offload features of newer <acronym>CPU</acronym>s.
-      <application>bhyve</application> also avoids emulating
-      compatible hardware for the guest, and instead relies on the
-      paravirtualization drivers, called
-      <literal>VirtIO</literal>.</para>
-
-    <para>Due to the design of <application>bhyve</application>, it is
-      only possible to use <application>bhyve</application> on
-      computers with newer processors that support &intel;
-      <acronym>EPT</acronym> (Extended Page Tables) or &amd;
-      <acronym>RVI</acronym> (Rapid Virtualization Indexing, also know
-      as <acronym>NPT</acronym> or Nested Page Tables).  Most newer
+      As a legacy-free hypervisor, it relies on the virtualization
+      offload features of newer <acronym>CPU</acronym>s,
+      instead of translating instructions and manually
+      managing memory mappings.
+      It also avoids emulating
+      compatible hardware for the guest and instead relies on
+      para-virtualization drivers.  In &os;, these are provided by the
+      &man.virtio.4; driver.</para>
+
+    <para>Due to the design of <application>bhyve</application>, it
+      requires a computer with a newer processor that supports &intel;
+      Extended Page Tables (<acronym>EPT</acronym>) or &amd;
+      Rapid Virtualization Indexing (<acronym>RVI</acronym>), also know
+      as Nested Page Tables (<acronym>NPT</acronym>).  Most newer
       processors, specifically the &intel; &core; i3/i5/i7 and
-      &intel; &xeon; E3/E5/E7 support this feature, for a
+      &intel; &xeon; E3/E5/E7, support this feature.  For a
       complete list of &intel; processors that support
-      <acronym>EPT</acronym> see the <link
-      xlink:href="http://ark.intel.com/search/advanced?s=t&ExtendedPageTables=true">&intel;
-      ARK</link>.  <acronym>RVI</acronym> is found on the 3rd
+      <acronym>EPT</acronym>, refer to <link
+      xlink:href="http://ark.intel.com/search/advanced?s=t&ExtendedPageTables=true">http://ark.intel.com/search/advanced?s=t&ExtendedPageTables=true</link>.
+      <acronym>RVI</acronym> is found on the 3rd
       generation and later of the &amd.opteron; (Barcelona)
       processors.  The easiest way to check for support of
-      <acronym>EPT</acronym> or <acronym>RVI</acronym> on a system is
+      <acronym>EPT</acronym> or <acronym>RVI</acronym> is
       to look for the <literal>POPCNT</literal> processor feature flag
       on the <literal>Features2</literal> line in
       <command>dmesg</command> or
@@ -1329,32 +1333,34 @@ perm pass* 0660</programlisting>
 
       <para>The first step to creating a virtual machine in
 	<application>bhyve</application> is configuring the host
-	system.  Load the <application>bhyve</application> kernel
-	module called vmm.  Create a <filename>tap</filename>
+	system.  First, load the <application>bhyve</application> kernel
+	module:</para>  
+
+      <screen>&prompt.root; <userinput>kldload vmm</userinput></screen>
+
+      <para>Then, create a <filename>tap</filename>
 	interface for the network device in the virtual machine to
-	attach to.  Optionally create a bridge interface and add the
-	<filename>tap</filename> interface as well as the physical
-	interface as members to allow the virtual machine to have
-	access to the network.</para>
-
-      <screen>&prompt.root; <userinput>kldload vmm</userinput>
-&prompt.root; <userinput>kldload nmdm</userinput>
-&prompt.root; <userinput>ifconfig <replaceable>tap0</replaceable> create</userinput>
+	attach to.  In order for the network device to participate in
+	the network, also create a bridge interface containing the
+	<filename>tap</filename> interface ane the physical
+	interface as members.  In this example, the physical interface
+	is <replaceable>igb0</replaceable>:</para>
+
+<screen>&prompt.root; <userinput>ifconfig <replaceable>tap0</replaceable> create</userinput>
 &prompt.root; <userinput>sysctl net.link.tap.up_on_open=1</userinput>
 net.link.tap.up_on_open: 0 -> 1
 &prompt.root; <userinput>ifconfig <replaceable>bridge0</replaceable> create</userinput>
 &prompt.root; <userinput>ifconfig <replaceable>bridge0</replaceable> addm <replaceable>igb0</replaceable> addm <replaceable>tap0</replaceable></userinput>
 &prompt.root; <userinput>ifconfig <replaceable>bridge0</replaceable> up</userinput></screen>
-
     </sect2>
 
     <sect2 xml:id="virtualization-bhyve-freebsd">
       <title>Creating a FreeBSD Guest</title>
 
       <para>Create a file to use as the virtual disk for the guest
-	machine.</para>
+	machine.  Specify the size and name of the virtual disk:</para>
 
-      <screen>&prompt.root; <userinput>truncate -s <replaceable>16G</replaceable> <filename>guest.img</filename></userinput></screen>
+      <screen>&prompt.root; <userinput>truncate -s <replaceable>16G</replaceable> <replaceable>guest.img</replaceable></userinput></screen>
 
       <para>Download an installation image of &os; to install:</para>
 
@@ -1365,21 +1371,21 @@ FreeBSD-10.0-RELEASE-amd64-bootonly.iso 
 	machine in <application>bhyve</application>.  The script will
 	start the virtual machine and run it in a loop, so it will
 	automatically restart if it crashes.  The script takes a
-	number of options to control the configuration of the machine.
-	<option>-c</option> controls the number of virtual CPUs.
+	number of options to control the configuration of the machine:
+	<option>-c</option> controls the number of virtual CPUs,
 	<option>-m</option> limits the amount of memory available to
-	the guest.  <option>-t</option> defines which
-	<filename>tap</filename> device to use.  <option>-d</option>
-	indicates which disk image to use.  <option>-i</option> tells
-	<application>bhyve</application> to boot from the CD image
-	instead of the disk, and <option>-I</option> defines which CD
-	image to use.  Finally the last parameter is the name of the
-	virtual machine, used to track the running machines.  Start
+	the guest, <option>-t</option> defines which
+	<filename>tap</filename> device to use, <option>-d</option>
+	indicates which disk image to use, <option>-i</option> tells
+	<application>bhyve</application> to boot from the <acronym>CD</acronym> image
+	instead of the disk, and <option>-I</option> defines which <acronym>CD</acronym>
+	image to use.  The last parameter is the name of the
+	virtual machine, used to track the running machines.  This example starts
 	the virtual machine in installation mode:</para>
 
-      <screen>&prompt.root; <userinput>sh <filename>/usr/share/examples/bhyve/vmrun.sh</filename> -c <replaceable>4</replaceable> -m <replaceable>1024M</replaceable> -t tap0 -d <filename>guest.img</filename> -i -I <filename>FreeBSD-10.0-RELEASE-amd64-bootonly.iso</filename> <replaceable>guestname</replaceable></userinput></screen>
+      <screen>&prompt.root; <userinput>sh /usr/share/examples/bhyve/vmrun.sh -c <replaceable>4</replaceable> -m <replaceable>1024M</replaceable> -t tap0 -d <replaceable>guest.img</replaceable> -i -I <replaceable>FreeBSD-10.0-RELEASE-amd64-bootonly.iso</replaceable> <replaceable>guestname</replaceable></userinput></screen>
 
-      <para>The system will boot and start the installer.  After
+      <para>The virtual machine will boot and start the installer.  After
 	installing a system in the virtual machine, when the system
 	asks about dropping in to a shell at the end of the
 	installation, choose <guibutton>Yes</guibutton>.  A small
@@ -1389,34 +1395,35 @@ FreeBSD-10.0-RELEASE-amd64-bootonly.iso 
 
       <programlisting>console "/usr/libexec/getty std.9600"    xterm   on  secure</programlisting>
 
-      <para>Reboot the virtual machine.  Rebooting the virtual machine
-	causes <application>bhyve</application> to exit.  However the
+      <para>Reboot the virtual machine.  While rebooting the virtual machine
+	causes <application>bhyve</application> to exit, the
 	<filename>vmrun.sh</filename> script runs
 	<command>bhyve</command> in a loop and will automatically
 	restart it.  When this happens, choose the reboot option from
-	the boot loader menu, and this will escape the loop.  Now the
+	the boot loader menu in order to escape the loop.  Now the
 	guest can be started from the virtual disk:</para>
 
-      <screen>&prompt.root; <userinput>sh <filename>/usr/share/examples/bhyve/vmrun.sh</filename> -c <replaceable>4</replaceable> -m <replaceable>1024M</replaceable> -t tap0 -d <filename>guest.img</filename> <replaceable>guestname</replaceable></userinput></screen>
+      <screen>&prompt.root; <userinput>sh /usr/share/examples/bhyve/vmrun.sh -c <replaceable>4</replaceable> -m <replaceable>1024M</replaceable> -t tap0 -d <replaceable>guest.img</replaceable> <replaceable>guestname</replaceable></userinput></screen>
     </sect2>
 
     <sect2 xml:id="virtualization-bhyve-linux">
       <title>Creating a &linux; Guest</title>
 
-      <note><para><application>bhyve</application> requires
-	<package>sysutils/grub2-bhyve</package> in order to boot
-	operating systems other than &os;.</para></note>
+      <para>In order to boot operating systems other than &os;, the
+	<package>sysutils/grub2-bhyve</package> port must be first
+	installed.</para>
 
-      <para>Create a file to use as the virtual disk for the guest
-	machine.</para>
+      <para>Next, create a file to use as the virtual disk for the guest
+	machine:</para>
 
-      <screen>&prompt.root; <userinput>truncate -s <replaceable>16G</replaceable> <filename>linux.img</filename></userinput></screen>
+      <screen>&prompt.root; <userinput>truncate -s <replaceable>16G</replaceable> <replaceable>linux.img</replaceable></userinput></screen>
 
       <para>Starting a virtual machine with
 	<application>bhyve</application> is a two step process.  First
 	a kernel must be loaded, then the guest can be started.
-	<package>sysutils/grub2-bhyve</package> is used to load the
-	&linux; kernel.  Create a <filename>device.map</filename> that
+	The &linux; kernel is loaded with
+	<package>sysutils/grub2-bhyve</package>.
+	Create a <filename>device.map</filename> that
 	<application>grub</application> will use to map the virtual
 	devices to the files on the host system:</para>
 
@@ -1426,10 +1433,10 @@ FreeBSD-10.0-RELEASE-amd64-bootonly.iso 
       <para>Use <package>sysutils/grub2-bhyve</package> to load the
 	&linux; kernel from the <acronym>ISO</acronym> image:</para>
 
-      <screen>&prompt.root; <userinput>grub-bhyve -m <filename>device.map</filename> -r cd0 -M <replaceable>1024M</replaceable> <replaceable>linuxguest</replaceable></userinput></screen>
+      <screen>&prompt.root; <userinput>grub-bhyve -m device.map -r cd0 -M <replaceable>1024M</replaceable> <replaceable>linuxguest</replaceable></userinput></screen>
 
-      <para>This will start grub.  If the installation CD contains a
-	<filename>grub.cfg</filename> then a menu will be displayed.
+      <para>This will start grub.  If the installation <acronym>CD</acronym> contains a
+	<filename>grub.cfg</filename>, a menu will be displayed.
 	If not, the <literal>vmlinuz</literal> and
 	<literal>initrd</literal> files must be located and loaded
 	manually:</para>
@@ -1446,14 +1453,8 @@ grub> <userinput>boot</userinput></scree
       <para>Now that the &linux; kernel is loaded, the guest can be
 	started:</para>
 
-      <screen>&prompt.root; <userinput>bhyve -AI -H -P \
--s 0:0,hostbridge \
--s 1:0,lpc \
--s 2:0,virtio-net,tap1 \
--s 3:0,virtio-blk,./linux.img \
--s 4:0,ahci-cd,./somelinux.iso \
--l com1,stdio \
--c <replaceable>4</replaceable> -m <replaceable>1024M</replaceable> <replaceable>linuxguest</replaceable></userinput></screen>
+      <screen>&prompt.root; <userinput>bhyve -AI -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,./linux.img \
+-s 4:0,ahci-cd,./somelinux.iso -l com1,stdio -c <replaceable>4</replaceable> -m <replaceable>1024M</replaceable> <replaceable>linuxguest</replaceable></userinput></screen>
 
       <para>The system will boot and start the installer.  After
 	installing a system in the virtual machine, reboot the virtual
@@ -1466,7 +1467,7 @@ grub> <userinput>boot</userinput></scree
       <para>Now the guest can be started directly from the virtual
 	disk.  Load the kernel:</para>
 
-      <screen>&prompt.root; <userinput>grub-bhyve -m <filename>device.map</filename> -r hd0,msdos1 -M <replaceable>1024M</replaceable> <replaceable>linuxguest</replaceable></userinput>
+      <screen>&prompt.root; <userinput>grub-bhyve -m device.map -r hd0,msdos1 -M <replaceable>1024M</replaceable> <replaceable>linuxguest</replaceable></userinput>
 grub> <userinput>ls</userinput>
 (hd0) (hd0,msdos2) (hd0,msdos1) (cd0) (cd0,msdos1) (host)
 (lvm/VolGroup-lv_swap) (lvm/VolGroup-lv_root)
@@ -1480,13 +1481,8 @@ grub> <userinput>boot</userinput></scree
 
       <para>Boot the virtual machine:</para>
 
-      <screen>&prompt.root; <userinput>bhyve -AI -H -P \
--s 0:0,hostbridge \
--s 1:0,lpc \
--s 2:0,virtio-net,tap1 \
--s 3:0,virtio-blk,./linux.img \
--l com1,stdio \
--c <replaceable>4</replaceable> -m <replaceable>1024M</replaceable> <replaceable>linuxguest</replaceable></userinput></screen>
+      <screen>&prompt.root; <userinput>bhyve -AI -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap1 \
+-s 3:0,virtio-blk,./linux.img -l com1,stdio -c <replaceable>4</replaceable> -m <replaceable>1024M</replaceable> <replaceable>linuxguest</replaceable></userinput></screen>
 
       <para>&linux; will now boot in the virtual machine and
 	eventually present you with the login prompt.  Login and use
@@ -1498,7 +1494,7 @@ grub> <userinput>boot</userinput></scree
     </sect2>
 
     <sect2 xml:id="virtualization-bhyve-nmdm">
-      <title>Virtual Machines Consoles</title>
+      <title>Virtual Machine Consoles</title>
 
       <para>It is advantageous to wrap the
 	<application>bhyve</application> console in a session
@@ -1506,24 +1502,20 @@ grub> <userinput>boot</userinput></scree
 	<package>sysutils/screen</package> in order to detach and
 	reattach to the console.  It is also possible to have the
 	console of <application>bhyve</application> be a null modem
-	device that can be accessed with <command>cu</command>.  Load
-	the <filename>nmdm</filename> kernel module, and replace
+	device that can be accessed with <command>cu</command>.  To do this, load
+	the <filename>nmdm</filename> kernel module and replace
 	<option>-l com1,stdio</option> with
 	<option>-l com1,/dev/nmdm0A</option>.  The
 	<filename>/dev/nmdm</filename> devices are created
-	automatically as needed, each is a pair,
-	<filename>/dev/nmdm1A</filename> and
-	<filename>/dev/nmdm1B</filename> corresponding to the two ends
-	of the null modem cable.  See &man.nmdm.4; for more
+	automatically as needed, where each is a pair, corresponding to the two ends
+	of the null modem cable
+	(<filename>/dev/nmdm1A</filename> and
+	<filename>/dev/nmdm1B</filename>).  See &man.nmdm.4; for more
 	information.</para>
 
-      <screen>&prompt.root; <userinput>bhyve -AI -H -P \
--s 0:0,hostbridge \
--s 1:0,lpc \
--s 2:0,virtio-net,tap1 \
--s 3:0,virtio-blk,./linux.img \
--l com1,<replaceable>/dev/nmdm0A</replaceable> \
--c <replaceable>4</replaceable> -m <replaceable>1024M</replaceable> <replaceable>linuxguest</replaceable></userinput>
+      <screen>&prompt.root; <userinput>kldload nmdm</userinput>
+&prompt.root; <userinput>bhyve -AI -H -P -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap1 -s 3:0,virtio-blk,./linux.img \
+-l com1,<replaceable>/dev/nmdm0A</replaceable> -c <replaceable>4</replaceable> -m <replaceable>1024M</replaceable> <replaceable>linuxguest</replaceable></userinput>
 &prompt.root; <userinput>cu -l /dev/nmdm0B -s 9600</userinput>
 Connected
 
@@ -1549,18 +1541,18 @@ crw-------   1 root  wheel  0x1a2 Mar 17
 crw-------   1 root  wheel  0x19f Mar 17 12:19 linuxguest
 crw-------   1 root  wheel  0x1a1 Mar 17 12:19 otherguest</screen>
 
-      <para>Virtual machines can be destroyed using
+      <para>A specified virtual machine can be destroyed using
 	<command>bhyvectl</command>:</para>
 
-      <screen>&prompt.root; bhyvectl --destroy --vm=guestname</screen>
+      <screen>&prompt.root; bhyvectl --destroy --vm=<replaceable>guestname</replaceable></screen>
     </sect2>
 
     <sect2 xml:id="virtualization-bhyve-onboot">
       <title>Persistent Configuration</title>
 
-      <para>In order to make the system able to start
-	<application>bhyve</application> guests at boot time, the
-	following configurations must be made in the specified
+      <para>In order to configure the system to start
+	<application>bhyve</application> guests at boot time, add
+	the following entries to in the following
 	files:</para>
 
       <procedure>
@@ -1582,8 +1574,8 @@ if_tap_load="YES"</programlisting>
 	<step>
 	  <title><filename>/etc/rc.conf</filename></title>
 
-	  <programlisting>cloned_interfaces="bridge0 tap0"
-ifconfig_bridge0="addm igb0 addm tap0"</programlisting>
+	  <programlisting>cloned_interfaces="<replaceable>bridge0</replaceable> <replaceable>tap0</replaceable>"
+ifconfig_bridge0="addm <replaceable>igb0</replaceable> addm <replaceable>tap0</replaceable>"</programlisting>
 	</step>
       </procedure>
     </sect2>


More information about the svn-doc-all mailing list