Annotation of OSKit-Mach/=announce-oskit-mach-1.2.90, revision 1.1.1.1

1.1       root        1: I am pleased to announce the availability of an initial development
                      2: snapshot of a new variant of the Mach kernel, which I am tentatively
                      3: calling OSKit-Mach.  The starting point for this variant is the current GNU
                      4: development version of Mach (aka GNUmach).  The difference between GNUmach
                      5: and OSKit-Mach is that I have entirely ripped out all the old Mach and
                      6: Linux device driver code and several parts of the i386 hardware support
                      7: code and replaced them with uses of the OSKit's hardware support and device
                      8: driver libraries.
                      9: 
                     10: Please note that although I am a sometime employee of the University of
                     11: Utah's Flux Group (makers of the OSKit), and I am a Hurd developer and a
                     12: long-time volunteer and former employee of the GNU Project, this is wholly
                     13: a personal project of mine that I began on my own without consulting
                     14: anyone.  I am using the Hurd project's CVS repository for OSKit-Mach
                     15: because it is convenient for me (seeing as it's a branch off the current
                     16: gnumach development) and is a convenient way for me to make my code
                     17: available, and obviously I am encouraging use of the University of Utah's
                     18: OSKit, but that should not be misconstrued as an endorsement of my project
                     19: by the Hurd project, the GNU Project, the FSF, the University of Utah, or
                     20: Major League Baseball.  I just decided this would be a fun thing to do.
                     21: 
                     22: For the time being, this is most definitely for kernel hackers and
                     23: dedicated "thrill seekers" only.  If anything or everything in this message
                     24: makes no sense to you, then please just don't worry about it.  Just wait,
                     25: and people to whom it does make sense will decide if and when you want to
                     26: worry about it and give you specific instructions on where to go and what
                     27: to do at that time.
                     28: 
                     29: This variant is intended to be completely identical to GNUmach from the
                     30: user-mode perspective (aside from the behavior of the device drivers), and
                     31: I intend to keep Oskit-Mach abreast of all applicable changes to GNUmach on
                     32: a regular basis (not much is changed from GNUmach aside from the drivers).
                     33: 
                     34: 
                     35: In some respects this project brings the relationship of Mach and the OSKit
                     36: full circle.  When maintenance of Mach 3.0 at CMU waned, the University of
                     37: Utah's Flux Group took over in the form of the Mach4 project, and revamped
                     38: much of the i386 machine support code in the course of their research.
                     39: While at Columbia University, Shantanu Goel worked on using Linux device
                     40: drivers in Mach, and later continued this work at the University of Utah.
                     41: Utah Mach4 became the seat of Mach development on the 3.0-compatible line,
                     42: and the microkernel underyling the GNU/Hurd multiserver operating system.
                     43: When the Flux Group's research moved on from Mach to other systems, they
                     44: wanted to reuse the work they had done in hardware support and device
                     45: drivers; this work (and a whole lot more) eventually evolved into the
                     46: OSKit.  Meanwhile, when the Flux Group stopped maintaining Mach4, the Free
                     47: Software Foundation's GNU Hurd Project had taken it up and produced the
                     48: GNUmach release to go with the Hurd.  Since then, the Hurd has become an
                     49: all-volunteer project whose developers are not paid by the FSF, and later
                     50: GNUmach releases incorporating bug fixes and updating the Goel/Utah
                     51: encapsulation of Linux device drivers have been made by volunteers
                     52: including Okuji Yoshinori and Thomas Bushnell.
                     53: 
                     54: This bit of history explains some of why it was so easy to replace a lot of
                     55: the GNUmach/Mach4 hardware support code with OSKit calls--in many cases the
                     56: OSKit code is a direct evolution of the code originally in Mach4 that I was
                     57: replacing, with the names changed and improvements Utah has made since the
                     58: Mach4 days.
                     59: 
                     60: 
                     61: * What you get vs GNUmach
                     62: 
                     63: ** All the benefits of an OSKit kernel
                     64:   -> Device drivers from Linux 2.2.12 (IDE, SCSI, and Ethernet)
                     65:      (GNUmach has Linux 2.0.36 drivers with a few fixes.)
                     66:   -> Serial-port console support with a very simple minimal serial driver
                     67:   -> OSKit-style Multiboot support, including "return address" hack
                     68:      for extra-speedy soft reboot when using OSKit's Netboot
                     69:   -> Serial-port GDB support for debugging the microkernel in style
                     70:   -> The University of Utah might maintain the device drivers for you
                     71: 
                     72: ** A much smaller source tree!  The unpacked OSKit-Mach sources total about
                     73:    a quarter of the GNUmach sources (though the OSKit itself is much larger
                     74:    of course).  The gzip'd tar file of the source tree is about 700k, vs
                     75:    3.6MB for gnumach.  This is because I have wiped out much old cruft, as
                     76:    well as all the old device drivers and the Linux code.
                     77: 
                     78: 
                     79: * What you lose vs GNUmach
                     80: 
                     81: ** All the old device drivers are gone, so you only get what the OSKit has.
                     82:    It would not be very hard to support some of the old drivers alongside
                     83:    the OSKit drivers, but I am not interested in working on that.  I am
                     84:    more interested in adding good new drivers to the OSKit.
                     85: *** The PC screen/keyboard console driver is very minimal, and not
                     86:     compatible with the old Mach driver's terminal emulation.
                     87:     The OSKit's PC console emulates an adm3a terminal, and the keyboard
                     88:     input support is very simple.
                     89: *** No real serial drivers at all
                     90:     The serial drivers that provide the serial console and serial GDB
                     91:     are very minimal and not really generally usable serial drivers at all.
                     92:     The oskit's freebsd serial driver might work, but the interface glue
                     93:     for features specific to serial ports (baud rate, modem control, etc)
                     94:     is not there.
                     95: *** No parallel (printer) port driver(?)
                     96:     The oskit's freebsd printer driver might work.
                     97: *** No real drivers for PC keyboard or PS/2 mouse at all.
                     98:     The oskit needs a good clean driver for the low-level keyboard access.
                     99: 
                    100: ** No DDB.  I ripped it out rather than making it work.  Serial GDB is much
                    101:    better.  It might be useful at some point to resurrect some of DDB's
                    102:    code that prints out kernel data structures in comprehensible form.
                    103: 
                    104: * What the hell is the OSKit again?
                    105: 
                    106: See <URL:http://www.cs.utah.edu/flux/oskit> to learn all about the OSKit.
                    107: Please don't ask me to tell you all about it, because I won't do it.
                    108: 
                    109: * Where to get it
                    110: 
                    111: The source is in the Hurd project's CVS repository as a branch of gnumach.
                    112: This is available for anonymous CVS from the GNU Project's server.
                    113: See <URL:http://www.gnu.org/software/devel> about using anonymous CVS.
                    114: You want to check out the gnumach module with the tag `oskit-branch', i.e.:
                    115: 
                    116: cvs -d :pserver:[email protected]:/gd/gnu/anoncvsroot co -d oskit-mach -r oskit-branch -P gnumach
                    117: 
                    118: I don't expect to do much in the way of distributing this other than by
                    119: anonymous CVS any time soon, until it is ready for some kind of release.
                    120: As I said, at this stage this is for seasoned kernel hackers and masochists
                    121: only, so I will presume anonymous CVS is something you can cope with.
                    122: Since cvs is a bit of a bear for the first checkout, I've put together a
                    123: tar file containing a checkout from anonymous CVS (complete with CVS
                    124: directories) to get you started.  You can find it at
                    125: <URL:ftp://ftp.ai.mit.edu/pub/users/roland/mach/oskit-mach-19991125.tar.gz>.
                    126: 
                    127: 
                    128: * What you need to build OSKit-Mach
                    129: 
                    130: The build is just the same as GNUmach, except that first you will need to
                    131: build and install the OSKit.  You need the 19991124 "Butterball" snapshot
                    132: release of the OSKit, which is at
                    133: <URL:ftp://flux.cs.utah.edu/flux/oskit/oskit-19991124.tar.gz> (or a later
                    134: version).  See <URL:http://www.cs.utah.edu/flux/oskit> for more information
                    135: about the OSKit, including its mailing list and archives (where that
                    136: wildman Okuji had already posted fixes before the sun set on that
                    137: snapshot's first day!).
                    138: 
                    139: Please don't ask me about building the OSKit; see the web site and the
                    140: documentation included with the source about what to do and to whom to
                    141: complain.  (And realize that this is an informal bleeding-edge snapshot,
                    142: not a released OSKit version, so you should expect to try to figure out
                    143: your own problems.)  Before you try to build OSKit-Mach, please test your
                    144: OSKit build on your hardware by building and running some of the oskit's
                    145: example programs and making sure they boot and run ok.
                    146: 
                    147: The only way that I've actually built oskit-mach is with my i486-gnu (Hurd)
                    148: cross-compilation setup; I just built the oskit with that cross-compiler
                    149: and --prefix=/usr/i486-gnu and installed it.  Then just configure
                    150: oskit-mach normally and build.  All of this should work with any native
                    151: ELF/x86 compiler too (and no --prefix).  It should probably work to
                    152: configure oskit-mach using the oskit's compiler front-end (i386-oskit-gcc),
                    153: but I haven't tried that and don't recommend it.  The only difference
                    154: between using a native compiler or a cross-compilation setup that has glibc
                    155: installed, and using i386-oskit-gcc, should be that a few functions such as
                    156: memcpy will come from the oskit's minimal C library rather than from glibc,
                    157: which has much better-optimized implementations of those
                    158: performance-critical functions.
                    159: 
                    160: 
                    161: * If you are a rabid Mach kernel hacker
                    162: 
                    163: There are a few things to mention about technical details of how I did some
                    164: things, and I will write some notes up sometime soon and stick them in the
                    165: sources someplace.  In the meantime, there are some comments and if you
                    166: grok the kernel already then reading the code should be substantially
                    167: self-explanatory.  Aside from removed files, the diffs between the gnumach
                    168: trunk and the oskit-branch are fairly small (cvs is your friend); all the
                    169: new oskit-related support code is in the new oskit/ subdirectory.
                    170: 
                    171: 
                    172: Please send bug reports to <[email protected]>.  If you have a problem with
                    173: device drivers, before you report it to me as a problem with OSKit-Mach,
                    174: please try those drivers on your hardware using some oskit example kernels.
                    175: If your problems show up using those device drivers on your hardware in an
                    176: oskit example kernel, then please report it to <[email protected]> as
                    177: an oskit problem rather than reporting it as Mach problem.
                    178: 
                    179: 
                    180: Enjoy,
                    181: Roland McGrath <[email protected]>

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.