What is WebLinux?
There's actually 2 answers to this, as the current version as seen on the site is really just a proof of concept. The development build is much more involved, and truly is a operating system in it's own right.
The proof of concept as seen at system.weblinux-live.org is written entirely in javascript, with every command custom written to to suit. It's kind of ugly really. Although we do have:
- kernel
- grub boot loader
- init
- chvt
- filesystem and permissions system
- fsck
- dmesg
- getty
- shell
- ls
- cat
- cd
- mkdir
- touch
- and a few other tools and functions to make the thing work
The development build, as seen in the snapshots is alot more involved, it is a Linux system built to run in a webpage.
The Bios is written in javascript, it's purpose is to setup the browser window to work as a screen, see what network methods we have available (XMLHttpRequest or iframes), determine processor speed, and preload some essential virtual hardware items such as hard drives. It also maps some window events, such as close and resize to ACPI events, so that these can be handled by the kernel later. Finally it sets up global error handling and ram space, so the system can run without eating itself.
The bootloader is again written in javascript, it reads its config file from the hard drive as loaded by the bios, creates a menu from that file and writes it to screen. The config file is written in the same format as any other Grub "menu.lst", the bootloader then selects the default menu item and starts a countdown as ber settings in menu.lst. Finally the bootloader loads the kernel command line, the kernel itself, and the initrd if there is one into ram.
The kernel is the final part of the jigsaw which is written in javascript. I intend to do a more in depth look at the webLinux kernel, but for now, this is what happens in the current development build:
- 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,
In time this will also load some essential libraries, load hardware modules, mount the filesystem, and so on.
WebLinux has it's own ANSI and POSIX C libraries, this is still a work in progress, particularly the compiler. To date we have only got as far as running a basic 'hello world' although this will change as development progresses, once we get a shell open, then we'll be able to look more seriously into getting other programs running on the system. But it does mean, that potentially any program written for Linux will run on webLinux.
If you're interested in getting involved have a look at the Join Us page, you can also grab the latest development snapshot:
WebLinux Development Snapshot (43.6KB | downloads: 205)