In the present days, I really get shocked when people look down upon machines
with less than a gigabyte of RAM ... A Gigabyte!!!!
I strongly feel that cheap RAM is becoming an excuse for writing un-optimum
code!!! A good and usable operating environment can be built with real estate
in megabytes - less than 10MB that is. Fortunately, the growth in the embedded
systems market is making us review our attitudes towards cheap RAM.
For a long time, I struggled to write my own kernel - I got pretty far but the
problem of writing device drivers is what becomes challenging - the challenge
being standards - having so many of them that is. Every ethernet card is
different- Every video card is different
So I decide to go ahead with Linux kernel itself - I do all my work on Linux
I have been able to build a Live CD OS using the following ingredients -
1. Fresh Linux kernel - 2.6.16
2. Busybox utilities - for all the (atleast all useful)
3. Nanox - A super cool, super slim windowing system - can
work on VESA frame buffer (that's the best part)
4. GRUB - love it - Although I am exploring gujin these days since it can load
vmlinux (a simple ELF) instead of vmlinuz ( a more complex beast)
I've been doing all this using Qemu - an opensource x86 emulator. It emulates a
ne2k PCI ethernet card, so I put in the kernel module for ne2k.
I've put in TinyGL compiled against Nanox.
All this under 5MB.
Here are the screenshots -
At bootup, Linux kernel comes up and starts sh from the busybox set
A small demo with nanox windowing system with nanowm window manager + some nanox and TinyGL programs
I am currently trying to make kaffe (JVM) work with the Nanox windowing system
- Its already supposed to work but I am facing some issues. Once I have that in
place, I can run a pure java browser in the live CD!!!