                    NUL: NOVA Userland Xmas Alpha
                    =============================

Table of Contents
=================
0 Introduction
1 Directory Layout 
    1.1 /vancouver/ 
    1.2 /demo/ 
    1.3 /build/
2 Prerequisites 
3 Building 
4 Booting 
5 Third-Party Software 


0 Introduction
~~~~~~~~~~~~~~

This is a prerelease of NUL the NOVA UserLand.  It complements the
NOVA microhypervisor with a couple of applications, mainly a virtual
machine monitor and a hardware resource multiplexer.

The code is still experimental and far from feature complete.  Use it
on your own risk.  If it breaks, you get to keep both pieces.  If you
have feedback, please sent it to <bk@vmmon.org>.


1 Directory Layout 
~~~~~~~~~~~~~~~~~~

  The NUL tree consists of several applications and libraries, which
  are loosely grouped by topic into repositories. Each subdirectory of
  the top-level directory is a repository.

1.1 /vancouver/ 
================

    This repository contains the VMM called vancouver and the hardware
    resource multiplexer called sigma0.


1.2 /demo/ 
===========
    
    We keep a small set of demo applications in /demo/.

1.3 /build/
===========
    
    The standard build directory.


2 Prerequisites 
~~~~~~~~~~~~~~~~

   - *Binutils* 2.19 or later
   - *GCC* 4.1.2, 4.3.4, or 4.4.2
   - *SCons* 1.2.0 or later

3 Building 
~~~~~~~~~~~

  To build NUL you need a build directory. Luckily, there is already a
  preconfigured one in /build/. We use a minimal SCons-based build
  system that mostly does what we want. So to build the default
  configuration just cd into build and type `scons'. Binaries will be
  installed in build/bin by default.

  To use a customized build configuration, copy the default build
  repository and adapt its SConstruct file.

  There are some variables that can be passed to SCons in order to
  control the build process.  To compile NUL with an old version of
  GCC, for example, type: `scons target_cc=gcc-4.2.4 target_cxx=g++-4.2.4'

    *Argument*         *Description*                
   ------------------+-----------------------------
    target_cc=mycc     Compile C code with mycc.    
   ------------------+-----------------------------
    target_cxx=myc++   Compile C++ code with myc++  

4 Booting 
~~~~~~~~~~

  The boot process is currently in flux and thus not documented. If
  you want to boot your own binaries, please read the /menu.lst/ that
  is available on the Demo CD.

5 Third-Party Software 
~~~~~~~~~~~~~~~~~~~~~~~

NUL reuses currently some code from the following projects:

 - QEMU's ne2k model: http://www.qemu.org/

See the contrib directories for details.
