The original House operating system uses a patched ghc-6.2 and must be built with gcc-3.4. There's an updated version that uses ghc-6.8.2 and gcc-4.3. I looked at House before, and I'm going to study the updated version again. I now have a better understanding since I just happened to go through the steps of building a minimal multiboot-compliant kernel that's bootable by Grub. The kernel is linked by the script "kernel/ldhouse", and the output is "kernel/house". "house" is then gzipped and copied to "floppy_dir/boot/kernel". Userland C programs (kernel/user/) are compiled and placed under "floppy_dir/". In the end, another script "kernel/top/mkbe2gbf" is invoked to create the floppy image from that directory. The GUI (aka Gadget) is compiled into the kernel. The kernel has no file system support. It relies on Grub to load the userland programs. The available programs are hardcoded in grub's config file. To build them, do "cd kernel/user; chmod +x doit; make; make install". Makefile has the following line to create fonts: LANG=C runhugs -h1000000 -Pkernel: createFontFile.hs >$@ Replacing it with ghc doesn't work: LANG=C runghc6 -ikernel createFontFile.hs >$@ We get a ghc panic saying "linkBCO: >= 64k insns in BCO". The error seems to be related to processing large files. Besides the web page, the paper and hOp's README, kernel/README.HOUSE is also very important! The newer version builds a 2.88M floppy instead of a 1.44M one, probably because ghc-6.8 is bigger. Qemu doesn't have any problem, but VMWare and Bochs both fail to load the floppy. We can do "make cdrom" to create a .iso file. |