Monday, June 22, 2009

The second-to-last release of Braydix...

So I've definitely made some Braydix progress - here's the latest. I need to eventually come up with some kind of name that's catchier than "Braydix" - that has the syllable for "dicks" in it, which...isn't that nice. It's still pretty huge - 140MB right now - but I have things being compiled with debugging information 'on' (which bloats the sizes out) and some things that I should have working as libraries are actually compiled-in. I think I may also make some stuff compressed, which very rough back-of-the-envelope math says should cut the size to a third (!).

So what's in it, and why is it the second to last release? Well, I've tied in the CREST-fs 'internetty' filesystem pretty early into the boot sequence, so the system in essence can 'boot off the web'. The idea is, when it's integrated perfectly, that you would be able to do some kind of initial installation thing, and never have to do any upgrades or anything. Just reboot, and what you need is 'there'. But right now it's not quite integrated perfectly - I'm not sure how I do kernel or initramfs updates, or how they'd get picked up by the client. So once I've got *that* figured out, then *that* release becomes my 'final' release.

I've also built a very very simple installer, which you can launch using one of the virtual terminals (Ctrl-Alt-F1 is the main browser window, Ctrl-Alt-F2 through F4 gives you a terminal. Type 'installer'). I wouldn't run it on any piece of hardware you cared about though - it could format the wrong disk, or install to the wrong partition, or do any number of other, awful things.

The clever bit - well, there are many clever bits, but the 'novel' clever bit - is that I have a special 'bootstrap' image to prime the CREST-fs backing cache. So you can, in fact, boot up off this disk image with no network connection at all. And you'll at least get the browser launched and the GUI up and running. From there, you can possibly configure wireless or something and continue to use the system from there.

The idea - and I don't think I've articulated this very well - is that you should never have to install anything on this. Whenever new things show up on the internet, they're just 'there' automatically. You never have to update anything - reboot and you should have the latest. If I end up doing a third-party application thing, just chuck your binaries and libs and stuff on a website somewhere, and it's available to the systems - the CREST-fs mounting can talk to any webserver just as easily as any other, mine isn't particularly special (except for the odd symlink that points to it, or a PATH entry). Some notes:

  • Libraries SUCK
  • Compiling things 'static' is really hard
  • Booting is really complicated
  • The Linux Initramfs is really brilliant. You can do all kinds of ridiculously crazy shit with this. Very cool stuff.
  • Busybox is still awesome
  • "Virtualbox" as a development environment under OS X is (relatively speaking) an extremely pleasant place to develop in