Draft Proposal for (helping to) port Hurd to L4
Summary of what we'd like to do
Our ultimate goal is to get nethack running on Hurd-L4, the first thing we need for this is a block device and a filesystem. We want to port ext2fs, and the basic trivial filesystems (/dev/null, /dev/zero etc.) from Hurd to HurdL4, and write a RamDisk device driver.
Statement of what we want to add
- port necicary message passing wrappers that would come from MIG
- port libfshelp from mach/hurd
- port libdiskfs from mach/hurd
- port libtrivfs from mach/hurd
- port libstore from mach/hurd
- port ext2fs from mach/hurd
- write ramdisk driver
- laden/wortel boot hacks to get ramdisk to load
This basically means doing whatever is nececary to create a bunch
of ram with certain data on it for the ramdisk to run off of
- ? write some of a proc server (posix support) enough to run nethack
- ? Run nethack
Lines of code we expect to write:
- port necicary wrappers that would come from MIG (3000'ish?)
- libfshelp (300, changes)
- libtrivfs (1000, changes)
- libstore (500, changes)
- libdiskfs (1000, changes)
- ext2fs (200, changes)
- ramdisk (1000 ,probobly from scratch)
- laden/wortel boot hacks to get ramdisk to load (200, changes/additions)
- ? write proc server (400'ish, from scratch)
- ? run nethack
Type of code:
- libs are all ports to the new IPC machanisms and a couple other differences
- bits of the capability system still have to be written
- We also need to write the wrappers that MIG generated on Hurd, but for L4. This will mean using existing code, but
- ramdisk is probobly from scratch.
- hacks to to laden/wortel are likely very small changes, and fighting with stuff to get it to load the ramdisk
- glibc would be fixing things that have already been "ported", but don't quite work.
Resources
How many machines of what type:
1 x86 box,
with any somewhat standard videocard, network card, and IDE interface.
Note that most work we can do in an emulator!
One of the boxen already in the cluster should work fine.
NOTES
When done we intend to sign our code over to the FSF. This means that we cannot use code not belonging to the FSF, or someone who is willing to sign there's over as well. This is due to the Hurd policy that the FSF must own all Hurd code.