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.


removed ne2k from release
[palacios.git] / manual / manual.tex
index aaa4dc4..c13651f 100755 (executable)
@@ -310,10 +310,20 @@ overlooked principle of design gives the eye a "place to rest,"
 increasing the appeal of a composition through subtle means."
 \newline\newline
 Translation: Use the spacebar, newlines, and parentheses. 
-\newline\newline
+
+Curly-brackets are not optional, even for single line conditionals. 
+
+Tabs should be 4 characters in width.
+
+{\em Special:} If you are using XEmacs add the following to your \verb.init\.el. file:
+\begin{verbatim}
+(setq c-basic-offset 4)
+(c-set-offset 'case-label 4)
+\end{verbatim}
+
 {\em Bad}
 \begin{verbatim}
-if(a&&b==5||c!=0){return;}
+if(a&&b==5||c!=0) return;
 \end{verbatim}
 
 
@@ -322,10 +332,12 @@ if(a&&b==5||c!=0){return;}
 \begin{verbatim}
 if (((a) && (b == 5)) || 
     (c != 0)) {
-       return;
+               return;
 }
 \end{verbatim}
 
+
+
 \paragraph*{Fail Stop}
 Because booting a basic linux kernel results in over 1 million VM exits
 catching silent errors is next to impossible. For this reason
@@ -358,7 +370,7 @@ whenever possible.
 \item \verb.v3_. prefix
 \newline
 Major interface functions should be named with the prefix \verb.v3_. This
-allows easy understanding of how to interact with the subsystems. And
+xallows easy understanding of how to interact with the subsystems. And
 in the case that they need to be externally visible to the host os,
 make them unlikely to collide with other functions. 
 \end{enumerate}
@@ -374,8 +386,8 @@ Two functions of note are \verb.PrintDebug. and \verb.PrintError..
 
 \item PrintDebug:
 \newline
-Should be used for debugging output that will often be
-turned off selectively by the VMM configuration. 
+Should be used for debugging output that will often be turned off
+selectively by the VMM configuration.
 
 \item PrintError
 \newline
@@ -491,7 +503,7 @@ hgext.mq=
 \end{verbatim}
 
 Mercurial queues use the same stack operations as stacked git, however
-does not automatically handle the synchronization with pull
+it does not automatically handle the synchronization with pull
 operations. Before you update from the central version of Kitten you
 need to pop all of the patches, and then push them once the update is
 complete.
@@ -501,7 +513,7 @@ Basically:
 hg qpop -a
 hg pull
 hg update
-hg qupush -a
+hg qpush -a
 \end{verbatim}
 
 
@@ -586,7 +598,9 @@ computers (v-test-amd, v-test-amd2, etc.) are connected.  To bridge,
 for example, tap10, to this interface, you would do the following
 (with root's help):
 \begin{enumerate}
-\item You need to bring up eth1 (ifup eth1)
+\item You need to bring up eth1 (ifconfig eth1 up {\em address}
+netmask {\em mask}).  It is important that the address and mask you
+choose are appropriate for the network eth1 is connected to.
 \item You would bring up tap10 without an address:  /sbin/ifconfig
 tap10 up
 \item You would bridge tap10 and eth1:  /usr/sbin/brctl addif br0
@@ -603,22 +617,49 @@ For the newskysaw configuration, this is a 10-net address.
 
 \subsection{Configuring Kitten}
 
-To enable networking in Qemu, networking needs to be enabled in the
-configuration.
+Kitten needs to be explicitly configured to use networking. Currently
+only a subset of the networking configurations are supported. To
+enable an ethernet network you should enable the following options:
 
-Make sure turn on the network device driver, networking, and input
-kernel command 'console=serial net=rtl8139'
+\begin{itemize}
+\item Enable TCP Support
+\item Enable UDP Support
+\item Enable socket API
+\item Enable ARP support
+\end{itemize}
+
+The other options are not supported, and enabling them will probably
+break the kernel compilation.
+
+To allow Kitten to communicate with the Qemu network card you also
+need to enable the appropriate device driver: \newline
+\verb.NE2K Device Driver (rtl8139).
+
+The driver then needs to be listed as a Kernel Command Line argument
+in the {\em ISOIMAGE configuration}. To do this add
+\verb.net=rtl819. to the end of the argument string.
+
+Kitten currently does not support the dynamic assignment or IP
+addresses at runtime. Because of this it is necessary to hardcode the
+IP address into the device driver. For the rtl8139 network driver look
+in the file {\em drivers/net/ne2k/rtl8139.c} for the function
+\verb.rtl8139_init..
+
+There shoule be a block of code that looks like the following:
+\begin{verbatim}
+  struct ip_addr ipaddr = { htonl(0 | 10 << 24 | 0 << 16 | 2 << 8 | 16 << 0) }; 
+  struct ip_addr netmask = { htonl(0xffffff00) }; 
+  struct ip_addr gw = { htonl(0 | 10 << 24 | 0 << 16 | 2 << 8 | 2 << 0) };
+\end{verbatim}
 
-How to set ip address in kitten:
+This sets the ip address as 10.0.2.16, netmask 255.255.255.0 and
+gateway address 10.0.2.2. Change these assignments to match your configuration.
 
-Kitten ip address setting is in file drivers/net/ne2k/rtl8139.c, in
-the code below which is located in function rtl8139\_init.
 
-  struct ip\_addr ipaddr = { htonl(0 | 10 << 24 | 0 << 16 | 2 << 8 | 16 << 0) }; 
-  struct ip\_addr netmask = { htonl(0xffffff00) }; 
-  struct ip\_addr gw = { htonl(0 | 10 << 24 | 0 << 16 | 2 << 8 | 2 << 0) };
+\paragraph*{Kitten as the Guest OS}
 
-This sets the ip address as 10.0.2.16, netmask 255.255.255.0 and gateway address 10.0.2.2, change it as you need.
+When running Kitten as a VM, the above applies except that you will
+want to enable the {\em VMNET} device driver instead of the {\em rtl8139}.
 
 
 \subsection{Running with networking}