New OSKit 0.96 released and a "Scheme machine"

Jay Lepreau
Wed, 23 Dec 98 14:39:05 MST

Also, check out the the appended msg: a grad student from Rice who had
never before seen the OSKit built a Scheme machine in five hours!

Good luck and please let us know of interesting uses and good and bad
feedback and fixes -- to both code and docs.  We really don't know how
easy it will be for people to use this newish COM stuff, which is
needed, but a bit more complicated than the simple old libraries.

From: Jay Lepreau <>
Message-Id: <>
Subject: The OSKit 0.96 is released
Date: Fri, 18 Dec 98 21:58:09 MST

Go to
and follow your nose for all the goodies.

Briefly: it's up to 30 component libraries now, comes with 45 example
mini-kernels, a 500 page (help!) document with few blank pages anymore
(although still lots of gaps in it), can be configured with full
multithreading and Posix threads, has prototype CPU inheritance scheduling
in it (5 policies including 2 real time), has a hierarchical network
link-sharing component, has a "simple virtual memory" component including
pageout.  Has most Linux and BSD filesystems, several networking libs, the
full FreeBSD C library (which means most of Posix), lots of device drivers
(perhaps 60), profiling support, and some minimal video and window manager
support.  A currently inelegant but useful component lets you run many
kernels on Unix in user-mode, which is great for debugging.  Most components
now use the COM object model, which is a first in internal OS design.

Just about every component is optional, and unlike any other OS, is designed
to fit into *other* operating systems and environments if desired.  Of
course the OSKit's got problems, too, don't we all.  There are a ton of
things that it needs.  One nice thing in that regard is that it's easy to
incrementally add to the OSKit.  Let's do it!

Re licensing, the OSKit comes with full source, and is GPL'ed; "open
source" is now the "in" term apparently.  If a business or someone has
trouble with the GPL, the University is willing to talk about other options.

As a special holiday bonus-- for such patience on your part-- this release
supports a version, which we provide, of the Kaffe OpenVM (Java to you) from
Transvirtual.  Thus you can link them together and you've got Kaffe on the
bare HW, or with a configuration change, you can run the same "Java OS" on
top of Unix.  Our Kaffe changes will go into the next beta release.
Thanks to Tim Wilkinson and his company for giving Kaffe to the world.

We are grateful to the long line of free software projects from whom we drew
code, including Mach, Linux, FreeBSD, NetBSD, and XFree86.  The GNU build
tools were, as always, invaluable.  DARPA's support has been great.

Finally, I want to thank and acknowledge the fine team at Utah that has
accomplished so much, and with whom I have the honor to work.  Check out
the CREDITS file for their names.

Jay Lepreau
University of Utah


Date: Sat, 19 Dec 1998 13:32:36 -0600 (CST)
From: Matthew Flatt <>
cc: lepreau@cs
Subject: MzScheme kernel

MzScheme 100/21 is now available in kernel form for x86 machines. In
other words, MzScheme can run as a stand-alone OS on your PC.

Practical? Perhaps eventually. For now, it's just fun. The MzScheme
kernel is based on OSKit from the Flux group at Utah.  Coverting
MzScheme to a kernel took about 5 hours, most of that being the time
to understand various aspects of the OSKit. I spent an additional 2 or
3 hours making MzScheme run as smooth as it does, but a little more
work is needed (as described below).

A LILO-friendly kernel is now available (on cs at Rice):


To install the kernel on a machine that already has Linux:

 1) Copy zMzScheme to / (or wherever you want).

 2) Edit /etc/lilo.conf, adding


   but change /dev/hda6 to be whatever is in your
   image=/boot/vmlinuz-2.0.32 line, and adjust the path in the
   image=/zMzScheme line if you didn't put zMzScheme it in the root

 3) Run `lilo' within Linux.

 4) Reboot.

 5) At the lilo boot prompt, type "mz" and hit return.

 6) Evaluate MzScheme expressions to your heart's content.

In principle, you don't even need Linux, and I can supply a kernel in
multiboot format if anyone wants it. (So far, I've only learned to
start kernels via LILO.)

The current MzScheme kernel is missing a few useful features:

 * No useful filesystem support. It looks like it's easy to support
   any filesystem that Linux supports, and I'll wire things together
   sometime. Meanwhile, when you start the current MzScheme kernel,
   you get an empty filesystem.  You can create files and directories,
   but they're stored in memory, not on disk.

 * No TCP support, yet. That's probably also straightforward to add.

 * Reading from stdin blocks all MzScheme threads. This seems to be a
   limitation of the OSKit's default stdin support (no non-blocking
   reads on stdin, and select() always claims stdin is ready to read),
   but if so, it looks like MzScheme can talk to the console directly
   to fix the problem.