User Mode openMosix                         by Matt Rechenburg
... a virtual openMosix cluster running in User-mode

HowTo install/configure/run um-openMosix
Introduction
What is UML ?
What is openMosix ?
get the um-openMosix patch
patching the kernel
creating a root_fs
booting the system
debugging with gdb
compiling with ccache
screenshot
known bugs
thanks



openMosix



Introduction
The purpose for creating this patch was to start kernel-developing,
learn more about the internals of the linux-kernel and to understand the concept
of openMosix and User-Mode Linux.
I am far away from being a kernel-professional so please be patient
and report bugs or submit patches to me.
The funny thing is that you can really look into a running openMosix-system
and the most of the openMosix-functionality are working.
There is an attached gdb-window to the running system which makes debugging
very easy e.g. you can "stop" the whole virtual-user-mode system which
is running in one of your terminal windows and look through all registers
or execute the kernel in single-step mode.
Sorry, but process-migration is not working yet!
I had to disable 3 openMosix-functions in the source-code to make it working
like it is now. If you have a solution it is welcome for sure.


What is UML ?
UML means "User Mode Linux". It is a possiblity to Run Linux inside itself.
from the The User-mode Linux Kernel Home Page:
User-Mode Linux is a safe, secure way of running Linux versions and Linux processes.
Run buggy software, experiment with new Linux kernels or distributions, and poke around
in the internals of Linux, all without risking your main Linux setup.
User-Mode Linux gives you a virtual machine that may have more hardware and software
virtual resources than your actual, physical computer.
Disk storage for the virtual machine is entirely contained inside a single file on your physical machine.
You can assign your virtual machine only the hardware access you want it to have.
With properly limited access, nothing you do on the virtual machine can change or
damage your real computer, or its software.


What is openMosix ?
openMosix is a Linux kernel extension for single-system image clustering.
from the openMosix-website:
openMosix is the GPLv2, Open Source, project to extend Prof. Barak's outstanding Mosix project.
New releases of Mosix became proprietary software in late 2001 and
openMosix was begun February 10, 2002 by Moshe Bar to keep this
highly regarded Linux Clustering solution available as open source.
openMosix quickly acquired an international team of volunteers that captured prior releases
of the GPL code and started to immediately improve and extend the solution.


get the um-openMosix patch
Download the latest um-openMosix-patch from the SourceForge Files Section
of the openMosix-Project or directly from here :
openMosix-UML-2.4.17-1.gz

Also i provide a "developer-patch" (it maybe will not compile) which
contains my current sources (and problems) from the umopenMosix.
If you want to help please download this patch here patch_umopenmosix_devel_003.gz.
You can read about the changes in the development-version in the
changelog here

patching the kernel
First download a clean "vanilla" Kernel 2.4.17 from
http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.17.tar.gz
Copy the linux-2.4.17.tar.gz to /usr/src on your system:

    cp linux-2.4.17.tar.gz /usr/src

Now cd into /usr/src and gunzip + untar it:

    cd /usr/src
    gunzip linux-2.4.17.tar.gz
    tar -xvf linux-2.4.17.tar

This creates a directory /usr/src/linux so be sure to backup
your "old" /usr/src/linux directory before !
Move linux to linux-2.4.17

    mv linux linux-2.4.17

Copy the um-openMosix-Patch to /usr/src

    cp openMosix-UML-2.4.17-1.gz /usr/src

unzip and apply the patch:

    gunzip openMosix-UML-2.4.17-1.gz
    patch -p0 < openMosix-UML-2.4.17-1

cd into the patched kernel sources:

    cd linux-2.4.17

Clean up the kernel-sources, create config and compile the um-openMosix kernel:

    make mrproper ARCH=um
    make clean ARCH=um
    cp node1_uml_config.openmosix .config
    make menuconfig ARCH=um
    make dep ARCH=um
    make linux ARCH=um
    make modules ARCH=um
    mount root_fs mnt -o loop
    make modules_install INSTALL_MOD_PATH=`pwd`/mnt ARCH=um
    umount mnt


The "node1_uml_config.openmosix" example config file is include
in the patch and you will find it after patching in your kernel
source directory. Also there is a file called "howto_compile.txt"
which contains the commands to create a um-openMosix kernel.

Be sure to add "ARCH=um" to all "make" commands !!
The kernel should compile without serious error-messages and the
resulting um-openMosix kernel will be named "linux" in
/usr/src/linx-2.4.17

creating a root_fs
UML-linux creates a virtual system on top of your running linux-system.
To boot up the um-openMosix kernel you need a "root_fs" which is a file
which contains a complet linux-distribution for the virtual system to run on.
You can download pre-created "root_fs" bootable filesystem for User-mode linux
from :
http://user-mode-linux.sourceforge.net/dl-sf.html
or create them by yourself with e.g. umlbuilder.
It has even a graphical interface and makes it very easy to create an
own "root_fs" filesystem out of an existing linux-distribution.
If you plan to build it yourself there is a detailed howto and more informations
about the uml-tools at :
http://user-mode-linux.sourceforge.net/fs_making.html

booting the system
If you have the um-openMosix kernel compiled and the "root_fs" ready it
is time now to boot up your virtual-openMosix system.
Simply run "linux"
It will try to mount the file "root_fs" in the current directory.
If your root filesystem is not named `root_fs', then you need to put a
"ubd0=root_fs_atmyplace"
switch on the linux command line.
At boot-up a gdb-session is directly connected to your booting-kernel.
It will open a gdb-window and stop. Type "c" for continue and the UML-system
will continue to boot-up.
After the boot-process you should get another terminal window on
your screen which prompts for login to your um-openMosix system.
(downloadable filesystems have a root account with password "root" and a user account with password "user")
If you have created your own filesystem with "umlbuilder" you will also have
a "control" script to start/stop the uml-openMosix system.

.... time to install the openMosix-user-tools now.

debugging with gdb
The great advantage of um-openMosix is that a boot-up a gdb debugger-session
is directly connected to the running user-mode linux-system.
So you can stop the whole system at any time with "ctrl-c" in the debugger window
and explore its internals just like a normal user-program.
Then you can type "c" in the debugger window and the system will continue to run.
For more informations on debugging user-mode linux visit:
http://user-mode-linux.sourceforge.net/debugging.html

compiling with ccache
If you are developing on the linux-kernel you have to recompile the whole kernel-source
again and again. That could be very time-consuming.
For speeding up the compilations process i prefer using "ccache" which is
a compiler cache. It helped me very much (as well as my openMosix-cluster) and maybe it is usefull for you too.
If you would like to compile your um-openMosix kernel with "ccache" (it has to be installed on your system)
you can copy the "Makefile.ccache" to "Makefile" in your kernel source directory
and it will use "ccache" during compilation.

    cp Makefile.ccache Makefile

More informations about "ccache" at:
http://ccache.samba.org/

screenshot
klick here for a sreenshot of a running umopenMosix system

known bugs
Process-migration is not working yet!
I had to disable 3 openMosix-functions in the source-code to make it working like it is now.
If you have a solution it is welcome for sure.
Please submit any bug to Matt Rechenburg

thanks
BIG thanks to Moshe Bar for his great openMosix-project! (and much more...)
Also i want to say "thanks" to
the openMosix-community for their good work,
the "User Mode Linux" guys for their "look-inside-linux",
the generous sponsorship of Qlusters, Inc
and last (but first) my lovely wife which gives me time to code


Linux is a registered trademark of Linus Torvalds.
openMosix is Copyright (c) 2002 by Moshe Bar.
MOSIX is developed by Prof. Amnon Barak.
all other registered trademarks are owned by their owners