I have had an embedded * server for a while, a one-off project I've been
working on in some spare time. I want to write a white paper about it but
haven't started yet due to other priorities.
A CF used in an IDE adapter is the way to go. The development environment
is a bit tricky but here is a brief of what worked for me:
- define the hardware to use; I used a VIA 10K M mother board, 256M RAM,
TDM400, Sandisk CF (64 MEG), IDE-to-CF adapter here:
http://www.logicsupply.com/product_info.php/cPath/47/products_id/241
This one sits right into the IDE slot on the MB, with a closed case, no one
can walk up and pull the card out and you don't have to deal with IDE cables
to route.
- hookup a temporary hard drive, partition it with at least 4 - 1 gig
partitions, build the base system on part 1, I used Debian, Woody.
- copy part 1 to part 2 (cp -ax), boot into part 2, download and compile
asterisk, setup to taste and any other software needed (mysql, mpg123,
whatever)
- copy part 2 to part 3, boot into part 3, start stripping the OS down to
bare minimum, if you screw up, no problem, re-copy part 2 to part 3 and
start again
- once you have the server at a minimum OS size and it still boots, runs and
does what you need then figure out the size (df -h), mine was around 75Meg
- boot back into part 1, create a loop file system of 85Meg in part 4, copy
part 3 (the root file system) into the part 4 loop file system, gzip the
part 4 loop file system into one compressed file something.gzip, mine was
23Meg
- prepare the CF, syslinux the CF and put a syslinuz config file on the root
directory and specify a 85Meg ram disk, copy the part 3 kernel file to the
CF, this is what guided me:
http://silent.gumph.org/content/4/1/011-linux-on-cf.html
- configure the file system to mount a partition on the CF and symlink all
writable files to the CF for saving, VM, SYSLOG, * config files, CDR,
whatever you want to save as non-volatile.
- disconnect temp hard drive and re-boot, syslinux will create a ram drive,
un-compress the gzip file system into RAM, and run from there.
Of course there are a hundred steps in between the ones I've out-lined and
there are twice as many problems but the payoff is worth it. I have an *
server that I can power down without corrupting the file system and it
always comes back up the same configuration, in 30 seconds, pretty cool.
If this is what you guys mean by embedded, then it's certainly achievable
with off the shelf parts and a little time for trial and error.
One of these days, soon, I'll document the entire journey and share on the
WIKI.
JR