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.
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.
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:
Skeleton, experimental ports exist or have existed in the past for some additional processors and platform types:
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.
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.
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 GlattSecond, check out a copy of the Glatt MU sources into a directory under that directory as Glatt-src:
cd Glatt
svn co http://glatt.mu/svn/trunk Glatt-srcThird, 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
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.
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-optionsAnd you may request more information on them by adding the suffix -help to the target name, for example:
bsdmake mk-options-helpThe 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.
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 (#.)
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
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-optionsIf 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
A common config.mk may look like:
PLATFORM=testmips
MK_CONFIG=std+db
If you wish to use the provided toolchain, simply run the following in the Glatt-src directory:
bsdmake toolchainThis 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.
To build the microkernel, simply run the following in the Glatt-src directory:
bsdmake mkThis will create a directory, mk.obj, and build the microkernel there. Iff the microkernel builds, the microkernel binary will be named mk.obj/mk.
If you change any source files, you may perform an incremental build by running:
bsdmake mk-buildNote that if you are changing headers (no dependency tracking is done) or if you change your configuration, you may not do an incremental build.
To use the built-in rules for running a simulator, run the following, after building the microkernel, in the Glatt-src directory:
bsdmake mk-simulateThis will launch the simulator for your platform.
This section unfortunately left blank.
Juli Mallett is the primary developer of Glatt MU and you can email her at juli@clockworksquid.com with any questions or problems.