diff options
Diffstat (limited to 'doc/src/umltesting.html')
-rw-r--r-- | doc/src/umltesting.html | 478 |
1 files changed, 0 insertions, 478 deletions
diff --git a/doc/src/umltesting.html b/doc/src/umltesting.html deleted file mode 100644 index df62a9ae2..000000000 --- a/doc/src/umltesting.html +++ /dev/null @@ -1,478 +0,0 @@ -<html> -<head> -<title>FreeS/WAN User-Mode-Linux testing guide</title> -<!-- Changed by: Michael Richardson, 05-Mar-2003 --> -<meta name="keywords" content="Linux, IPsec, VPN, security, FreeSWAN, testing, User-Mode-Linux, UML"> - -<!-- - -Written by Michael Richardson for the Linux FreeS/WAN project -Freely distributable under the GNU General Public License - -More information at www.freeswan.org -Feedback to users@lists.freeswan.org - -$Id: umltesting.html,v 1.1 2004/03/15 20:35:24 as Exp $ - -$Log: umltesting.html,v $ -Revision 1.1 2004/03/15 20:35:24 as -added files from freeswan-2.04-x509-1.5.3 - -Revision 1.23 2003/09/18 15:12:11 dhr - -fix link to kernel.org mirrors page - -Revision 1.22 2003/03/07 03:49:25 dhr - -fix recommended version of uml-patch - -Revision 1.21 2003/03/06 08:37:03 dhr - -capture more of MCR's knowledge about BIND - -Revision 1.20 2003/03/06 02:15:44 mcr - added note about need for bind9. - -Revision 1.19 2003/03/05 23:20:39 mcr - updates from -47 to -53. - -Revision 1.18 2003/02/27 08:25:48 dhr - -update to reflect newer umlfreeroot - -Revision 1.17 2003/02/27 08:16:45 dhr - -make clear what is the latest version of the UML patch that we've used - -Revision 1.16 2003/02/21 01:35:31 mcr - updated latest umlfreeroot to 15.1. - -Revision 1.15 2003/01/21 03:26:34 mcr - updated documentation on UML state. - -Revision 1.14 2002/11/11 16:43:35 mcr - adjusted formatting of uml_netjig notes. - -Revision 1.13 2002/11/08 10:13:05 mcr - updated documentation for 2.4.19 - -Revision 1.12 2002/11/03 23:44:23 mcr - fixed some formatting in umltesting.html - added some notes about NETJIGWAITUSER re: having tests - prompt before they exit. Helps with debugging. - -Revision 1.11 2002/10/31 19:01:31 mcr - documentation for RUN_*_SCRIPT. - -Revision 1.10 2002/09/15 23:57:59 dhr - -update suggested umlfreeroot - -Revision 1.9 2002/09/15 19:28:05 mcr - added some comments about problems with UMLs. - -Revision 1.8 2002/09/11 20:00:25 mcr - updated umlroot rev to 8.0. - -Revision 1.7 2002/09/09 21:37:43 mcr - updated document to reference currently working kernel+UML. - -Revision 1.6 2002/08/02 22:43:35 mcr - added section on debugging with UMLs. - -Revision 1.5 2002/05/30 18:47:57 dhr - -Update from experience: -- fixed HTML bugs -- restructure slightly -- added another intro paragraph -- mentioned lack of Super User requirements -- added tcpdump build and install procedure -- added uml utils build procedure -- added invitation to try "make check" -- fixed minor typos and mistakes - -Revision 1.4 2002/03/12 21:10:37 mcr - removed instruction on downloading umlminishare, as this is - now simply included in umlrootXXX. reformated some other text. - -Revision 1.3 2002/01/29 02:21:21 mcr - updated instructions for 2.4.17, and for newest UMLroot. - -Revision 1.2 2001/11/27 05:24:09 mcr - added reference to uml-rhroot, but commented out. - This proceedure is not yet ready for prime time. - -Revision 1.1 2001/11/05 04:35:57 mcr - adapted text from design list posting into HTML for Sandy. - - ---> -</head> - -<body> - -<h1><a name="umltesting">User-Mode-Linux Testing guide</a></h1> - -<p> -User mode linux is a way to compile a linux kernel such that it can run as a -process in another linux system (potentially as a *BSD or Windows process -later). See <A HREF="http://user-mode-linux.sourceforge.net/">http://user-mode-linux.sourceforge.net/</A> -</P> - -<p> -UML is a good platform for testing and experimenting with FreeS/WAN. -It allows several network nodes to be simulated on a single machine. -Creating, configuring, installing, monitoring, and controling these -nodes is generally easier and easier to script with UML than real -hardware. -</p> - -<p> -You'll need about 500Mb of disk space for a full sunrise-east-west-sunset -setup. You can possibly get this down by 130Mb if you remove the -sunrise/sunset kernel build. If you just want to run, then you can even -remove the east/west kernel build. -</p> -<p> -Nothing need be done as super user. In a couple of steps, we note -where super user is required to install commands in system-wide -directories, but ~/bin could be used instead. UML seems to use a -system-wide /tmp/uml directory so different users may interfere with -one another. Later UMLs use ~/.uml instead, so multiple users running UML -tests should not be a problem, but note that a single user running -the UML tests will only be able run one set. Further, UMLs sometimes -get stuck and hang around. These "zombies" (most will actually be in -the "T" state in the process table) will interfere with subsequent tests. -</P> -<H2>Preliminary Notes on BIND</H2> - -<P> -As of 2003/3/1, the Light-Weight Resolver is used by pluto. This requires -that BIND9 be running. It also requires that BIND9 development libraries -be present in the build environment. The DNSSEC code is only truly functional -in BIND9 snapshots. The library code could be 9.2.2, we believe. We are -using BIND9 20021115 snapshot code from -<A HREF="ftp://ftp.isc.org/isc/bind9/snapshots">ftp://ftp.isc.org/isc/bind9/snapshots</A>. -</P> -<P> -FreeS/WAN may well require a newer BIND than is on your system. -Many distributions have moved to BIND9.2.2 recently due to a security advisory. -BIND is five components. -</P> -<OL> -<LI> -named -</LI> -<LI> -dnssec-* -</LI> -<LI> -client side resolver libraries -</LI> -<LI> -client side utility libraries -I thought there were lib and named parts to dnsssec... -</LI> -<LI> -dynamic DNS update utilities -</LI> -</OL> -<P> -The only piece that we need for *building* is #4. That's the only part that has to be on the build host. -What is the difference between resolver and util libs? -If you want to edit testing/baseconfigs/all/etc/bind, you'll need a snapshot version. -The resolver library contains the resolver. -FreeS/WAN has its own copy of that in lib/liblwres. -</P> -<H2>Steps to Install UML for FreeS/WAN</H2> -<OL> -<LI> Get the following files: -<OL type="a"> -<LI> from <A HREF="http://www.sandelman.ottawa.on.ca/freeswan/uml/">http://www.sandelman.ottawa.on.ca/freeswan/uml/</A> -umlfreeroot-15.1.tar.gz (or highest numbered one). This is a - debian potato root file system. You can use this even on a Redhat - host, as it has the newer GLIBC2.2 libraries as well. - - -<!-- If you are using - Redhat 7.2 or newer as your development machine, you can create the - image from your installation media. See <A HREF="uml-rhroot.html">Building a RedHat root"></A>. - A future document will explain how to build this from .DEB files as well. ---> - -<!-- -<LI> umlfreesharemini.tar.gz (or umlfreeshareall.tar.gz). - If you are a Debian potato user, you don't need it you can use your - native /usr/share. -</UL> ---> - -<LI> From <A HREF="ftp://ftp.xs4all.nl/pub/crypto/freeswan/">ftp://ftp.xs4all.nl/pub/crypto/freeswan/</A> -a snapshot or release (1.92 or better) - -<LI> From a - <A HREF="http://www.kernel.org/mirrors/">http://www.kernel.org mirror</A>, - the virgin 2.4.19 kernel. Please realize that we have defaults in our - tree for kernel configuration. We try to track the latest UML - kernels. If you use a newer kernel, you may have faults in the - kernel build process. You can see what the latest that is being regularly tested by visiting <A HREF="http://bugs.freeswan.org:81/regress/HEAD/lastgood/freeswan-regress-env.sh">freeswan-regress-env.sh</A>. - -<LI> -<!-- Note: this step is refered to as "step 1d" below. --> -Get - <A HREF="http://ftp.nl.linux.org/uml/">http://ftp.nl.linux.org/uml/</A> - uml-patch-2.4.19-47.bz2 or the one associated with your kernel. - As of 2003/03/05, uml-patch-2.4.19-47.bz2 works for us. -<STRONG>More recent versions of the patch have not been tested by us.</STRONG> -<LI> You'll probably want to visit -<A - HREF="http://user-mode-linux.sourceforge.net">http://user-mode-linux.sourceforge.net</A> -and get the UML utilities. These are not needed for the build or interactive use (but recommended). They are necessary for the regression testing procedures used by "make check". -We currently use uml_utilities_20020212.tar.bz2. -<LI> -You need tcpdump version 3.7.1 or better. -This is newer than the version included in most LINUX distributions. -You can check the version of an installed tcpdump with the --version flag. -If you need a newer tcpdump -fetch both tcpdump and libpcap source tar files from -<A HREF="http://www.tcpdump.org/">http://www.tcpdump.org/</A> or a mirror. -</OL> - -<LI> Pick a suitable place, and extract the following files: -<OL type="a"> -<LI> -<!-- Note: this step is refered to as "step 2a" later. --> -2.4.19 kernel. For instance: -<PRE> -<CODE> - cd /c2/kernel - tar xzvf ../download/pub/linux/kernel/v2.4/linux-2.4.19.tar.gz -</CODE> -</PRE> - -<LI> extract the umlfreeroot file -<!-- (unless you <A HREF="uml-rhroot.html">built your own from RPMs</A>) --> -<PRE> -<CODE> - mkdir -p /c2/user-mode-linux/basic-root - cd /c2/user-mode-linux/basic-root - tar xzvf ../download/umlfreeroot-15.1.tar.gz -</CODE> -</PRE> - -<LI> FreeSWAN itself (or checkout "all" from CVS) -<PRE> -<CODE> - mkdir -p /c2/freeswan/sandbox - cd /c2/freeswan/sandbox - tar xzvf ../download/snapshot.tar.gz -</CODE> -</PRE> -</OL> - -<LI> If you need to build a newer tcpdump: -<UL> -<LI> -Make sure you have OpenSSL installed -- it is needed for cryptographic routines. -<LI> -Unpack libpcap and tcpdump source in parallel directories (the tcpdump -build procedures look for libpcap next door). -<LI> -Change directory into the libpcap source directory and then build the library: -<PRE> -<CODE> - ./configure - make -</CODE> -</PRE> -<LI> -Change into the tcpdump source directory, build tcpdump, and install it. -<PRE> -<CODE> - ./configure - make - # Need to be superuser to install in system directories. - # Installing in ~/bin would be an alternative. - su -c "make install" -</CODE> -</PRE> -</UL> -<LI> If you need the uml utilities, unpack them somewhere then build and install -them: -<PRE> -<CODE> - cd tools - make all - # Need to be superuser to install in system directories. - # Installing in ~/bin would be an alternative. - su -c "make install BIN_DIR=/usr/local/bin" -</CODE> -</PRE> -<LI> set up the configuration file -<UL> -<LI> -<CODE> -cd /c2/freeswan/sandbox/freeswan-1.97/testing/utils -</CODE> -<LI> copy umlsetup-sample.sh to ../../umlsetup.sh: -<CODE> - cp umlsetup-sample.sh ../../umlsetup.sh -</CODE> - -<LI> open up ../../umlsetup.sh in your favorite editor. -<LI> change POOLSPACE= to point to the place with at least 500Mb of -disk. Best if it is on the same partition as the "umlfreeroot" extraction, -as it will attempt to use hard links if possible to save disk space. - -<LI> Set TESTINGROOT if you intend to run the script outside of the - sandbox/snapshot/release directory. Otherwise, it will configure itself. - -<LI> KERNPOOL should point to the directory with your 2.4.19 kernel - tree. This tree should be unconfigured! This is the directory - you used in step 2a. - -<LI> UMLPATCH should point at the bz2 file you downloaded at 1d. - If using a kernel that already includes the patch, set this to /dev/null. - -<LI> FREESWANDIR should point at the directory where you unpacked - the snapshot/release. Include the "freeswan-snap2001sep16b" - or whatever in it. If you are running from CVS, then - you point at the directory where top, klips, etc. are. - The script will fix up the directory so that it can be - used. - -<LI> BASICROOT should be set to the directory used in 2b, or to the directory - that you created with RPMs. - -<LI> SHAREDIR should be set to the directory used in 2c, to /usr/share - for Debian potato users, or to $BASICROOT/usr/share. -</UL> - -<LI> <PRE><CODE> -cd $TESTINGROOT/utils -sh make-uml.sh -</CODE></PRE> - It will grind for awhile. If there are errors it will bail. - If so, run it under "script" and send the output to bugs@lists.freeswan.org. - -<LI> You will have a bunch of stuff under $POOLSPACE. - Open four xterms: - -<PRE><CODE> - for i in sunrise sunset east west - do - xterm -name $i -title $i -e $POOLSPACE/$i/start.sh & - done -</CODE></PRE> - -<LI> Login as root. Password is "root" - (Note, these virtual machines are networked together, but are not - configured to talk to the rest of the world.) - -<LI> verify that pluto started on east/west, run "ipsec look" - -<LI> login to sunrise. run "ping sunset" - -<LI> login to west. run "tcpdump -p -i eth1 -n" - (tcpdump must be version 3.7.1 or newer) - -<LI> Closing a console xterm will shut down that UML. - -<LI> You can "make check", if you want to. -It is run from /c2/freeswan/sandbox/freeswan-1.97.</LI> - -</OL> - -<H1>Debugging the kernel with GDB</H1> - -<P> -With User-Mode-Linux, you can debug the kernel using GDB. -See <HREF="http://user-mode-linux.sourceforge.net/debugging.html">http://user-mode-linux.sourceforge.net/debugging.html</A>. -</P> - -<P> -Typically, one will want to address a test case for a failing situation. -Running GDB from Emacs, or from other front ends is possible. First start GDB. -</P> -<P> -Tell it to open the UMLPOOL/swan/linux program. -</P> -<P> -Note the PID of GDB: -<PRE> -marajade-[projects/freeswan/mgmt/planning] mcr 1029 %ps ax | grep gdb - 1659 pts/9 SN 0:00 /usr/bin/gdb -fullname -cd /mara4/freeswan/kernpatch/UMLPOOL/swan/ linux -</PRE> -</P> - -<P> -Set the following in the environment: -<PRE> -UML_east_OPT="debug gdb-pid=1659" -</PRE> -</P> - -<P> -Then start the user-mode-linux in the test scheme you wish: -<PRE> -marajade-[kernpatch/testing/klips/east-icmp-02] mcr 1220 %../../utils/runme.sh -</PRE> - -The user-mode-linux will stop on boot, giving you a chance to attach to the process: - -<PRE> -(gdb) file linux -Reading symbols from linux...done. -(gdb) attach 1 -Attaching to program: /mara4/freeswan/kernpatch/UMLPOOL/swan/linux, process 1 -0xa0118bc1 in kill () at hostfs_kern.c:770 -</PRE> - -<P> -At this point, break points should be created as appropriate. -</P> - -<H2>Other notes about debugging</H2> - -<P> -If you are running a standard test, after all the packets are sent, the UML will -be shutdown. This can cause problems, because the UML may get terminated while you -are debugging. -</P> -<P> -The environment variable <CODE>NETJIGWAITUSER</CODE> can be set to "waituser". -If so, then the testing system will prompt before exiting the test. -</P> - -<H1>User-Mode-Linux mysteries</H1> - -<UL> -<LI> running more than one UML of the same name (e.g. "west") can cause - problems. -<LI> running more than one UML from the same root file system is not - a good idea. -<LI> all this means that running "make check" twice on the same machine - is probably not a good idea. -<LI> occationally, UMLs will get stuck. This can happen like: -<BLOCK> -15134 ? T 0:00 /spare/hugh/uml/uml2.4.18-sept5/umlbuild/east/linux (east) [/bin/sh] -15138 ? T 0:00 /spare/hugh/uml/uml2.4.18-sept5/umlbuild/east/linux (east) [halt] - </BLOCK> - -these will need to be killed. Note that they are in "T"racing mode. -<LI> UMLs can also hang, and will report "Tracing myself and I can't get out". -This is a bug in UML. There are ways to find out what is going on and -report this to the UML people, but we don't know the magic right now. -</UL> - -<H1>Getting more info from uml_netjig</H1> - -<P> -uml_netjig can be compiled with a built-in tcpdump. This uses not-yet-released -code from <A HREF="http://www.tcpdump.org/">www.tcpdump.org</A>. -Please see the instructions in <CODE>testing/utils/uml_netjig/Makefile</CODE>. -</P> - -</body> -</html> |