Last updated at 2:16 am UTC on 26 July 2005
This is a notes page about Squeak as Operating System which Russell Allen has created to help me understand what has been done and what can be done.
Ideally, I would like a system without any non-squeak code at all. Given that for the moment we need gcc, lots of c code and an operating system before we can run squeak at all, I like the idea of eliminating at least the operating system part (with the others to go later :) This means that I'm not interested in running squeak on some other kernel (even minimal kernels such as L4) - unless of course someone wants to write a L4 compatible kernel in Slang...
This lofty goal is limited by the fact that I am vastly underqualified to muck around at the C level, so this page is going to be for notes. If any of this interests you, please help!
Firstly SqueakNOS. This is the most interesting Squeak as OS. You can download an ISO and run it in Qemu. Screen, mouse and keyboard work tolerably well.
I haven't been able to compile SqueakNOS yet. It requires a number of files from the Linux kernel - I'm not sure yet which version of the kernel it is looking for.
It appears to be using the Linux bootloader - given we now live in a world of Grub, I suspect most of this code can be removed.
http://mega-tokyo.com/osfaq2/ - Excellent set of materials on the basics of writing your own OS. In particular http://www.mega-tokyo.com/osfaq2/index.php/BareBones has a very minimal example of how to get to C space without all the complexity of the SqueakNOS code.
Check out http://www.jnode.org - They have a small assembly language kernel which bootstraps a Java compiler written in Java and compiled directly to machine code (no c intermediate - could Exupery do this?). This boots a java os which is very like SqueakNOS - small 'native methods' to receive irq and to write directly to memory. They have a reasonable set of drivers written in Java. What they don't have is a 'live object' system - at the moment it seems very much like a normal OS, just written in Java (incl a command line).