Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Includes Phil's patches to the guest build environment document
[palacios.git] / manual / guest_build / Palacios_Guest_Build.tex
index 5432897..7b75bfb 100644 (file)
@@ -5,6 +5,7 @@
 \usepackage{verbatim}
 \usepackage{epsf}
 \usepackage{graphicx}
+\usepackage{hyperref}
 
 \def\colfigsize{\epsfxsize=5in}
 
@@ -28,95 +29,147 @@ In order to build the bootable guest iso image, we need to build a Linux kernel
 image from source and an initial file system containing a set of useful binary
 files which will be described in the following text. We will use a new directory
 for demonstration; the root directory for the following examples is
-\verb+test/+:
+``\verb+test/+":
 
 \begin{verbatim}
-mkdir test/
-cd test/
+[jdoe@newskysaw ~]$ mkdir test/
+[jdoe@newskysaw ~]$ cd test/
 \end{verbatim}
 
 \vspace{10pt}
 \noindent
 There are a set of tools and sources that are useful for the guest image
 building procedure. You can checkout these resources from our git repositories;
-to check them out to your local \verb+test/+ directory use the following
+to check them out to your local ``\verb+test/+" directory use the following
 commands: 
 
 \begin{verbatim}
-git clone http://hornet.cs.northwestern.edu:9005/busybox
-git clone http://hornet.cs.northwestern.edu:9005/initrd
-git clone http://hornet.cs.northwestern.edu:9005/linux-2.6.30.y
+[jdoe@newskysaw test]$ git clone http://hornet.cs.northwestern.edu:9005/busybox
+[jdoe@newskysaw test]$ git clone http://hornet.cs.northwestern.edu:9005/initrd
+[jdoe@newskysaw test]$ git clone http://hornet.cs.northwestern.edu:9005/linux-2.6.30.y
 \end{verbatim}
 
 \section{Building the ramdisk filesystem}
+The guest requires an initial ramdisk filesystem. Jack has made one that you can
+leverage; it is temporarily located in his home directory.  You will need sudo
+or root access to create the device files when you unpack the archive:
 
-% Introductory text explaining why a ramdisk filesystem is necessary, and a
-% small blurb about what it is. Mostly this is necessary because the
-% introduction said that the "useful binary files" would be described.
+\begin{verbatim}
+[jdoe@newskysaw test]$ cp /home/jarusl/initrd/disks/v3vee_initramfs.tar.gz .
+[jdoe@newskysaw test]$ sudo tar -C initrd -xzf v3vee_initramfs.tar.gz
+\end{verbatim}
 
-Jack has made an initial ramdisk system that you can leverage. The file is
-temporarily in the directory
-\verb|/home/jarusl/initrd/disks/v3vee_initramfs.tar.gz| on the
-newskysaw machine. If you require a custom initial ramdisk, copy the directories
-and files that you require into the \verb+initramfs+/ directory. For minimal
-device support, copy theses devices into the \verb+initramfs/dev/+ directory:
-console, ram, null, tty (you probably need root privilege to copy and make the
-device files).
+\noindent
+If you require a custom initial ramdisk filesystem, in the
+``\verb|initrd/initramfs/|" directory, perform the following steps:
 
+\begin{verbatim}
+[jdoe@newskysaw initramfs]$ mkdir -p proc sys var/log
+\end{verbatim}
 
+\noindent
+Edit the ``\verb|init_task|" script and uncomment these lines:
 
+\begin{verbatim}
+#mknod /dev/tty0 c 4 0
+#mknod /dev/tty1 c 4 1
+#mknod /dev/tty2 c 4 2
+\end{verbatim}
 
 \pagebreak
-\begin{figure}[h]\begin{center}\colfigsize\epsffile{busyboxConf1.eps}\end{center}\caption{BusyBox configuration}\label{fig:busyboxcf1}\end{figure}
 
+\noindent
+Create the \verb|console| device. If you have sudo or root access it is possible
+to create this device manually:
 
+\begin{verbatim}
+[jdoe@newskysaw initramfs]$ sudo mknod dev/console c 5 1
+[jdoe@newskysaw initramfs]$ sudo chmod 0600 dev/console
+\end{verbatim}
 
