ia64/xen-unstable

changeset 2856:82a6612c741f

bitkeeper revision 1.1159.155.2 (41891d1ecl30mNpXIuu9P9DPMi817Q)

more upates -getting there.. release imminent bwahaha
author smh22@tempest.cl.cam.ac.uk
date Wed Nov 03 18:02:06 2004 +0000 (2004-11-03)
parents 0d263b6cd810
children ab134f4d418d 23cadd2f9146 61d139354129
files docs/src/user.tex
line diff
     1.1 --- a/docs/src/user.tex	Wed Nov 03 17:25:10 2004 +0000
     1.2 +++ b/docs/src/user.tex	Wed Nov 03 18:02:06 2004 +0000
     1.3 @@ -56,13 +56,13 @@ Contributions of material, suggestions a
     1.4  \renewcommand{\floatpagefraction}{.8}
     1.5  \setstretch{1.1}
     1.6  
     1.7 -\newcommand{\path}[1]{{\tt #1}}
     1.8 +\newcommand{\path}[1]{{\small {\tt #1}}}
     1.9  
    1.10  
    1.11  \part{Introduction and Tutorial}
    1.12  \chapter{Introduction}
    1.13  
    1.14 -Xen is a { \em paravirtualising } virtual machine monitor (VMM), or
    1.15 +Xen is a {\em paravirtualising} virtual machine monitor (VMM), or
    1.16  `hypervisor', for the x86 processor architecture.  Xen can securely
    1.17  execute multiple virtual machines on a single physical system with
    1.18  close-to-native performance.  The virtual machine technology
    1.19 @@ -171,7 +171,7 @@ multiple independent clients to run thei
    1.20  applications in an environment providing protection, resource
    1.21  isolation and accounting.  The project web page contains further
    1.22  information along with pointers to papers and technical reports:
    1.23 -{\tt http://www.cl.cam.ac.uk/xeno}
    1.24 +{\small {\tt http://www.cl.cam.ac.uk/xeno}}
    1.25  
    1.26  Xen has since grown into a fully-fledgd project in its own right,
    1.27  enabling us to investigate interesting research issues regarding the
    1.28 @@ -291,52 +291,61 @@ following:
    1.29        unprivileged virtual machines.
    1.30  \end{itemize}
    1.31  
    1.32 -Inspect the Makefile if you want to see what goes on during a build.
    1.33 -Building Xen and the tools is straightforward, but XenLinux is more
    1.34 -complicated.  The makefile needs a `pristine' Linux kernel tree to which
    1.35 -it will then add the Xen architecture files.  You can tell the
    1.36 -makefile the location of the appropriate Linux compressed tar file by
    1.37 -setting the LINUX\_SRC environment variable, e.g. \\
    1.38 -\verb!# LINUX_SRC=/tmp/linux-2.6.9.tar.bz2 make world! \\ or by
    1.39 -placing the tar file somewhere in the search path of {\tt
    1.40 -LINUX\_SRC\_PATH} which defaults to `{\tt .:..}'.  If the makefile
    1.41 -can't find a suitable kernel tar file it attempts to download it from
    1.42 -kernel.org (this won't work if you're behind a firewall).
    1.43 +%% Inspect the Makefile if you want to see what goes on during a build.
    1.44 +%% Building Xen and the tools is straightforward, but XenLinux is more
    1.45 +%% complicated.  The makefile needs a `pristine' Linux kernel tree to which
    1.46 +%% it will then add the Xen architecture files.  You can tell the
    1.47 +%% makefile the location of the appropriate Linux compressed tar file by
    1.48 +%% setting the LINUX\_SRC environment variable, e.g. \\
    1.49 +%% \verb!# LINUX_SRC=/tmp/linux-2.6.9.tar.bz2 make world! \\ or by
    1.50 +%% placing the tar file somewhere in the search path of {\tt
    1.51 +%% LINUX\_SRC\_PATH} which defaults to `{\tt .:..}'.  If the makefile
    1.52 +%% can't find a suitable kernel tar file it attempts to download it from
    1.53 +%% kernel.org (this won't work if you're behind a firewall).
    1.54  
    1.55 -After untaring the pristine kernel tree, the makefile uses the {\tt
    1.56 -mkbuildtree} script to add the Xen patches to the kernel.  It then
    1.57 -builds two different XenLinux images, one with a `-xen0' extension
    1.58 +%% After untaring the pristine kernel tree, the makefile uses the {\tt
    1.59 +%% mkbuildtree} script to add the Xen patches to the kernel. 
    1.60 +
    1.61 +After the build has completed you should have a top-level 
    1.62 +directory called {\tt dist/} in which all resulting targets 
    1.63 +will be placed; of particular interest are the two kernels 
    1.64 +XenLinux kernel images, one with a `-xen0' extension
    1.65  which contains hardware device drivers and drivers for Xen's virtual
    1.66  devices, and one with a `-xenU' extension that just contains the
    1.67 -virtual ones.
    1.68 +virtual ones. These are found in \path{dist/install/boot/} along
    1.69 +with the image for Xen itself and the configuration files used
    1.70 +during the build. 
    1.71  
    1.72 -The procedure is similar to build the Linux 2.4 port: \\
    1.73 -\verb!# LINUX_SRC=/path/to/linux2.4/source make linux24!
    1.74 +%% The procedure is similar to build the Linux 2.4 port: \\
    1.75 +%% \verb!# LINUX_SRC=/path/to/linux2.4/source make linux24!
    1.76  
    1.77 -The NetBSD port can be built using: \\ \verb!# make netbsd! \\ The
    1.78 +The NetBSD port can be built using: \\ \verb!# make netbsd20! \\ The
    1.79  NetBSD port is built using a snapshot of the netbsd-2-0 cvs branch.
    1.80  The snapshot is downloaded as part of the build process, if it is not
    1.81  yet present in the {\tt NETBSD\_SRC\_PATH} search path.  The build
    1.82  process also downloads a toolchain which includes all the tools
    1.83  necessary to build the NetBSD kernel under Linux.
    1.84  
    1.85 -If you have an SMP machine you may wish to give the {\tt '-j4'}
    1.86 -argument to make to get a parallel build.
    1.87 +% If you have an SMP machine you may wish to give the {\tt '-j4'}
    1.88 +% argument to make to get a parallel build.
    1.89 +
    1.90  
    1.91  If you have an existing Linux kernel configuration that you would like
    1.92  to use for domain 0, you should copy it to
    1.93 -install/boot/config-2.6.9-xen0.  During the first build, you may be
    1.94 -asked about some Xen-specific options.  We advise accepting the
    1.95 -defaults for these options.
    1.96 +\path{dist/install/boot/config-2.6.9-xen0}; for example, certain
    1.97 +distributions require a kernel with either {\tt udev} or {\tt devfs}
    1.98 +support at boot time.  During the first build, you may be prompted with
    1.99 +some Xen-specific options.  We advise accepting the defaults for
   1.100 +these options.
   1.101  
   1.102 -\framebox{\parbox{5in}{
   1.103 -{\bf Distro specific:} \\
   1.104 -{\it Gentoo} --- if not using udev (most installations, currently), you'll need
   1.105 -to enable devfs and devfs mount at boot time in the xen0 config.
   1.106 -}}
   1.107 +%% \framebox{\parbox{5in}{
   1.108 +%% {\bf Distro specific:} \\
   1.109 +%% {\it Gentoo} --- if not using udev (most installations, currently), you'll need
   1.110 +%% to enable devfs and devfs mount at boot time in the xen0 config.
   1.111 +%% }}
   1.112  
   1.113  The files produced by the build process are stored under the
   1.114 -\path{install/} directory.  To install them in their default
   1.115 +\path{dist/install/} directory.  To install them in their default
   1.116  locations, do: \\
   1.117  \verb_# make install_
   1.118  
   1.119 @@ -344,12 +353,12 @@ Alternatively, users with special instal
   1.120  to install them manually by copying the files to their appropriate
   1.121  destinations.
   1.122  
   1.123 -Files in \path{install/boot/} include:
   1.124 -\begin{itemize}
   1.125 -\item \path{install/boot/xen.gz} The Xen 'kernel'
   1.126 -\item \path{install/boot/vmlinuz-2.6.9-xen0}  Domain 0 XenLinux kernel
   1.127 -\item \path{install/boot/vmlinuz-2.6.9-xenU}  Unprivileged XenLinux kernel
   1.128 -\end{itemize}
   1.129 +%% Files in \path{install/boot/} include:
   1.130 +%% \begin{itemize}
   1.131 +%% \item \path{install/boot/xen.gz} The Xen 'kernel'
   1.132 +%% \item \path{install/boot/vmlinuz-2.6.9-xen0}  Domain 0 XenLinux kernel
   1.133 +%% \item \path{install/boot/vmlinuz-2.6.9-xenU}  Unprivileged XenLinux kernel
   1.134 +%% \end{itemize}
   1.135  
   1.136  The difference between the two Linux kernels that are built is due to
   1.137  the configuration file used for each.  The "U" suffixed unprivileged
   1.138 @@ -359,7 +368,7 @@ non-privileged domains.  The `0' suffixe
   1.139  used to boot the system, as well as in driver domains and unprivileged
   1.140  domains.
   1.141  
   1.142 -The \path{install/boot} directory will also contain the config files
   1.143 +The \path{dist/install/boot} directory will also contain the config files
   1.144  used for building the XenLinux kernels, and also versions of Xen and
   1.145  XenLinux kernels that contain debug symbols (\path{xen-syms} and
   1.146  \path{vmlinux-syms-2.6.9-xen0}) which are essential for interpreting crash
   1.147 @@ -368,6 +377,9 @@ you post on the mailing list.
   1.148  
   1.149  \section{Configuration}
   1.150  
   1.151 +Once you have built and installed the Xen distribution, it is 
   1.152 +simple to prepare the machine for booting and running Xen. 
   1.153 +
   1.154  \subsection{GRUB Configuration}
   1.155  
   1.156  An entry should be added to \path{grub.conf} (often found under
   1.157 @@ -375,62 +387,97 @@ An entry should be added to \path{grub.c
   1.158  This file is sometimes called \path{menu.lst}, depending on your
   1.159  distribution.  The entry should look something like the following:
   1.160  
   1.161 +{\small
   1.162  \begin{verbatim}
   1.163  title Xen 2.0 / XenLinux 2.6.9
   1.164 -  kernel /boot/xen.gz dom0_mem=131072 com1=115200,8n1
   1.165 -  module /boot/vmlinuz-2.6.9-xen0 root=/dev/sda4 ro console=tty0 console=ttyS0
   1.166 +  kernel /boot/xen.gz dom0_mem=131072
   1.167 +  module /boot/vmlinuz-2.6.9-xen0 root=/dev/sda4 ro console=tty0
   1.168  \end{verbatim}
   1.169 +}
   1.170  
   1.171 -The first line of the configuration (kernel...) tells GRUB where to
   1.172 -find Xen itself and what boot parameters should be passed to it (in
   1.173 -this case, setting domain 0's memory allocation and the settings for
   1.174 -the serial port).
   1.175 +The kernel line tells GRUB where to find Xen itself and what boot
   1.176 +parameters should be passed to it (in this case, setting domain 0's
   1.177 +memory allocation and the settings for the serial port). For more
   1.178 +details on the various Xen boot parameters see Section~\ref{s:xboot}. 
   1.179  
   1.180 -The second line of the configuration describes the location of the
   1.181 +The module line of the configuration describes the location of the
   1.182  XenLinux kernel that Xen should start and the parameters that should
   1.183  be passed to it (these are standard Linux parameters, identifying the
   1.184  root device and specifying it be initially mounted read only and
   1.185  instructing that console output be sent both to the screen and to the
   1.186 -serial port).
   1.187 +serial port). Some distributions such as SUSE do not require the 
   1.188 +{\small {\tt ro}} parameter. 
   1.189  
   1.190 -If you want to use an initrd, just add another {\tt module} line to
   1.191 +%% \framebox{\parbox{5in}{
   1.192 +%% {\bf Distro specific:} \\
   1.193 +%% {\it SuSE} --- Omit the {\tt ro} option from the XenLinux kernel
   1.194 +%% command line, since the partition won't be remounted rw during boot.
   1.195 +%% }}
   1.196 +
   1.197 +
   1.198 +If you want to use an initrd, just add another {\small {\tt module}} line to
   1.199  the configuration, as usual:
   1.200 +{\small
   1.201  \begin{verbatim}
   1.202    module /boot/my_initrd.gz
   1.203  \end{verbatim}
   1.204 +}
   1.205  
   1.206  As always when installing a new kernel, it is recommended that you do
   1.207 -not remove the original contents of \path{menu.lst} --- you may want
   1.208 -to boot up with your old Linux kernel in future, particularly if you
   1.209 +not delete existing menu options from \path{menu.lst} --- you may want
   1.210 +to boot your old Linux kernel in future, particularly if you
   1.211  have problems.
   1.212  
   1.213 -\framebox{\parbox{5in}{
   1.214 -{\bf Distro specific:} \\
   1.215 -{\it SuSE} --- Omit the {\tt ro} option from the XenLinux kernel
   1.216 -command line, since the partition won't be remounted rw during boot.
   1.217 -}}
   1.218 +
   1.219 +\subsection{Serial Console (optional)}
   1.220 +
   1.221 +%%   kernel /boot/xen.gz dom0_mem=131072 com1=115200,8n1
   1.222 +%%   module /boot/vmlinuz-2.6.9-xen0 root=/dev/sda4 ro 
   1.223 +
   1.224 +
   1.225 +In order to configure Xen serial console output, it is necessary to add 
   1.226 +an boot option to your GRUB config; e.g. replace the above kernel line 
   1.227 +with: 
   1.228 +\begin{quote}
   1.229 +{\small
   1.230 +\begin{verbatim}
   1.231 +   kernel /boot/xen.gz dom0_mem=131072 com1=115200,8n1
   1.232 +\end{verbatim}}
   1.233 +\end{quote} 
   1.234  
   1.235 -\subsection{Serial Console}
   1.236 +This configures Xen to output on COM1 at 115,200 baud, 8 data bits, 
   1.237 +1 stop bit and no parity. Modify these parameters for your set up. 
   1.238 +
   1.239 +One can also configure XenLinux to share the serial console; to 
   1.240 +achieve this append ``\path{console=ttyS0}'' to your 
   1.241 +module line. 
   1.242 +
   1.243  
   1.244 -In order to configure serial console output, it is necessary to add a
   1.245 -line into \path{/etc/inittab}.  The XenLinux console driver is
   1.246 -designed to make this procedure the same as configuring a normal
   1.247 -serial console.  Add the line:
   1.248 +If you wish to be able to log in over the XenLinux serial console it
   1.249 +is necessary to add a line into \path{/etc/inittab}, just as per 
   1.250 +regular Linux. Simply add the line:
   1.251 +\begin{quote}
   1.252 +{\small 
   1.253 +{\tt c:2345:respawn:/sbin/mingetty ttyS0}
   1.254 +}
   1.255 +\end{quote} 
   1.256  
   1.257 -{\tt c:2345:respawn:/sbin/mingetty ttyS0}
   1.258 +and you should be able to log in. Note that to successfully log in 
   1.259 +as root over the serial will require adding \path{ttyS0} to
   1.260 +\path{/etc/securetty} in most modern distributions. 
   1.261  
   1.262  \subsection{TLS Libraries}
   1.263  
   1.264  Users of the XenLinux 2.6 kernel should disable Thread Local Storage
   1.265 -(e.g. by doing a {\tt mv /lib/tls /lib/tls.disabled}) before
   1.266 +(e.g. by doing a {\small {\tt mv /lib/tls /lib/tls.disabled}}) before
   1.267  attempting to run with a XenLinux kernel.  You can always reenable it
   1.268 -by restoring the directory to its original location (i.e. {\tt mv
   1.269 -  /lib/tls.disabled /lib/tls}).
   1.270 +by restoring the directory to its original location (i.e. {\small 
   1.271 +{\tt mv /lib/tls.disabled /lib/tls}}).
   1.272  
   1.273 -The TLS implementation uses segmentation in a way that is not
   1.274 -permissable under Xen.  If TLS is not disabled, an emulation mode is
   1.275 -used within Xen which reduces performance substantially and is not
   1.276 -guaranteed to work perfectly.
   1.277 +The reason for this is that the current TLS implementation uses
   1.278 +segmentation in a way that is not permissable under Xen.  If TLS is
   1.279 +not disabled, an emulation mode is used within Xen which reduces
   1.280 +performance substantially and is not guaranteed to work perfectly.
   1.281  
   1.282  \section{Test the new install}
   1.283  
   1.284 @@ -513,7 +560,7 @@ variables in \path{/etc/xen/xmdefconfig}
   1.285                with Xen. [e.g. {\tt kernel =
   1.286                '/root/xen-2.0.bk/install/boot/vmlinuz-2.4.27-xenU'}]
   1.287  \item[memory] Set this to the size of the domain's memory in
   1.288 -megabytes. [e.g. {\tt memory = 64 } ]
   1.289 +megabytes. [e.g. {\tt memory = 64} ]
   1.290  \item[disk] Set the first entry in this list to calculate the offset
   1.291  of the domain's root partition, based on the domain ID.  Set the
   1.292  second to the location of \path{/usr} (if you are sharing it between
   1.293 @@ -712,7 +759,7 @@ To perform a live migration, both hosts 
   1.294  the destination host must have sufficient resources (e.g. memory
   1.295  capacity) to accommodate the domain after the move.
   1.296  
   1.297 -A domain may be migrated using the {\tt xm migrate } command.  To
   1.298 +A domain may be migrated using the {\tt xm migrate} command.  To
   1.299  migrate the example ttylinux domain to another machine, we would use
   1.300  the command:
   1.301  
   1.302 @@ -931,7 +978,7 @@ The general format of an xm command line
   1.303  # xm command [switches] [arguments] [variables]
   1.304  \end{verbatim}
   1.305  
   1.306 -The available {\em switches } and {\em arguments} are dependent on the
   1.307 +The available {\em switches} and {\em arguments} are dependent on the
   1.308  {\em command} chosen.  The {\em variables} may be set using
   1.309  declarations of the form {\tt variable=value} and command line
   1.310  declarations override any of the values in the configuration file
   1.311 @@ -966,10 +1013,11 @@ The available commands are as follows:
   1.312  
   1.313  For a detailed overview of switches, arguments and variables to each command
   1.314  try
   1.315 +\begin{quote}
   1.316  \begin{verbatim}
   1.317  # xm help command
   1.318  \end{verbatim}
   1.319 -
   1.320 +\end{quote}
   1.321  
   1.322  \section{Xensv (Web control interface)}
   1.323  \label{s:xensv}
   1.324 @@ -1043,7 +1091,7 @@ vif = [ 'mac=aa:00:00:00:00:11, bridge=x
   1.325    \item[always] Always restart the domain, no matter what
   1.326                  its exit code is.
   1.327    \item[never]  Never restart the domain.
   1.328 -  \item[onreboot] (restart the domain if it requests reboot).
   1.329 +  \item[onreboot] Restart the domain iff it requests reboot.
   1.330    \end{description}
   1.331  \end{description}
   1.332  
   1.333 @@ -1126,14 +1174,14 @@ format of configuration file:
   1.334  
   1.335  \begin{itemize}
   1.336  \item SXP Format: Include device elements of the form: \\
   1.337 -\centerline{  {\tt (device (pci (bus {\em x}) (dev {\em y}) (func {\em z}))) }} \\
   1.338 +\centerline{  {\tt (device (pci (bus {\em x}) (dev {\em y}) (func {\em z})))}} \\
   1.339    inside the top-level {\tt vm} element.  Each one specifies the address
   1.340    of a device this domain is allowed to access ---
   1.341    the numbers {\em x},{\em y} and {\em z} may be in either decimal or
   1.342    hexadecimal format.
   1.343  \item Flat Format: Include a list of PCI device addresses of the
   1.344    format: \\ 
   1.345 -\centerline{{\tt pci = ['x,y,z', ...] }} \\ 
   1.346 +\centerline{{\tt pci = ['x,y,z', ...]}} \\ 
   1.347  where each element in the
   1.348    list is a string specifying the components of the PCI device
   1.349    address, separated by commas.  The components ({\tt \em x}, {\tt \em
   1.350 @@ -1171,7 +1219,7 @@ scheduler is the recommended choice.
   1.351  
   1.352  \subsection{Borrowed Virtual Time}
   1.353  
   1.354 -{\tt sched=bvt } (the default) \\ 
   1.355 +{\tt sched=bvt} (the default) \\ 
   1.356  
   1.357  BVT provides proportional fair shares of the CPU time.  It has been
   1.358  observed to penalise domains that block frequently (e.g. I/O intensive
   1.359 @@ -1206,7 +1254,7 @@ domains), but this can be compensated fo
   1.360  
   1.361  \subsection{Atropos}
   1.362  
   1.363 -{\tt sched=atropos } \\
   1.364 +{\tt sched=atropos} \\
   1.365  
   1.366  Atropos is a soft real time scheduler.  It provides guarantees about
   1.367  absolute shares of the CPU, with a facility for sharing
   1.368 @@ -1245,7 +1293,7 @@ slightly less than 100\% in order to ens
   1.369  
   1.370  \section{Round Robin}
   1.371  
   1.372 -{\tt sched=rrobin } \\
   1.373 +{\tt sched=rrobin} \\
   1.374  
   1.375  The round robin scheduler is included as a simple demonstration of
   1.376  Xen's internal scheduler API.  It is not intended for production use. 
   1.377 @@ -1299,6 +1347,7 @@ software.
   1.378  \end{description} 
   1.379  
   1.380  \section{Xen boot options}
   1.381 +\label{s:xboot}
   1.382  
   1.383  These options are used to configure Xen's behaviour at runtime.  They
   1.384  should be appended to Xen's command line, either manually or by
   1.385 @@ -1660,27 +1709,29 @@ to update the hwclock, change the consol
   1.386  map, start apmd (power management), or gpm (mouse cursor).  Either
   1.387  ignore the errors (they should be harmless), or remove them from the
   1.388  startup scripts.  Deleting the following links are a good start:
   1.389 -\path{S24pcmcia}, \path{S09isdn}, \path{S17keytable}, \path{S26apmd},
   1.390 -\path{S85gpm}.
   1.391 +{\small\path{S24pcmcia}}, {\small\path{S09isdn}},
   1.392 +{\small\path{S17keytable}}, {\small\path{S26apmd}},
   1.393 +{\small\path{S85gpm}}.
   1.394  
   1.395  If you want to use a single root file system that works cleanly for
   1.396 -domain0 and domains>0, a useful trick is to use different 'init' run
   1.397 -levels. For example, on the Xen Demo CD we use run level 3 for domain
   1.398 -0, and run level 4 for domains>0. This enables different startup
   1.399 -scripts to be run in depending on the run level number passed on the
   1.400 -kernel command line.
   1.401 +both domain 0 and unprivileged domains, a useful trick is to use
   1.402 +different 'init' run levels. For example, on the Xen Demo CD we use
   1.403 +run level 3 for domain 0, and run level 4 for other domains. This
   1.404 +enables different startup scripts to be run in depending on the run
   1.405 +level number passed on the kernel command line.
   1.406  
   1.407 -If you're going to use NFS root files systems mounted either from an
   1.408 +If using NFS root files systems mounted either from an
   1.409  external server or from domain0 there are a couple of other gotchas.
   1.410 -The default \path{/etc/sysconfig/iptables} rules block NFS, so part
   1.411 +The default {\small\path{/etc/sysconfig/iptables}} rules block NFS, so part
   1.412  way through the boot sequence things will suddenly go dead.
   1.413  
   1.414 -If you're planning on having a separate NFS \path{/usr} partition, the
   1.415 +If you're planning on having a separate NFS {\small\path{/usr}} partition, the
   1.416  RH9 boot scripts don't make life easy - they attempt to mount NFS file
   1.417  systems way to late in the boot process. The easiest way I found to do
   1.418 -this was to have a \path{/linuxrc} script run ahead of
   1.419 -\path{/sbin/init} that mounts \path{/usr}:
   1.420 +this was to have a {\small\path{/linuxrc}} script run ahead of
   1.421 +{\small\path{/sbin/init}} that mounts {\small\path{/usr}}:
   1.422  
   1.423 +\begin{quote}
   1.424  \begin{small}\begin{verbatim}
   1.425   #!/bin/bash
   1.426   /sbin/ipconfig lo 127.0.0.1
   1.427 @@ -1688,25 +1739,27 @@ this was to have a \path{/linuxrc} scrip
   1.428   /bin/mount /usr
   1.429   exec /sbin/init "$@" <>/dev/console 2>&1
   1.430  \end{verbatim}\end{small}
   1.431 +\end{quote}
   1.432  
   1.433  %$ XXX SMH: font lock fix :-)  
   1.434  
   1.435  The one slight complication with the above is that
   1.436 -\path{/sbin/portmap} is dynamically linked against
   1.437 -\path{/usr/lib/libwrap.so.0} Since this is in \path{/usr}, it won't
   1.438 -work. This can be solved by copying the file (and link) below the /usr
   1.439 -mount point, and just let the file be 'covered' when the mount
   1.440 -happens.
   1.441 +{\small\path{/sbin/portmap}} is dynamically linked against
   1.442 +{\small\path{/usr/lib/libwrap.so.0}} Since this is in
   1.443 +{\small\path{/usr}}, it won't work. This can be solved by copying the
   1.444 +file (and link) below the /usr mount point, and just let the file be
   1.445 +'covered' when the mount happens.
   1.446  
   1.447 -In some installations, where a shared read-only \path{/usr} is being
   1.448 -used, it may be desirable to move other large directories over into
   1.449 -the read-only \path{/usr}. For example, you might replace \path{/bin},
   1.450 -\path{/lib} and \path{/sbin} with links into \path{/usr/root/bin},
   1.451 -\path{/usr/root/lib} and \path{/usr/root/sbin} respectively. This
   1.452 -creates other problems for running the \path{/linuxrc} script,
   1.453 -requiring bash, portmap, mount, ifconfig, and a handful of other
   1.454 -shared libraries to be copied below the mount point - a little
   1.455 -statically linked C program would solve this problem.
   1.456 +In some installations, where a shared read-only {\small\path{/usr}} is
   1.457 +being used, it may be desirable to move other large directories over
   1.458 +into the read-only {\small\path{/usr}}. For example, you might replace
   1.459 +{\small\path{/bin}}, {\small\path{/lib}} and {\small\path{/sbin}} with
   1.460 +links into {\small\path{/usr/root/bin}}, {\small\path{/usr/root/lib}}
   1.461 +and {\small\path{/usr/root/sbin}} respectively. This creates other
   1.462 +problems for running the {\small\path{/linuxrc}} script, requiring
   1.463 +bash, portmap, mount, ifconfig, and a handful of other shared
   1.464 +libraries to be copied below the mount point --- a simple
   1.465 +statically-linked C program would solve this problem.
   1.466  
   1.467  
   1.468  
   1.469 @@ -1731,7 +1784,7 @@ statically linked C program would solve 
   1.470                             specifically to run multiple conventional OSs.
   1.471  
   1.472  \item[Domain]              A domain is the execution context that
   1.473 -                           contains a running { \bf virtual machine }.
   1.474 +                           contains a running {\bf virtual machine}.
   1.475                             The relationship between virtual machines
   1.476                             and domains on Xen is similar to that between
   1.477                             programs and processes in an operating
   1.478 @@ -1739,13 +1792,13 @@ statically linked C program would solve 
   1.479                             entity that resides on disk (somewhat like
   1.480                             a program).  When it is loaded for execution,
   1.481                             it runs in a domain.  Each domain has a
   1.482 -                           { \bf domain ID }.
   1.483 +                           {\bf domain ID}.
   1.484  
   1.485  \item[Domain 0]            The first domain to be started on a Xen
   1.486                             machine.  Domain 0 is responsible for managing
   1.487                             the system.
   1.488  
   1.489 -\item[Domain ID]           A unique identifier for a { \bf domain },
   1.490 +\item[Domain ID]           A unique identifier for a {\bf domain},
   1.491                             analogous to a process ID in an operating
   1.492                             system.  Apart from domain
   1.493  
   1.494 @@ -1754,7 +1807,7 @@ statically linked C program would solve 
   1.495                             operating system, providing the illusion of
   1.496                             a complete system of real hardware devices.
   1.497  
   1.498 -\item[Hypervisor]          An alternative term for { \bf VMM }, used
   1.499 +\item[Hypervisor]          An alternative term for {\bf VMM}, used
   1.500                             because it means `beyond supervisor',
   1.501                             since it is responsible for managing multiple
   1.502                             `supervisor' kernels.
   1.503 @@ -1784,7 +1837,7 @@ statically linked C program would solve 
   1.504  
   1.505  \item[Shadow pagetables]   A technique for hiding the layout of machine
   1.506                             memory from a virtual machine's operating
   1.507 -                           system.  Used in some {\bf VMM}s to provide
   1.508 +                           system.  Used in some {\bf VMMs} to provide
   1.509                             the illusion of contiguous physical memory,
   1.510                             in Xen this is used during
   1.511                             {\bf live migration}.
   1.512 @@ -1793,8 +1846,8 @@ statically linked C program would solve 
   1.513                             system runs, providing the abstraction of a
   1.514                             dedicated machine.  A virtual machine may
   1.515                             be identical to the underlying hardware (as
   1.516 -                           in { \bf full virtualisation }, or it may
   1.517 -                           differ, as in { \bf paravirtualisation }.
   1.518 +                           in {\bf full virtualisation}, or it may
   1.519 +                           differ, as in {\bf paravirtualisation}.
   1.520  
   1.521  \item[VMM]                 Virtual Machine Monitor - the software that
   1.522                             allows multiple virtual machines to be