diff options
Diffstat (limited to 'en_US.ISO8859-1/books/handbook/virtualization/chapter.xml')
-rw-r--r-- | en_US.ISO8859-1/books/handbook/virtualization/chapter.xml | 1300 |
1 files changed, 1300 insertions, 0 deletions
diff --git a/en_US.ISO8859-1/books/handbook/virtualization/chapter.xml b/en_US.ISO8859-1/books/handbook/virtualization/chapter.xml new file mode 100644 index 0000000000..3960c880d8 --- /dev/null +++ b/en_US.ISO8859-1/books/handbook/virtualization/chapter.xml @@ -0,0 +1,1300 @@ +<?xml version="1.0" encoding="iso-8859-1" standalone="no"?> +<!-- + The FreeBSD Documentation Project + + $FreeBSD$ +--> + +<chapter id="virtualization"> + <chapterinfo> + <authorgroup> + <author> + <firstname>Murray</firstname> + <surname>Stokely</surname> + <contrib>Contributed by </contrib> + </author> + </authorgroup> + <!-- Mar 2007 --> + </chapterinfo> + + <title>Virtualization</title> + + <sect1 id="virtualization-synopsis"> + <title>Synopsis</title> + + <para>Virtualization software allows multiple operating systems + to run simultaneously on the same computer. Such software + systems for PCs often involve a host operating system which runs + the virtualization software and supports any number of guest + operating systems.</para> + + <para>After reading this chapter, you will know:</para> + + <itemizedlist> + <listitem> + <para>The difference between a host operating system and a + guest operating system.</para> + </listitem> + + <listitem> + <para>How to install &os; on an &intel;-based &apple; + &macintosh; computer.</para> + </listitem> + +<!-- + Note: There is no working/end-user ready Xen support for FreeBSD as of 07-2010. + Hide all information regarding Xen under FreeBSD. + + <listitem> + <para>How to install &os; on Linux with + <application>&xen;</application>.</para> + </listitem> +--> + <listitem> + <para>How to install &os; on µsoft.windows; with + <application>Virtual PC</application>.</para> + </listitem> + + <listitem> + <para>How to tune a &os; system for best performance under + virtualization.</para> + </listitem> + + </itemizedlist> + + <para>Before reading this chapter, you should:</para> + + <itemizedlist> + <listitem> + <para>Understand the basics of &unix; and &os; (<xref + linkend="basics"/>).</para> + </listitem> + + <listitem> + <para>Know how to install &os; (<xref + linkend="install"/>).</para> + </listitem> + + <listitem> + <para>Know how to set up your network connection (<xref + linkend="advanced-networking"/>).</para> + </listitem> + + <listitem> + <para>Know how to install additional third-party + software (<xref linkend="ports"/>).</para> + </listitem> + </itemizedlist> + </sect1> + + <sect1 id="virtualization-guest"> + <title>&os; as a Guest OS</title> + + <sect2 id="virtualization-guest-parallels"> + <title>Parallels on MacOS</title> + + <para><application>Parallels Desktop</application> for &mac; is + a commercial software product available for &intel; based + &apple; &mac; computers running &macos; 10.4.6 or higher. + &os; is a fully supported guest operating system. Once + <application>Parallels</application> has been installed on + &macos; X, the user must configure a virtual machine and then + install the desired guest operating system.</para> + + <sect3 id="virtualization-guest-parallels-install"> + <title>Installing &os; on Parallels/&macos; X</title> + + <para>The first step in installing &os; on &macos; + X/<application>Parallels</application> is to create a new + virtual machine for installing &os;. Select + <guimenuitem>&os;</guimenuitem> as the <guimenu>Guest OS + Type</guimenu> when prompted:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd1"/> + </imageobject> + </mediaobject> + + <para>And choose a reasonable amount of disk and memory + depending on your plans for this virtual &os; instance. + 4GB of disk space and 512MB of RAM work well for most uses + of &os; under <application>Parallels</application>:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd2"/> + </imageobject> + </mediaobject> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd3"/> + </imageobject> + </mediaobject> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd4"/> + </imageobject> + </mediaobject> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd5"/> + </imageobject> + </mediaobject> + + <para>Select the type of networking and a network + interface:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd6"/> + </imageobject> + </mediaobject> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd7"/> + </imageobject> + </mediaobject> + + <para>Save and finish the configuration:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd8"/> + </imageobject> + </mediaobject> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd9"/> + </imageobject> + </mediaobject> + + <para>After your &os; virtual machine has been created, you + will need to install &os; on it. This is best done with an + official &os; CDROM or with an ISO image downloaded from an + official FTP site. When you have the appropriate ISO image + on your local &mac; filesystem or a CDROM in your &mac;'s CD + drive, click on the disc icon in the bottom right corner of + your &os; <application>Parallels</application> window. This + will bring up a window that allows you to associate the + CDROM drive in your virtual machine with an ISO file on disk + or with your real CDROM drive.</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd11"/> + </imageobject> + </mediaobject> + + <para>Once you have made this association with your CDROM + source, reboot your &os; virtual machine as normal by + clicking the reboot icon. + <application>Parallels</application> will reboot with a + special BIOS that first checks if you have a CDROM just as a + normal BIOS would do.</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd10"/> + </imageobject> + </mediaobject> + + <para>In this case it will find the &os; installation media + and begin a normal <application>sysinstall</application> + based installation as described in <xref + linkend="install"/>. You may install, but do not attempt + to configure X11 at this time.</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd12"/> + </imageobject> + </mediaobject> + + <para>When you have finished the installation, reboot into + your newly installed &os; virtual machine.</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/parallels-freebsd13"/> + </imageobject> + </mediaobject> + </sect3> + + <sect3 id="virtualization-guest-parallels-configure"> + <title>Configuring &os; on &macos; X/Parallels</title> + + <para>After &os; has been successfully installed on &macos; + X with <application>Parallels</application>, there are a + number of configuration steps that can be taken to + optimize the system for virtualized operation.</para> + + <procedure> + <step> + <title>Set Boot Loader Variables</title> + + <para>The most important step is to reduce the + <option>kern.hz</option> tunable to reduce the CPU + utilization of &os; under the <application>Parallels + </application> environment. This is accomplished by + adding the following line to <filename> + /boot/loader.conf</filename>:</para> + + <programlisting>kern.hz=100</programlisting> + + <para>Without this setting, an idle &os; + <application>Parallels</application> guest + OS will use roughly 15% of the CPU of a single + processor &imac;. After this change the usage will be + closer to a mere 5%.</para> + </step> + + <step> + <title>Create a New Kernel Configuration File</title> + + <para>You can remove all of the SCSI, FireWire, and USB + device drivers. <application>Parallels</application> + provides a virtual network + adapter used by the &man.ed.4; driver, so + all other network devices except for + &man.ed.4; and &man.miibus.4; can be + removed from the kernel.</para> + </step> + + <step> + <title>Configure Networking</title> + + <para>The most basic networking setup involves simply + using DHCP to connect your virtual machine to the same + local area network as your host &mac;. This can be + accomplished by adding + <literal>ifconfig_ed0="DHCP"</literal> to + <filename>/etc/rc.conf</filename>. More advanced + networking setups are described in + <xref linkend="advanced-networking"/>.</para> + </step> + </procedure> + </sect3> + </sect2> +<!-- +Deactive/hide this section as the instructions in there do NOT work anymore: +- FreeBSD 7.0 has reached its EOL a long time ago. +- The needed files from www.fsmware.com are not available anymore, as the + server is dead. So it is impossible to follow the instructions in here. + +jkois@FreeBSD.org, 2010-06-18 + + <sect2 id="virtualization-guest-xen"> + <sect2info> + <authorgroup> + <author> + <firstname>Fukang</firstname> + <surname>Chen (Loader)</surname> + <contrib>Contributed by </contrib> + </author> + </authorgroup> + </sect2info> + + <title>&os; with &xen; on Linux</title> + + <para>The <application>&xen;</application> hypervisor is an + open source paravirtualization product which is now + supported by the commercial XenSource company. Guest + operating systems are known as domU domains, and the host + operating system is known as dom0. The first step in + running a virtual &os; instance under Linux is to install + <application>&xen;</application> for Linux dom0. The host + operating system will be a Slackware Linux + distribution.</para> + + <sect3 id="xen-slackware-dom0"> + <title>Setup &xen; 3 on Linux dom0</title> + + <procedure> + <step> + <title>Download &xen; 3.0 from XenSource</title> + + <para>Download <ulink + url="http://bits.xensource.com/oss-xen/release/3.0.4-1/src.tgz/xen-3.0.4_1-src.tgz">xen-3.0.4_1-src.tgz</ulink> + from <ulink + url="http://www.xensource.com/"></ulink>.</para> + </step> + + <step> + <title>Unpack the tarball</title> + + <screen>&prompt.root; <userinput>cd xen-3.0.4_1-src</userinput> +&prompt.root; <userinput>KERNELS="linux-2.6-xen0 linux-2.6-xenU" make world</userinput> +&prompt.root; <userinput>make install</userinput></screen> + + <note> + <para>To re-compile the kernel for dom0:</para> + + <screen>&prompt.root; <userinput>cd xen-3.0.4_1-src/linux-2.6.16.33-xen0</userinput> +&prompt.root; <userinput>make menuconfig</userinput> +&prompt.root; <userinput>make</userinput> +&prompt.root; <userinput>make install</userinput></screen> + + <para>Older version of + <application>&xen;</application> may need to specify + <command>make ARCH=xen menuconfig</command></para> + </note> + </step> + + <step> + <title>Add a menu entry into Grub menu.lst</title> + + <para>Edit <filename>/boot/grub/menu.lst</filename> and + add the following lines:</para> + + <programlisting>title Xen-3.0.4 +root (hd0,0) +kernel /boot/xen-3.0.4-1.gz dom0_mem=262144 +module /boot/vmlinuz-2.6.16.33-xen0 root=/dev/hda1 ro</programlisting> + </step> + + <step> + <title>Reboot your computer into &xen;</title> + + <para>First, edit + <filename>/etc/xen/xend-config.sxp</filename>, and add + the following line:</para> + + <programlisting>(network-script 'network-bridge netdev=eth0')</programlisting> + + <para>Then, we can launch + <application>&xen;</application>:</para> + + <screen>&prompt.root; <userinput>/etc/init.d/xend start</userinput> +&prompt.root; <userinput>/etc/init.d/xendomains start</userinput></screen> + + <para>Our dom0 is running:</para> + + <screen>&prompt.root; <userinput>xm list</userinput> +Name ID Mem VCPUs State Time(s) +Domain-0 0 256 1 r––––– 54452.9</screen> + </step> + </procedure> + </sect3> + + <sect3> + <title>&os; 7-CURRENT domU</title> + + <para>Download the &os; domU kernel for + <application>&xen; 3.0</application> and disk image from + <ulink + url="http://www.fsmware.com/">http://www.fsmware.com/</ulink></para> + + <itemizedlist> + <listitem> + <para><ulink + url="http://www.fsmware.com/xenofreebsd/7.0/download/kernel-current">kernel-current</ulink></para> + </listitem> + + <listitem> + <para><ulink + url="http://www.fsmware.com/xenofreebsd/7.0/download/mdroot-7.0.bz2">mdroot-7.0.bz2</ulink></para> + </listitem> + + <listitem> + <para><ulink + url="http://www.fsmware.com/xenofreebsd/7.0/download/config/xmexample1.bsd">xmexample1.bsd</ulink></para> + </listitem> + </itemizedlist> + + <para>Put the configuration file + <filename>xmexample1.bsd</filename> into + <filename>/etc/xen/</filename> and modify the related + entries about where the kernel and the disk image are + stored. It should look like the following:</para> + + <programlisting>kernel = "/opt/kernel-current" +memory = 256 +name = "freebsd" +vif = [ '' ] +disk = [ 'file:/opt/mdroot-7.0,hda1,w' ] +#on_crash = 'preserve' +extra = "boot_verbose" +extra += ",boot_single" +extra += ",kern.hz=100" +extra += ",vfs.root.mountfrom=ufs:/dev/xbd769a"</programlisting> + + <para>The <filename>mdroot-7.0.bz2</filename> file should + be uncompressed.</para> + + <para>Next, the __xen_guest section in + <filename>kernel-current</filename> needs to be altered to + add the VIRT_BASE that + <application>&xen; 3.0.3</application> requires:</para> + + <screen>&prompt.root; <userinput>objcopy kernel-current -R __xen_guest</userinput> +&prompt.root; <userinput>perl -e 'print "LOADER=generic,GUEST_OS=freebsd,GUEST_VER=7.0,XEN_VER=xen-3.0,BSD_SYMTAB,VIRT_BASE=0xC0000000\x00"' > tmp</userinput> +&prompt.root; <userinput>objcopy kernel-current ––add-section __xen_guest=tmp</userinput></screen> + + <screen>&prompt.root; <userinput>objdump -j __xen_guest -s kernel-current</userinput> + +kernel-current: file format elf32-i386 + +Contents of section __xen_guest: + 0000 4c4f4144 45523d67 656e6572 69632c47 LOADER=generic,G + 0010 55455354 5f4f533d 66726565 6273642c UEST_OS=freebsd, + 0020 47554553 545f5645 523d372e 302c5845 GUEST_VER=7.0,XE + 0030 4e5f5645 523d7865 6e2d332e 302c4253 N_VER=xen-3.0,BS + 0040 445f5359 4d544142 2c564952 545f4241 D_SYMTAB,VIRT_BA + 0050 53453d30 78433030 30303030 3000 SE=0xC0000000. </screen> + + <para>We are, now, ready to create and launch our + domU:</para> + + <screen>&prompt.root; <userinput>xm create /etc/xen/xmexample1.bsd -c</userinput> +Using config file "/etc/xen/xmexample1.bsd". +Started domain freebsd +WARNING: loader(8) metadata is missing! +Copyright (c) 1992-2006 The FreeBSD Project. +Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 +The Regents of the University of California. All rights reserved. +FreeBSD 7.0-CURRENT #113: Wed Jan 4 06:25:43 UTC 2006 + kmacy@freebsd7.gateway.2wire.net:/usr/home/kmacy/p4/freebsd7_xen3/src/sys/i386-xen/compile/XENCONF +WARNING: DIAGNOSTIC option enabled, expect reduced performance. +Xen reported: 1796.927 MHz processor. +Timecounter "ixen" frequency 1796927000 Hz quality 0 +CPU: Intel(R) Pentium(R) 4 CPU 1.80GHz (1796.93-MHz 686-class CPU) + Origin = "GenuineIntel" Id = 0xf29 Stepping = 9 + Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH, + DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE> + Features2=0x4400<CNTX-ID,<b14>> +real memory = 265244672 (252 MB) +avail memory = 255963136 (244 MB) +xc0: <Xen Console> on motherboard +cpu0 on motherboard +Timecounters tick every 10.000 msec +[XEN] Initialising virtual ethernet driver. +xn0: Ethernet address: 00:16:3e:6b:de:3a +[XEN] +Trying to mount root from ufs:/dev/xbd769a +WARNING: / was not properly dismounted +Loading configuration files. +No suitable dump device was found. +Entropy harvesting: interrupts ethernet point_to_point kickstart. +Starting file system checks: +/dev/xbd769a: 18859 files, 140370 used, 113473 free (10769 frags, 12838 blocks, 4.2% fragmentation) +Setting hostname: demo.freebsd.org. +lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 + inet6 ::1 prefixlen 128 + inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 + inet 127.0.0.1 netmask 0xff000000 +Additional routing options:. +Mounting NFS file systems:. +Starting syslogd. +/etc/rc: WARNING: Dump device does not exist. Savecore not run. +ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/X11R6/lib /usr/local/lib +a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout +Starting usbd. +usb: Kernel module not available: No such file or directory +Starting local daemons:. +Updating motd. +Starting sshd. +Initial i386 initialization:. +Additional ABI support: linux. +Starting cron. +Local package initialization:. +Additional TCP options:. +Starting background file system checks in 60 seconds. + +Sun Apr 1 02:11:43 UTC 2007 + +FreeBSD/i386 (demo.freebsd.org) (xc0) + +login: </screen> + + <para>The domU should run the &os; 7.0-CURRENT + kernel:</para> + + <screen>&prompt.root; <userinput>uname -a</userinput> +FreeBSD demo.freebsd.org 7.0-CURRENT FreeBSD 7.0-CURRENT #113: Wed Jan 4 06:25:43 UTC 2006 +kmacy@freebsd7.gateway.2wire.net:/usr/home/kmacy/p4/freebsd7_xen3/src/sys/i386-xen/compile/XENCONF i386</screen> + + <para>The network can now be configured on the domU. The + &os; domU will use a specific interface called + <devicename>xn0</devicename>:</para> + + <screen>&prompt.root; <userinput>ifconfig xn0 10.10.10.200 netmask 255.0.0.0</userinput> +&prompt.root; <userinput>ifconfig</userinput> +xn0: flags=843<UP,BROADCAST,RUNNING,SIMPLEX> mtu 1500 + inet 10.10.10.200 netmask 0xff000000 broadcast 10.255.255.255 + ether 00:16:3e:6b:de:3a +lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 + inet6 ::1 prefixlen 128 + inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 + inet 127.0.0.1 netmask 0xff000000 </screen> + + <para>On dom0 Slackware, some + <application>&xen;</application> dependant network + interfaces should show up:</para> + + <screen>&prompt.root; <userinput>ifconfig</userinput> +eth0 Link encap:Ethernet HWaddr 00:07:E9:A0:02:C2 + inet addr:10.10.10.130 Bcast:0.0.0.0 Mask:255.0.0.0 + UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 + RX packets:815 errors:0 dropped:0 overruns:0 frame:0 + TX packets:1400 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:204857 (200.0 KiB) TX bytes:129915 (126.8 KiB) + +lo Link encap:Local Loopback + inet addr:127.0.0.1 Mask:255.0.0.0 + UP LOOPBACK RUNNING MTU:16436 Metric:1 + RX packets:99 errors:0 dropped:0 overruns:0 frame:0 + TX packets:99 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:9744 (9.5 KiB) TX bytes:9744 (9.5 KiB) + +peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF + UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 + RX packets:1853349 errors:0 dropped:0 overruns:0 frame:0 + TX packets:952923 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:1000 + RX bytes:2432115831 (2.2 GiB) TX bytes:86528526 (82.5 MiB) + Base address:0xc000 Memory:ef020000-ef040000 + +vif0.1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF + UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 + RX packets:1400 errors:0 dropped:0 overruns:0 frame:0 + TX packets:815 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:129915 (126.8 KiB) TX bytes:204857 (200.0 KiB) + +vif1.0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF + UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 + RX packets:3 errors:0 dropped:0 overruns:0 frame:0 + TX packets:2 errors:0 dropped:157 overruns:0 carrier:0 + collisions:0 txqueuelen:1 + RX bytes:140 (140.0 b) TX bytes:158 (158.0 b) + +xenbr1 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF + UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 + RX packets:4 errors:0 dropped:0 overruns:0 frame:0 + TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 + collisions:0 txqueuelen:0 + RX bytes:112 (112.0 b) TX bytes:0 (0.0 b)</screen> + + <screen>&prompt.root; <userinput>brctl show</userinput> +bridge name bridge id STP enabled interfaces +xenbr1 8000.feffffffffff no vif0.1 + peth0 + vif1.0</screen> + </sect3> + </sect2> +--> + <sect2 id="virtualization-guest-virtualpc"> + <title>Virtual PC on &windows;</title> + + <para><application>Virtual PC</application> for &windows; is a + µsoft; software product available for free download. + See <ulink + url="http://www.microsoft.com/windows/downloads/virtualpc/sysreq.mspx"> + system requirements</ulink>. Once <application> Virtual PC + </application> has been installed on µsoft.windows;, + the user must configure a virtual machine and then install + the desired guest operating system.</para> + + <sect3 id="virtualization-guest-virtualpc-install"> + <title>Installing &os; on Virtual + PC/µsoft.windows;</title> + + <para>The first step in installing &os; on + µsoft.windows; /<application>Virtual PC + </application> is to create a new virtual machine for + installing &os;. Select <guimenuitem>Create a virtual + machine</guimenuitem> when prompted:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd1"/> + </imageobject> + </mediaobject> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd2"/> + </imageobject> + </mediaobject> + + <para>And select <guimenuitem>Other</guimenuitem> as the + <guimenuitem>Operating system</guimenuitem> when + prompted:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd3"/> + </imageobject> + </mediaobject> + + <para>Then, choose a reasonable amount of disk and memory + depending on your plans for this virtual &os; + instance. 4GB of disk space and 512MB of RAM work well + for most uses of &os; under + <application>Virtual PC</application>:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd4"/> + </imageobject> + </mediaobject> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd5"/> + </imageobject> + </mediaobject> + + <para>Save and finish the configuration:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd6"/> + </imageobject> + </mediaobject> + + <para>Select your &os; virtual machine and click + <guimenu>Settings</guimenu>, then set the type of networking + and a network interface:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd7"/> + </imageobject> + </mediaobject> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd8"/> + </imageobject> + </mediaobject> + + <para>After your &os; virtual machine has been created, you + will need to install &os; on it. This is best done with an + official &os; CDROM or with an ISO image downloaded from an + official FTP site. When you have the appropriate ISO image + on your local &windows; filesystem or a CDROM in your CD + drive, double click on your &os; virtual machine to boot. + Then, click <guimenu>CD</guimenu> and choose + <guimenu>Capture ISO Image...</guimenu> on + <application>Virtual PC</application> window. This will + bring up a window that allows you to associate the CDROM + drive in your virtual machine with an ISO file on disk or + with your real CDROM drive.</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd9"/> + </imageobject> + </mediaobject> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd10"/> + </imageobject> + </mediaobject> + + <para>Once you have made this association with your CDROM + source, reboot your &os; virtual machine as normal by + clicking the <guimenu>Action</guimenu> and + <guimenu>Reset</guimenu>. + <application>Virtual PC</application> will reboot with a + special BIOS that first checks if you have a CDROM just as a + normal BIOS would do.</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd11"/> + </imageobject> + </mediaobject> + + <para>In this case it will find the &os; installation media + and begin a normal <application>sysinstall</application> + based installation as described in <xref linkend="install"/>. + You may install, but do not attempt to configure X11 at this + time.</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd12"/> + </imageobject> + </mediaobject> + + <para>When you have finished the installation, remember to + eject CDROM or release ISO image. Finally, reboot into your + newly installed &os; virtual machine.</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/virtualpc-freebsd13"/> + </imageobject> + </mediaobject> + </sect3> + + <sect3 id="virtualization-guest-virtualpc-configure"> + <title>Configuring &os; on µsoft.windows;/Virtual + PC</title> + + <para>After &os; has been successfully installed on + µsoft.windows; with <application>Virtual PC + </application>, there are a number of configuration + steps that can be taken to optimize the system for + virtualized operation.</para> + + <procedure> + <step> + <title>Set Boot Loader Variables</title> + + <para>The most important step is to reduce the + <option>kern.hz</option> tunable to reduce the CPU + utilization of &os; under the + <application>Virtual PC</application> environment. + This is accomplished by adding the following line to + <filename> /boot/loader.conf</filename>:</para> + + <programlisting>kern.hz=100</programlisting> + + <para>Without this setting, an idle &os; + <application>Virtual PC</application> guest OS will + use roughly 40% of the CPU of a single processor + computer. After this change the usage will be + closer to a mere 3%.</para> + </step> + + <step> + <title>Create a New Kernel Configuration File</title> + + <para>You can remove all of the SCSI, FireWire, and USB + device drivers. <application>Virtual PC</application> + provides a virtual network adapter used by the + &man.de.4; driver, so all other network devices except + for &man.de.4; and &man.miibus.4; can be removed from + the kernel.</para> + </step> + + <step> + <title>Configure Networking</title> + + <para>The most basic networking setup involves simply + using DHCP to connect your virtual machine to the same + local area network as your host µsoft.windows;. + This can be accomplished by adding + <literal>ifconfig_de0="DHCP"</literal> to + <filename>/etc/rc.conf</filename>. More advanced + networking setups are described in + <xref linkend="advanced-networking"/>.</para> + </step> + </procedure> + </sect3> + </sect2> + + <sect2 id="virtualization-guest-vmware"> + <title>VMware on MacOS</title> + + <para><application>VMware Fusion</application> for &mac; is a + commercial software product available for &intel; based + &apple; &mac; computers running &macos; 10.4.9 or higher. + &os; is a fully supported guest operating system. Once + <application>VMware Fusion</application> has been + installed on &macos; X, the user must configure a virtual + machine and then install the desired guest operating + system.</para> + + <sect3 id="virtualization-guest-vmware-install"> + <title>Installing &os; on VMware/&macos; X</title> + + <para>The first step is to start VMware Fusion, the Virtual + Machine Library will load. Click "New" to create the + VM:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd01"/> + </imageobject> + </mediaobject> + + <para>This will load the New Virtual Machine Assistant to help + you create the VM, click Continue to proceed:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd02"/> + </imageobject> + </mediaobject> + + <para>Select <guimenuitem>Other</guimenuitem> as the + <guimenuitem>Operating System</guimenuitem> and + <guimenuitem>&os;</guimenuitem> or + <guimenuitem>&os; 64-bit</guimenuitem>, depending on if + you want 64-bit support, as the <guimenu>Version</guimenu> + when prompted:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd03"/> + </imageobject> + </mediaobject> + + <para>Choose the Name of the VM Image and the Directory where + you would like it saved:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd04"/> + </imageobject> + </mediaobject> + + <para>Choose the size of the Virtual Hard Disk for the + VM:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd05"/> + </imageobject> + </mediaobject> + + <para>Choose the method you would like to install the VM, + either from an ISO image or from a CD:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd06"/> + </imageobject> + </mediaobject> + + <para>Once you click Finish, the VM will boot:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd07"/> + </imageobject> + </mediaobject> + + <para>Install &os; like you normally would, or by following + the directions in <xref linkend="install"/>:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd08"/> + </imageobject> + </mediaobject> + + <para>Once the install is complete you can modify the settings + of the VM, such as Memory Usage:</para> + + <note> + <para>The System Hardware settings of the VM cannot be + modified while the VM is running.</para> + </note> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd09"/> + </imageobject> + </mediaobject> + + <para>The number of CPUs the VM will have access to:</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd10"/> + </imageobject> + </mediaobject> + + <para>The status of the CD-Rom Device. Normally you can + disconnect the CD-Rom/ISO from the VM if you will not be + needing it anymore.</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd11"/> + </imageobject> + </mediaobject> + + <para>The last thing to change is how the VM will connect to + the Network. If you want to allow connections to the VM + from other machines besides the Host, make sure you choose + the <guimenuitem>Connect directly to the physical network + (Bridged)</guimenuitem>. Otherwise <guimenuitem>Share the + host's internet connection (NAT)</guimenuitem> is + preferred so that the VM can have access to the Internet, + but the network cannot access the VM.</para> + + <mediaobject> + <imageobject> + <imagedata fileref="virtualization/vmware-freebsd12"/> + </imageobject> + </mediaobject> + + <para>After you have finished modifying the settings, boot the + newly installed &os; virtual machine.</para> + </sect3> + + <sect3 id="virtualization-guest-vmware-configure"> + <title>Configuring &os; on &macos; X/VMware</title> + + <para>After &os; has been successfully installed on &macos; X + with <application>VMware</application>, there are a number + of configuration steps that can be taken to optimize the + system for virtualized operation.</para> + + <procedure> + <step> + <title>Set Boot Loader Variables</title> + + <para>The most important step is to reduce the + <option>kern.hz</option> tunable to reduce the CPU + utilization of &os; under the + <application>VMware</application> environment. This is + accomplished by adding the following line to + <filename>/boot/loader.conf</filename>:</para> + + <programlisting>kern.hz=100</programlisting> + + <para>Without this setting, an idle &os; + <application>VMware</application> guest + OS will use roughly 15% of the CPU of a single + processor &imac;. After this change the usage will be + closer to a mere 5%.</para> + </step> + + <step> + <title>Create a New Kernel Configuration File</title> + + <para>You can remove all of the FireWire, and USB device + drivers. <application>VMware</application> provides a + virtual network adapter used by the &man.em.4; driver, + so all other network devices except for &man.em.4; can + be removed from the kernel.</para> + </step> + + <step> + <title>Configure Networking</title> + + <para>The most basic networking setup involves simply + using DHCP to connect your virtual machine to the + same local area network as your host &mac;. This + can be accomplished by adding + <literal>ifconfig_em0="DHCP"</literal> to + <filename>/etc/rc.conf</filename>. More advanced + networking setups are described in + <xref linkend="advanced-networking"/>.</para> + </step> + </procedure> + </sect3> + </sect2> + + <sect2 id="virtualization-guest-virtualbox-guest-additions"> + <title>&virtualbox; Guest Additions on a &os; Guest</title> + + <para>The <application>&virtualbox;</application> guest + additions provide support for:</para> + + <itemizedlist> + <listitem> + <para>Clipboard sharing</para> + </listitem> + + <listitem> + <para>Mouse pointer integration</para> + </listitem> + + <listitem> + <para>Host time synchronization</para> + </listitem> + + <listitem> + <para>Window scaling</para> + </listitem> + + <listitem> + <para>Seamless mode</para> + </listitem> + </itemizedlist> + + <note> + <para>The following commands are run in the &os; guest.</para> + </note> + + <para>First, install the <filename + role="package">emulators/virtualbox-ose-additions</filename> + package in the &os; guest.</para> + + <screen>&prompt.root; <userinput>cd /usr/ports/emulators/virtualbox-ose-additions && make install clean</userinput></screen> + + <para>Add these lines to + <filename>/etc/rc.conf</filename>:</para> + + <programlisting>vboxguest_enable="YES" +vboxservice_enable="YES"</programlisting> + + <para>If &man.ntpd.8; or &man.ntpdate.8; will be used, host time + synchronization should be disabled:</para> + + <programlisting>vboxservice_flags="--disable-timesync"</programlisting> + + <para>The <literal>vboxvideo_drv</literal> should be recognized + by <command>Xorg -configure</command>. If not, modify + <filename>xorg.conf</filename> for the + <application>&virtualbox;</application> video card:</para> + + <programlisting>Section "Device" + ### Available Driver options are:- + ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", + ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" + ### [arg]: arg optional + Identifier "Card0" + Driver "vboxvideo" + VendorName "InnoTek Systemberatung GmbH" + BoardName "VirtualBox Graphics Adapter" + BusID "PCI:0:2:0" +EndSection</programlisting> + + <para>To use <literal>vboxmouse_drv</literal>, adjust the mouse + section in your <filename>xorg.conf</filename>:</para> + + <programlisting>Section "InputDevice" + Identifier "Mouse0" + Driver "vboxmouse" +EndSection</programlisting> + + <para><acronym>HAL</acronym> users should create this file at + <filename>/usr/local/etc/hal/fdi/policy/90-vboxguest.fdi</filename> + or copy it from + <filename>/usr/local/share/hal/fdi/policy/10osvendor/90-vboxguest.fdi</filename>:</para> + + <programlisting><?xml version="1.0" encoding="utf-8"?> +<!-- +# Sun VirtualBox +# Hal driver description for the vboxmouse driver +# $Id: chapter.xml,v 1.33 2012-03-17 04:53:52 eadler Exp $ + + Copyright (C) 2008-2009 Sun Microsystems, Inc. + + This file is part of VirtualBox Open Source Edition (OSE, as + available from http://www.virtualbox.org. This file is free software; + you can redistribute it and/or modify it under the terms of the GNU + General Public License (GPL) as published by the Free Software + Foundation, in version 2 as it comes in the "COPYING" file of the + VirtualBox OSE distribution. VirtualBox OSE is distributed in the + hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. + + Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa + Clara, CA 95054 USA or visit http://www.sun.com if you need + additional information or have any questions. +--> +<deviceinfo version="0.2"> + <device> + <match key="info.subsystem" string="pci"> + <match key="info.product" string="VirtualBox guest Service"> + <append key="info.capabilities" type="strlist">input</append> + <append key="info.capabilities" type="strlist">input.mouse</append> + <merge key="input.x11_driver" type="string">vboxmouse</merge> + <merge key="input.device" type="string">/dev/vboxguest</merge> + </match> + </match> + </device> +</deviceinfo></programlisting> + </sect2> + </sect1> + + <sect1 id="virtualization-host"> + <title>&os; as a Host OS</title> + + <para>For a number of years, &os; was not officially supported as + a host OS by any of the available virtualization solutions. + Some people were using older and mostly obsolete versions of + <application>VMware</application> (like + <filename role="package">emulators/vmware3</filename>), which + utilized the &linux; binary compatibility layer. Shortly after + the release of &os; 7.2, Sun's + <application>&virtualbox;</application> appeared in the + Ports Collection as a native &os; program.</para> + + <para><application>&virtualbox;</application> is an actively + developed, complete virtualization package, that is available + for most operating systems including &windows;, &macos;, &linux; + and &os;. It is equally capable at running &windows; or &unix; + like guests. It is released as open source software, but with + closed-source components available in a separate extension pack. + These components include support for USB 2.0 devices, among others. + More information may be found on the <quote>Downloads</quote> page + of the <application>&virtualbox;</application> wiki, at + <ulink url="http://www.virtualbox.org/wiki/Downloads"></ulink>. + Currently, these extensions are not available for &os;.</para> + + <sect2 id="virtualization-virtualbox-install"> + <title>Installing &virtualbox;</title> + + <para><application>&virtualbox;</application> is available as a + &os; port in + <filename role="package">emulators/virtualbox-ose</filename>. + As &virtualbox; is very actively developed, make sure your + ports tree is up to date before installing. Install using + these commands:</para> + + <screen>&prompt.root; <userinput>cd /usr/ports/emulators/virtualbox-ose</userinput> +&prompt.root; <userinput>make install clean</userinput></screen> + + <para>One useful option in the configuration dialog is the + <literal>GuestAdditions</literal> suite of programs. These + provide a number of useful features in guest operating + systems, like mouse pointer integration (allowing the mouse to + be shared between host and guest without the need to press a + special keyboard shortcut to switch) and faster video + rendering, especially in &windows; guests. The guest + additions are available in the <guimenu>Devices</guimenu> + menu, after the installation of the guest OS is + finished.</para> + + <para>A few configuration changes are needed before + <application>&virtualbox;</application> is started for the + first time. The port installs a kernel module in + <filename class="directory">/boot/modules</filename> which + must be loaded into the running kernel:</para> + + <screen>&prompt.root; <userinput>kldload vboxdrv</userinput></screen> + + <para>To ensure the module always gets loaded after a reboot, + add the following line to + <filename>/boot/loader.conf</filename>:</para> + + <programlisting>vboxdrv_load="YES"</programlisting> + + <para>To use the kernel modules that allow bridged or host-only + networking, add the following to + <filename>/etc/rc.conf</filename> and reboot the + computer:</para> + + <programlisting>vboxnet_enable="YES"</programlisting> + + <para>The <groupname>vboxusers</groupname> group is created + during installation of + <application>&virtualbox;</application>. All users that need + access to <application>&virtualbox;</application> will have to + be added as members of this group. The <command>pw</command> + command may be used to add new members:</para> + + <screen>&prompt.root; <userinput>pw groupmod vboxusers -m <replaceable>yourusername</replaceable></userinput></screen> + + <para>The default permissions for + <filename class="devicefile">/dev/vboxnetctl</filename> are + restrictive and need to be changed for bridged + networking.</para> + + <para>To test it temporarily:</para> + + <screen>&prompt.root; <userinput>chown root:vboxusers /dev/vboxnetctl</userinput> +&prompt.root; <userinput>chmod 0660 /dev/vboxnetctl</userinput></screen> + + <para>To make the permissions change permanent, add these + lines to <filename>/etc/devfs.conf</filename>:</para> + + <programlisting>own vboxnetctl root:vboxusers +perm vboxnetctl 0660</programlisting> + + <para>To launch <application>&virtualbox;</application>, either + select the <guimenuitem>Sun VirtualBox</guimenuitem> item from + the graphic environment's menu, or type the following in a + terminal:</para> + + <screen>&prompt.user; <userinput>VirtualBox</userinput></screen> + + <para>For more information on configuring and using + <application>&virtualbox;</application>, please visit the + official website at + <ulink url="http://www.virtualbox.org"></ulink>. As the &os; + port is very recent, it is under heavy development. For the + latest information and troubleshooting instructions, please + visit the relevant page in the &os; wiki, at <ulink + url="http://wiki.FreeBSD.org/VirtualBox"></ulink>.</para> + </sect2> + + <sect2 id="virtualization-virtualbox-usb-support"> + <title>&virtualbox; USB Support</title> + + <note> + <para>These steps require VirtualBox 4.0.0 or later.</para> + </note> + + <para>In order to be able to read and write to USB devices, + users need to be members of the operator group:</para> + + <screen>&prompt.root; <userinput>pw groupmod operator -m <replaceable>jerry</replaceable></userinput></screen> + + <para>Then, add the following to + <filename>/etc/devfs.rules</filename> (create it if it does + not exist yet):</para> + + <programlisting>[system=10] +add path 'usb/*' mode 0660 group operator</programlisting> + + <para>To load these new rules, add the following to + <filename>/etc/rc.conf</filename>:</para> + + <programlisting>devfs_system_ruleset="system"</programlisting> + + <para>Then, restart devfs:</para> + + <screen>&prompt.root; <userinput>/etc/rc.d/devfs restart</userinput></screen> + + <para>USB can now be enabled in the guest operating system. USB + devices should be visible in the &virtualbox; + preferences.</para> + </sect2> + + <sect2 id="virtualization-virtualbox-host-dvd-cd-access"> + <title>&virtualbox; Host DVD/CD Access</title> + + <para>The <command>atapicam</command> kernel module needs to be + loaded by adding the following line to + <filename>/boot/loader.conf</filename>:</para> + + <programlisting>atapicam_load="YES"</programlisting> + + <para><acronym>HAL</acronym> needs to run for + <application>&virtualbox;</application> DVD/CD functions to + work, so enable it in <filename>/etc/rc.conf</filename> and + start it (if it is not already running):</para> + + <programlisting>hald_enable="YES"</programlisting> + + <screen>&prompt.root; <userinput>/usr/local/etc/rc.d/hald start</userinput></screen> + + <para>In order for users to be able to use + <application>&virtualbox;</application> DVD/CD functions, they + need access to + <filename class="devicefile">/dev/xpt0</filename>, <filename + class="devicefile">/dev/cd<replaceable>N</replaceable></filename>, + and <filename + class="devicefile">/dev/pass<replaceable>N</replaceable></filename>. + Add the following lines to + <filename>/etc/devfs.conf</filename>:</para> + + <programlisting>perm cd0 0600 +perm xpt0 0660 +perm pass0 0660</programlisting> + </sect2> + +<!-- + Note: There is no working/end-user ready Xen support for FreeBSD as of 07-2010. + Hide all information regarding Xen under FreeBSD. + + <sect2 id="virtualization-other"> + <title>Other Virtualization Options</title> + + <para>There is ongoing work in getting + <application>&xen;</application> + to work as a host environment on &os;.</para> + </sect2> +--> + </sect1> +</chapter> |