Well it's been a while since anything major has happened on the site. Behind the scenes though are a little more interesting. To prove it, I've put together a development snapshot so those who are interested can take a look at the code.
It does run, sort of;
- the bios runs through post,
- some virtual hardware is cached ready for use,
- GRUB loads and gets it's menu from /boot/grub/menu.lst,
- the kernel loads,
- initrd loads,
- memory is initialised,
- vga is initialised,
- the scheduler and process manager comes online,
- hardware interrupts are mapped in,
- ACPI events are mapped to interrupts,
- the CPU is initialised and started cycling,
- a basic application (hello world, with a while loop to print it twice) is loaded into the process stack,
- memory is set aside for the new process, and virtual memory mapping is enabled,
- the process feeds process elements to the scheduler,
- process elements are executed in order by the CPU,
And it's at this point that we stop looking interesting, as a buffer overflow error gets thrown due to the process not exiting properly. Then a kernel panic is called, and the system shuts down and reboots... only to repeat the whole process again
We're not just saying these things are happening, they actually are. It seems to be a common misconception that webLinux is a webpage that looks like a Linux system. It's actually a Linux system that runs in a webpage. We look at the browser as a virtual machine, so we just need to port Linux to a new platform. although as we are writting our own kernel, it isn't technically a Linux system, as we're not using the Linux kernel. But if you know a bit about the Linux kernel, you might find the webLinux kernel to be quite familiar; it should be, as it's based on the Linux kernel, even if it is a different language.
How do you build a Linux system that runs in a webpage? As mentioned you just treat the browser as a virtual machine and develop for the platform. This means that C libraries are being worked on, and a C compiler is to come too. How do compile C to run in a browser? Well first you need a native format; webLinux has that, Process Object Format is a rather twisted blend of javascript, hex, C, and BASIC, which runs natively in any browser running webLinux. Once you've got a native format, and the libraries to go with it, it's just a case of parsing C into the native format and linking in the libraries. We've got the format mostly worked out, and there's a test case in the initrd of the snapshot. The libraries are gradually getting put together. We just need to build something to do the parsing/compiling. Eventually, we want to compile bash, and have webLinux boot to a proper bash prompt.
There's still a long way to go till the next release, but when it does come, it really will be "Linux live on the web."
In the meantime enjoy the snapshots, we'll try to make them fairly regular, and of course if you want to help we'd love to have you.