New OSKit 0.96 released and a "Scheme machine"

Jay Lepreau lepreau@cs.utah.edu
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 <lepreau@cs.utah.edu>
Message-Id: <199812190458.VAA28969@mancos.cs.utah.edu>
To: oskit-notify@lux.cs.utah.edu
Subject: The OSKit 0.96 is released
Date: Fri, 18 Dec 98 21:58:09 MST

Go to http://www.cs.utah.edu/projects/flux/oskit/
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
lepreau@cs.utah.edu

-----------------

Date: Sat, 19 Dec 1998 13:32:36 -0600 (CST)
From: Matthew Flatt <mflatt@cs.rice.edu>
To: plt-design@cs.rice.edu
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):

 /home/mflatt/zMzScheme

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

     image=/zMzScheme
	label=mz
	root=/dev/hda6
	read-only

   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
   directory.

 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.

Matthew
---------