#!/bin/sh # this script demonstrates how to build a testing environment # for translucency with user-mode-linux (UML) space=/tmp/space mkdir -p $space ; cd $space kver=2.4.22 # get current kernel from your local mirror wget ftp://ftp.de.kernel.org/pub/linux/kernel/v2.4/linux-$kver.tar.bz2 # get current uml-patch ver1=$kver-5 ver=${ver1}um wget http://belnet.dl.sourceforge.net/sourceforge/user-mode-linux/uml-patch-$ver1.bz2 # get some root_fs # root_fs_toms1.7.205.bz2 does have outdated modutils so wget http://translucency.sourceforge.net/dl/root_fs.bz2 # or see http://translucency.sourceforge.net/doc/howto_build_uml_root_fs.txt bzip2 -dk root_fs.bz2 mount -o loop root_fs /mnt # now uncompress linux kernel and patch in UML tar xjf linux-$kver.tar.bz2 cd linux bzip2 -cd ../uml-patch-$ver1.bz2 | patch -p1 # enable COW device support (Block Devices menu) # I compiled hostfs into the kernel (General Setup menu) - no more changes make menuconfig dep ARCH=um make linux modules ARCH=um make modules_install INSTALL_MOD_PATH=/mnt/ ARCH=um cp -a System.map /mnt/boot/System.map-$ver cp -a linux /usr/bin cd .. # get latest translucency from sourceforge CVS (press Enter at password prompt) cvs -d:pserver:anonymous@cvs.translucency.sourceforge.net:/cvsroot/translucency login cvs -z3 -d:pserver:anonymous@cvs.translucency.sourceforge.net:/cvsroot/translucency co translucency cd translucency # or later just "cvs update" inside the translucency directory # now compile translucency lkm with uml include dir make clean all ARCH=um KERNELDIR_UM=$space/linux # and install it - alternatively you may do later within uml "mount /host" install -D -m 644 translucency.o /mnt/lib/modules/$ver/kernel/fs/ # create something of a testing hierarchy (included in my root_fs) top=/mnt/tmp if ! [ -e $top/2 ] ; then mkdir -p $top/2/4/8 $top/3/9/27 $top/2/6/12 $top/3/6/18 echo 2 4 8 > $top/2/4/8/test echo 3 6 18 > $top/3/6/18/test echo 2 6 > $top/2/6/test echo 3 6 > $top/3/6/test fi umount /mnt cd $space # finally start your newly compiled uml kernel # (cow means copy-on-write - if you damage something just do rm /tmp/cow ) linux ubd0=/tmp/cow,root_fs # and enter something like #insmod translucency #echo "/tmp/2 -> /tmp/3" > /proc/sys/translucency/0 #cat /tmp/2/6/test # be sure to use the same version of uml for linux "kernel" and modules