NomadBios Project

Introduction

The aim of the NomadBios project is to allow several operating systems to run on the same computer. Currently it runs severals instances of Linux 2.2 at near-native speed.

NomadBios is based on the L4 micro-kernel architecture, and the port of Linux to L4, known as L4Linux. NomadBios runs on top of L4 (currently only the Fiasco version on i386), and one or more modified L4Linuxes run on top of NomadBios.

NomadBios uses the Utah OSKit for I/O, and currently only supports TCP/IP networking for talking to the outside world. Booting is typically done over NFS.

Other than the ability to run several Linuxes at once, NomadBios' main feature is its near-instant hot-migration of Linuxes across machines. By using a precopy technique, NomadBios is able to migrate a fully running Linux between two machines (which do not need to have the exact same hardware) with a downtime of less than 1/10 second on a 100Mbit network.

What's it for?

We imagine that NomadBios might be usable in a Grid or Cluster environment. Operating systems are practical units of migration, because they have no residual dependencies (open files, shared memory, etc.), and because they allow you to run standard software at native processor speed. It might also allow you to carry your entire running OS around on a USBKey or iPod, if your laptop feels too heavy, though that is still a bit in the future.

Whodunnit?

Nomadic Linux is based on L4Linux by the L4 team. NomadBios and Nomadic Linux are the works of Asger Henriksen and Jacob Gorm Hansen, both students at DIKU.

Present state

NomadBios is our thesis project. People have asked if they could try it, so we put up this quick web-page for posting information on the project. NEW: Download the thesis here.

The thesis was defended on 18th December 2002 and rewarded with the grade "11" (corresponding to an A in the European standard grade conversion system according to our sources).

Currently NomadBios seems quite stable, though it has only been tested on a small network of two machines, with hard-coded IP-addresses because the OSKit bootp-code is not working for us. There are some limitations in the Fiasco kernel, namely that it only support up to 256 megs of memory, and a maximum of 2047 tasks, which have to divided between guest OSes. We have successfully run about five guest OSes at the same time, mainly due to the limitations mentioned above.

How to try it out

You need a few things to try it:

Still interested? You may download the source and binaries here

Sources are also available in their most current form via anonymous cvs. To get them do :

Two modules are available, linux22 and nomadbios. To get the working version of the linux22 source, you must checkout the branch called guest

Contacts

Write to jacob _at_ melon.dk for more info.