+\noindent
+If you do not have sudo or root access it is still possible to create the
+\verb|console| device indirectly through the kernel build.  In the
+``\verb|initrd/|" directory create a file called ``\verb|root_files|" and add
+the following line:
 
-\pagebreak
-\begin{figure}[h]\begin{center}\colfigsize\epsffile{busyboxConf2.eps}\end{center}\caption{BusyBox configuration}\label{fig:busyboxcf2}\end{figure}
+\begin{verbatim}
+nod /dev/console 0600 0 0 c 5 1
+\end{verbatim}
+
+\noindent
+The ``\verb|root_files|" file will be referenced in the section Configuring and
+compiling the Linux kernel. Finally, create any additional directories and copy
+any additional files that you need. Your initial ramdisk filesystem is prepped
+and ready for installation of the BusyBox tools as described in the section
+Configuring and installing BusyBox tools.
 
 
 
+\pagebreak
+\begin{figure}[ht]
+  \begin{center}
+    \colfigsize\epsffile{busyboxConf1.eps}
+    \caption{BusyBox configuration}
+    \label{fig:busyboxcf1}
+  \end{center}
+\end{figure}
+
+\begin{figure}[h]
+  \begin{center}
+    \colfigsize\epsffile{busyboxConf2.eps}
+  \end{center}
+  \caption{BusyBox configuration}
+  \label{fig:busyboxcf2}
+\end{figure}
 
 \section{Configuring and installing BusyBox tools}
 
 BusyBox is a software application released as Free software under the GNU GPL
 that provides many standard Unix tools. BusyBox combines tiny versions of many
