Getting started
From VirtualSquare
Contents |
[edit] System requirements
- Development tools
- GNU C Compiler
- GNU Make
- Automake
- Autoconf
- CVS (obsolete)
- Subversion
- Patch
- Development Libraries
- Further libraries and headers (to enable filesystems in user-space within umview)
- Further tools (to configure the LwIPv6 stack)
- Iproute tools
- tunctl
NOTES
- Tools like VDE have been ported successfully to other hardware and software architectures. VDE is currently supported and distributed by Debian GNU/Linux, Gentoo, FreeBSD and Mac OS X. It is also possible to run VDE under GNU/Linux ports for other hardware architectures like ARM, MIPS, MIPSEL, SPARC, HPPA and others.
- Links to other libraries needed to compile and run umview reference to software homepage or descrition. They can be found already packaged in most GNU/Linux distributions.
[edit] Installing Virtual Square Tools
[edit] From precompiled Debian packets
Virtual Square libraries and tools are available as precompiled and pre-packaged binaries under Debian Debian GNU/Linux 4.0 unstable (SID). To get them installed you'll need to run the following commands with root priviledges:
For VDE:
# apt-get install vde2
For UMVIEW:
# apt-get install umview umview-mod-umfuseiso9660 umview-mod-umfuseext2 umview-mod-umlwip umview-mod-umdevtap
[edit] From source code
Source code of Virtual Square tools is available via downloadable tarballs or by checking them out from SVN access to the source tree. It may be a better choice to get source code directly from SVN since tarballs on project site are often outdated. SVN takes you to the bleeding edge of the code development, but sometimes the downloaded code can be less stable.
Older tarballs for View-OS, LWIPv6 and purelibc are still available via the Savannah website:
New releases will be made available on SourceForge:
VDE is available on the SourceForge project page:
[edit] Install development tools and files
Install common development tools:
# apt-get install gcc make # apt-get install autoconf automake libtool # apt-get install cvs # apt-get install patch # apt-get install subversion
Install libraries for UMView:
# apt-get install libiso9660-4 libiso9660-dev libfuse2 libfuse-dev e2fslibs
Install libraries for LwIPv6:
# apt-get install libpcap-dev
Install network configuration tools for LwIPv6:
# apt-get install iproute # apt-get install uml-utilities
[edit] Light Weight IPv6
Downloading lwipv6 from CVS repository (OBSOLETE)
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/view-os co LWIPV6a
Downloading lwipv6 from SubVersion repository
$ svn co https://view-os.svn.sourceforge.net/svnroot/view-os/trunk/lwipv6
Building Lwipv6
$ cd lwipv6 $ autoreconf --install $ ./configure $ make
[edit] Pure Libc
Downloading purelibc from CVS
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/view-os co pure_libc
Building purelibc
$ cd pure_libc $ autoreconf --install $ ./configure $ make
[edit] Virtual Distributed Ethernet
Downloading vde from CVS
$ cvs -d:pserver:anonymous@vde.cvs.sourceforge.net:/cvsroot/vde login Logging in to :pserver:anonymous@vde.cvs.sourceforge.net:2401/cvsroot/vde CVS password: <----- hit return without typing any password ;-) $ cvs -z3 -d:pserver:anonymous@vde.cvs.sourceforge.net:/cvsroot/vde co vde-2
Building vde
$ cd vde-2 $ autoreconf --install $ ./configure $ make
[edit] UMview
Downloading umview from CVS repository (OBSOLETE)
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/view-os co UMVIEWOS
Downloading umview from SVN repository
$ svn co https://view-os.svn.sourceforge.net/svnroot/view-os/trunk/xmview-os
Building umview
$ cd xmview-os $ autoreconf --install $ ./configure $ make
[edit] Kernel optimization
Like many other virtual machine monitors umview uses the ptrace provided by the hosting kernel.
ptrace was originally designed as a debugging tool and for this reason it was not developed with high performance in mind.
UMview comes with two kernel patch that can be optionally applied to the hosting kernel to improve ptrace performance.
$ cd UMVIEWOS/kernelpatch4performance $ ls -l -rw-r--r-- 1 render render 6478 2006-01-18 14:39 patch-linux-2.6.15-ptmulti -rw-r--r-- 1 render render 19957 2006-02-05 19:23 patch-linux-2.6.15-ptmulti-ptvm -rw-r--r-- 1 render render 6418 2006-04-03 11:10 patch-linux-2.6.16-ptmulti -rw-r--r-- 1 render render 19280 2006-04-03 11:10 patch-linux-2.6.16-ptmulti-ptvm -rw-r--r-- 1 render render 6973 2006-04-18 12:15 patch-linux-2.6.17-ptmulti -rw-r--r-- 1 render render 19898 2006-04-18 12:15 patch-linux-2.6.17-ptmulti-ptvm -rw-r--r-- 1 render render 6943 2006-10-24 15:26 patch-linux-2.6.18-ptmulti -rw-r--r-- 1 render render 19490 2006-10-24 15:26 patch-linux-2.6.18-ptmulti-ptvm -rw-r--r-- 1 render render 6919 2006-12-01 18:07 patch-linux-2.6.19-ptmulti -rw-r--r-- 1 render render 19018 2006-12-01 18:07 patch-linux-2.6.19-ptmulti-ptvm -rw-r--r-- 1 render render 19956 2006-01-07 13:39 patch-viewos-2.6.14.diff -rw-r--r-- 1 render render 1908 2006-02-05 19:23 README
Inside UMview sourcetree, in the kernelpatch4performance directory there are several patches
for latest Linux 2.6 kernels.
There are currently two different kernel patches.
- patches marked with
ptmultican be considered entry level optimizations - patches marked with
ptmulti-ptvmadd more advanced optimizations toptmulti
[edit] Applying the patch
First of all you need to start from a Linux kernel source tree. You can get Linux kernel source code from official site or by installing one of the kernel-source package with your favorite GNU/Linux distribution package management system (i.e. apt for debian, emerge for gentoo and so on).
Once you have installed or downloaded kernel source code go to the filesystem location where kernel sources are. If needed extract them from their tarball.
$ cd /usr/src $ tar xjf linux-2.6.X.Y.tar.bz2 $ cd linux-2.6.X.Y
At this point you have to choose the patch you are going to apply from ptmulti and ptmulti-pvm. Once decided let's patch kernel source code.
$ pwd /usr/src/linux-2.6.X.Y $ cat /path/to/umview/source/tree/UMVIEWOS/kernelpatch4performance/patch-linux-2.6.X-Z | patch -p1
Don't forget that during the usual kernel configuration for you hardware machine, you must enable ViewOS optimizations. Using menuconfig the [*] ViewOS Support (EXPERIMENTAL) option can be found under:
Linux Configuration Interface ---> General Setup
[edit] Fuse modules
In order to be able to mount filesystems in user-space inside umview environment you'll need few dynamically loadable modules coming from FUSE. When trying to mount a filesystem with type prefix like um umview will load the appropriate mode allowing to mount the filesystem without super-user permissions.
Some modules compiled for running as umview extensions and some other modules developed from scratch for research purpose are included in the umview sourcetree. They can be downloaded from the umview cvs:
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/view-os co FUSE_MODULES
Once downloaded they have to be compiled and installed in order to get reachable from umview.
$ cd FUSE_MODULES $ su -c ./install-all.sh
Errors may be encountered during installation process due to lack of ./configure script inside each module directory. It can be generated by running autoreconf --install inside each module's directory.

