I have managed to compile and run linux kernel 0.01!
What's the big deal...here are some points, why its not a trivial task
1. The original source of 0.01 depends on being loaded at absolute 0 address
2. It depends on having the page directory set up at 0 address
3. The hard-disk driver is from the stone age
4. A number of deprecated inline assembly usages
5. The executable it supports is a weird ZIMAGE a.out
After my changes, I have a Linux kernel (so what if it is 0.01...it is Linux
nevertheless) that is about 80K!!! It gets loaded by GRUB and loads user tasks
from the HD. The user tasks need to be written in assembly currently - to
support that "a.out" format.
Here are the snapshots of it running -
screen shot 1
screen shot 2
As you can see in the screen shots, this kernel is capable of loading tasks
from the disk and execute them. "p1" is a program on the disk - that writes
"HAPPY BIRTHDAY" to STDOUT.