As we quickly approach this amazing milestone, I think it’s always interesting to re-visit the roots of Linux, back to the really ancient versions. Thanks to the hard work of oldlinux.org, the oldest intact Linux source code available is Linux 0.10 from November of 1991. A popular writeup on 0.10 was up on kerneltrap.org which appears to have been vaporized, but thanks to archvie.org is preserved.
Since this version is complete I thought it would be fun to run it through the Linux 0.11 build process & toolchain to see if I could get a working kernel. Well I had a few stumbling blocks, the bootblocks and the keyboard assembly driver were giving me issues, and for the sake of time, I went ahead and replaced them with the code from 0.11, and along with minor patching to the IDE disk driver. I added in a simple line to let me know I was actually booting up my franken 0.10 kernel with Qemu. Also I found later versions of Qemu work much better with 0.10 regarding the IDE disk.
I know it’s not much to look at but it really is building and running. I’m using the disk for the 0.11 series, as the userland seems to somewhat work. It’s very touchy, and prone to crashing as it ‘has a bug in the buffer cache’ that I didn’t feel like trying to track down. Nobody should be using this for anything serious anyways.
Install the 0.11 a.out GCC 1.40 on Win32 cross environment (I guess you can build them on Linux too if you so desire), and if you have a working MSYS environment you can run ‘make’ and it should give you a kernel. The command file ‘linux.cmd’ will boot it up, and attach the disk image that I used to test. There are permission errors, and well.. errors. 0.10 was not able to selfhost, but it should be enough to boot, mount the root, and run stuff like the sample ‘hello world’ program.
For those who like to browse the source, I have a browsable tree here.
And for the 2-3 people who care, here is my updated linux-0.10 source tree hosted on sourceforge.