Contents Previous Next

User-Mode-Linux Testing guide

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

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.

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.

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.

  1. Get the following files:
    1. from umlfreeroot-6.0.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.
    2. From a snapshot or release (1.92 or better)
    3. From mirror, the virgin 2.4.17 kernel. (if you get a future kernel, then please report success/failure. AC kernels already have UML patched, so the patch is unnecessary. Below, set UMLPATCH to /dev/null.)
    4. Get uml-patch-2.4.17-10.bz2 or the one associated with your kernel. If you use an AC kernel, you don't need this patch. More recent versions of the patch have not been tested by us.
    5. You'll probably want to visit 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.
    6. 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 or a mirror.
  2. Pick a suitable place, and extract the following files:
    1. 2.4.17 kernel. For instance:
                  mkdir -p /c2/kernel/linux-2.4.17
                 cd /c2/kernel/linux-2.4.17
                 tar xzvf ../download/pub/linux/kernel/v2.4/linux-2.4.17.tar.gz
    2. extract the umlfreeroot file
                  mkdir -p /c2/user-mode-linux/basic-root
                 cd /c2/user-mode-linux/basic-root
                 tar xzvf ../download/umlfreeroot-6.0.tar.gz
    3. FreeSWAN itself (or checkout "all" from CVS)
                  mkdir -p /c2/freeswan/sandbox
                 cd /c2/freeswan/sandbox
                 tar xzvf ../download/snapshot.tar.gz
  3. If you need to build a newer tcpdump:
  4. If you need the uml utilities, unpack them somewhere then build and install them:
     	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"
  5. set up the configuration file
  6.  cd $TESTINGROOT/utils
    It will grind for awhile. If there are errors it will bail. If so, run it under "script" and send the output to
  7. You will have a bunch of stuff under $POOLSPACE. Open four xterms:
         for i in sunrise sunset east west
            xterm -name $i -title $i -e $POOLSPACE/$i/     done
  8. 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.)
  9. verify that pluto started on east/west, run "ipsec look"
  10. login to sunrise. run "ping sunset"
  11. login to west. run "tcpdump -p -i eth1 -n" (tcpdump must be version 3.7.1 or newer)
  12. Closing a console xterm will shut down that UML.
  13. You can "make check", if you want to. It is run from /c2/freeswan/sandbox/freeswan-1.97.

Contents Previous Next