House

I've been hacking on House for the last year or so. My primary work is two-fold: to integrate Peng Li's work on Lightweight Concurrency, and to build a priority-based scheduler atop the framework. In order to do that, I also had to update House to run on GHC 6.8.2.

Lighthouse

Lighthouse is an experimental branch of the Haskell-based House operating system which integrates Li et al.'s Lightweight Concurrency framework. It adds priority based scheduling to House and simplifies the runtime system. Detailed information is contained in my masters thesis, Extensible Scheduling in a Haskell-based Operating System.

Lighthouse's source code is available via GIT:
git clone git://svcs.cs.pdx.edu/git/lighthouse.git

House

In order to build Lighthouse, I had to update House to GHC 6.8.2; here is a copy of "vanilla" House.

Building

To build either version of House, run `make boot,` then simply run `make floppy.' This should create a qemu compatible 2.88MB floppy disk image called House.flp. You can also run `make cdrom' to build a bootable ISO image.

I recommend building on a modern 32-bit Linux system. House does not build on 64-bit linux directly; you'll need to use a 32-bit chroot. You'll also need to install genext2fs.

If you want to build the userspace programs, change to the kernel/user folder and run `make' and `make install'.

Also, if you change various bits of GHC, you'll need to do clean builds:

  • Compiler—in ghc-6.8.2, run `make clean && make stage1`; in kernel, run `make clean`, at top-level, run `make floppy`.
  • Libraries—in ghc-6.8.2/libraries, run `make rebuild.library.base` (or whichever library); in kernel, run `make clean`, at top-level, run `make floppy`.
  • RTS—at top-level, run rm kernel/house && make floppy.
kennyg .:. cs : pdx : edu