-common UNIX utilities into a single small executable. For more details on
-BusyBox, visiting http://busybox.net. To configure BusyBox, in the
-\verb+busybox/+ directory, type the following:
+common UNIX utilities into a single, small executable. For more details on
+BusyBox visit \url{http://busybox.net}. To configure BusyBox, in the
+``\verb+busybox/+" directory, type the following:
 
 \begin{verbatim}
-make menuconfig
+[jdoe@newskysaw busybox]$ make menuconfig
 \end{verbatim}
 
+\noindent
 or
 
 \begin{verbatim}
-make xconfig (X version)
+[jdoe@newskysaw busybox]$ make xconfig (X version)
 \end{verbatim}
 
-\vspace{10pt}
 \noindent
-You can add the tools you need into the guest image. There are two required
-configuration options: in ``\verb|BusyBox settings->Build Options|", check the 
-``\verb|Build BusyBox as a static binary|" option, and in
-``\verb|BusyBox settings->Installation Options|", set the
-``\verb|Busybox installation prefix|" to the path of your \verb|initramfs|
-directory, as shown in figure \ref{fig:busyboxcf2}. After you finish configuring
-BusyBox, save your configuration and quit the window. Then, to make the BusyBox
-tools, type the following:
+The BusyBox tools will be installed in the guest's initial ramdisk filesystem;
+you can add any tools that you need. There are two required configuration
+options. In the
+``\verb|BusyBox settings->Build Options|" menu check the
+``\verb|Build BusyBox as a static binary (no shared libs)|" option, as shown in
+figure \ref{fig:busyboxcf1}, and in the
+``\verb|BusyBox settings->Installation Options|" menu set the
+``\verb|Busybox installation prefix|" to the path of the
+``\verb|initrd/initramfs|" directory, as shown in figure \ref{fig:busyboxcf2}.
+After you finish configuring BusyBox, save your configuration and quit the
+window. Then, to make the BusyBox tools, type the following:
+
 \begin{verbatim}
-make
+[jdoe@newskysaw busybox]$ make
 \end{verbatim}
-Install the tools to your initial ramdisk directory:
+Install the tools to the guest's initial ramdisk filesystem directory:
 \begin{verbatim}
-make install
+[jdoe@newskysaw busybox]$ make install
 \end{verbatim}
 
-
-\begin{figure}[h]\begin{center}\colfigsize\epsffile{linuxConf.eps}\end{center}\caption{Linux Kernel configuration}\label{fig:linuxcf}\end{figure}
-
+\begin{figure}[ht]
+  \begin{center}
+    \colfigsize\epsffile{linuxConf.eps}
+  \end{center}
+  \caption{Linux Kernel configuration}
+  \label{fig:linuxcf}
+\end{figure}
 
 
 \section{Configuring and compiling the Linux kernel}
@@ -154,15 +207,13 @@ make
 Some blurb about where the kernel image is...
 
 
-
-
 \section{Configuring guest devices}
 
-% Can we make this a true hyperlink?
 Checkout the updated Palacios repository to \verb|palacios/|.  (You can find
 instructions for checking out the Palacios and Kitten repositories at
-http://www.v3vee.org/palacios/). To build the guest VM creator tool, change to
-the \verb|palacios/utils/guest_creator| directory and type the following:
+\url{http://www.v3vee.org/palacios/}). To build the guest VM creator tool,
+change to the \verb|palacios/utils/guest_creator| directory and type the
+following:
 
 \begin{verbatim}
 make
@@ -192,25 +243,32 @@ section.
 
 
 \pagebreak
-\begin{figure}[h]\begin{center}\colfigsize\epsffile{kittenConf1.eps}\end{center}\caption{Kitten configuration}\label{fig:kittencf}\end{figure}
-
-
-
-
-\pagebreak
-\begin{figure}[h]\begin{center}\colfigsize\epsffile{kittenConf2.eps}\end{center}\caption{Kitten configuration}\label{fig:kittencf2}\end{figure}
-
-
+\begin{figure}[h]
+  \begin{center}
+    \colfigsize\epsffile{kittenConf1.eps}
+  \end{center}
+  \caption{Kitten configuration}
+  \label{fig:kittencf}
+\end{figure}
+
+\begin{figure}[h]
+  \begin{center}
+    \colfigsize\epsffile{kittenConf2.eps}
+  \end{center}
+  \caption{Kitten configuration}
+  \label{fig:kittencf2}
+\end{figure}
 
 
 \section{Configuring and building Palacios and Kitten}
 \subsection*{Configuring and building Palacios}
 
 You can find the detailed manual of getting and building Palacios and Kitten 
-from scratch in the Palacios website (http://www.v3vee.org/palacios). Here we
-only give the specific requirements related to the booting guest procedure. To
-configure Palacios, in the Palacios root directory (i.e. \verb+palacios/+) type
-the following:
+from scratch in the Palacios website (\url{http://www.v3vee.org/palacios}). Here
+we only give the specific requirements related to the booting guest procedure.
+To configure Palacios, in the Palacios root directory (i.e. \verb+palacios/+)
+type the following:
+
 \begin{verbatim}
 make config
 \end{verbatim}
@@ -223,6 +281,7 @@ make xconfig
 \noindent
 When you have configured the components you want to build into Palacios type
 the following:
+
 \begin{verbatim}
 make
 \end{verbatim}
@@ -240,6 +299,7 @@ Once the Palacios static library has been built you can find the library file
 
 To build Kitten, first configure it in as you did Palacios. Change to the
 \verb+kitten/+ directory and type the following:
+
 \begin{verbatim}
 make config
 \end{verbatim}
@@ -260,6 +320,7 @@ section of this manual.
 \vspace{10pt}
 \noindent
 After configuring Kitten, to build Kitten, type the following:
+
 \begin{verbatim}
 make isoimage
 \end{verbatim}
@@ -269,7 +330,7 @@ make isoimage
 This builds the bootable ISO image file with guest OS, Palacios and Kitten.
 The ISO file is located in \verb+kitten/arch/x86_64/boot/image.iso+.
 
-\vspace{5pt}
+\pagebreak
 \noindent
 You have successfully created a guest CD image file that can be booted on a
 machine. You can boot the file on Qemu using the following sample command:
@@ -287,7 +348,7 @@ machine. You can boot the file on Qemu using the following sample command:
 \noindent
 We have finished the entire procedure for building a guest image and booting it
 on the Palacios VMM. For more updated details, check the Palacios website
-\verb+http://www.v3vee.org/palacios+ and Kitten website
-\verb+https://software.sandia.gov/trac/kitten+ regularly.
+\url{http://www.v3vee.org/palacios} and Kitten website
+\url{https://software.sandia.gov/trac/kitten} regularly.
 
 \end{document}
\ No newline at end of file