2009-02-02

Embedded Linux appliance project

I put together an article on making embedded network appliances a while back ago. It was a little bit on the abstract side.

Now, I find myself helping out on a collaborative project with Cowtown Computer Congress and the KC Robotics Society. The Wii Labyrinth was a big hit, and now they've got a chance to build a giant 10' x 12' version for Science City. You can read more on Vince's blog.

One of the concerns is getting a reliable computer "brain" that can pull the parts of this project together. Some requirements:

  • Runs Linux
  • Can run the dependencies for the project (easy to compile for)
  • Has USB (for the bluetooth and Arduino)
  • Can be powered on and off by Science City staff without a shutdown procedure i.e. flipping a wall switch.
Some options came up, specifically the nifty WL-500G. While the option of using an inexpensive system-on-chip based appliance has some appeal, it can be difficult to port software to them, and their limed RAM, storage, and processing power can be a deal-breaker.

I opted to help the project out by building a Linux Appliance out of old x86 hardware. This means I can run a more feature-rich environment, but build it like an appliance. I proposed the following to meet the requirements of easy power-up and power-down:
  • Logical partitions are mounted read-only or unpacked to ramdisk and dismounted
  • Dynamic data is loaded to ramdisk if needed (i.e. /tmp)
  • BIOS settings are tuned to skip as many POST checks as possible (don't halt on keyboard/video errors, skip RAM check, don't scan for new IDE devices, etc)
These are all things that are used by well-designed system-on-chip devices, and it's similar to how many "Live CD" Linux distros are built. I'll I'm probably going to begin my journey with Puppy Linux on a virtual machine, though. I'll post final details (system specs, how to build the system, etc) when I've got more to go on.

blog comments powered by Disqus