Glatt MU

Introduction

Glatt MU is a multiserver operating environment. Right now, the kernel is Glatt MU/MK, a portable microkernel written in C. No servers have been implemented yet, but work on MU/MK has been ongoing from January 2006.

Release

No releases of Glatt MU have been released yet, but one named Kailua is planned for some time around December 2009, and that is currently in development.

Platforms

MU/MK currently supports 64-bit MIPS systems using the MIPS III ISA running one of two platforms made available with the wonderful GXemul emulator:

Note that minimal device drivers are provided and that much hardware functionality may not be usable due to incompleteness of software components of Glatt MU and/or a lack of hardware support.

Future

Skeleton, experimental ports exist or have existed in the past for some additional processors and platform types:

None of these ports are currently supported, although some are or may soon be in active development.

Requirements

Build system

In terms of operating system, most Glatt MU development occurs on FreeBSD and Mac OS X. Any Unix-like system should do, in theory. A long-term goal is, of course, to be self-hosting, but that seems a long time away indeed. To do the actual building, a PMake-compatible make is required, such as that which comes with FreeBSD or the Mac OS X bsdmake. A mid-term goal is to provide a build driver. A toolchain for supported targets and platform is provided, including GCC and GNU binutils.

Simulator

While running Glatt MU on real hardware is obviously a goal, you should plan on using it in GXemul for now unless you are planning on porting it.

Source

All Glatt MU development now happens in Subversion, which allows us to provide anonymous access to the source tree. If checking out some strange source tree sight-unseen isn't your idea of a good time, the source code is also browsable via ViewVC at:

http://glatt.mu/viewvc/index.cgi/glatt/trunk/
First, create a directory to house your Glatt MU sources and toolchain and enter it, for example:
mkdir Glatt
cd Glatt
Second, check out a copy of the Glatt MU sources into a directory under that directory as Glatt-src:
svn co http://glatt.mu/svn/trunk Glatt-src
Third, check out a copy of the provided vendor sources, which includes the sources for versions of GCC and GNU binutils, named vendor-src and in the same directory Glatt-src is in — the one created in the first step:
svn co http://glatt.mu/svn/vendor vendor-src

License

Glatt MU is covered by a standard 2-clause BSD-style license. Vendor sources and other included sources whose copyright is held by third parties are covered by their respective licenses.

Building

There is a build system rooted in the Glatt-src directory which can handle just about everything you're likely to need in terms of building. If you run the bsdmake program, you will be presented with a list of available targets, and you may invoke any of them, like:

bsdmake mk-options
And you may request more information on them by adding the suffix -help to the target name, for example:
bsdmake mk-options-help
The name bsdmake is used for clarity to refer to a PMake-compatible make. If your system make is a BSD make or is PMake, you should use it instead.

Configuration

In the Glatt-src directory you must create a file named config.mk. This contains a series of settings which the build system will use for a number of things. This file will be read by the make program and thus may contain comments beginning with a hash character (#.)

Platform

The platform which is being built must be specified. The platform name corresponds to a directory under Glatt-src/mk/platform. For example, to use the GXemul test machine:

PLATFORM=testmips

Microkernel options

A build of the microkernel may be configured with a number of options, including device drivers and debugging facilities to be compiled in. This also allows enabling and disabling of a number of large, independent features at build-time. The default, standard set of options and drivers for any platform is std. The std option may not include a driver or feature that you wish to be included. For example, the kernel debugger, called db, can be included by specifying a configuration of std+db. One can also disable features. For example, the IPC facility is enabled by default but can be disabled with a configuration of std-ipc. These can be combined logically, for example std+db-ipc.

What is part of std varies across platforms. For example, those platforms which have PCI support may include pci while those that do not are unlikely to. The options which are available likewise varies. The following command may be run undr Glatt-src to be shown a list of available options (including which are enabled and disabled at present):

bsdmake mk-options
If you wish to use a configuration other than the standard configuration, you can set the MK_CONFIG variable in config.mk. For example:
MK_CONFIG=std+db-ipc

Example

A common config.mk may look like:

PLATFORM=testmips
MK_CONFIG=std+db

Toolchain

If you wish to use the provided toolchain, simply run the following in the Glatt-src directory:

bsdmake toolchain
This will build a toolchain in toolchain-root in the directory containing Glatt-src. The rest of the build system will know it can find the toolchain there.

Microkernel

To build the microkernel, simply run the following in the Glatt-src directory:

bsdmake mk
This will create a directory, mk.obj, and build the microkernel there. Iff the microkernel builds, the microkernel binary will be named mk.obj/mk.

Incremental builds

If you change any source files, you may perform an incremental build by running:

bsdmake mk-build
Note that if you are changing headers (no dependency tracking is done) or if you change your configuration, you may not do an incremental build.

Simulation

To use the built-in rules for running a simulator, run the following, after building the microkernel, in the Glatt-src directory:

bsdmake mk-simulate
This will launch the simulator for your platform.

Simulation options

This section unfortunately left blank.

Contact

Juli Mallett is the primary developer of Glatt MU and you can email her at juli@clockworksquid.com with any questions or problems.