Thanks for all the good info. If you're looking for a cheaper version of
the thin client you could try the t5530. It's about $300 US but it only has
64 MB Flash. A 1GB flash module is $70 US but sounds like overkill for your
application.
On 9/6/07, Gordon Henderson [EMAIL PROTECTED] wrote:
On Thu, 6 Sep 2007, Jeremy P wrote:
I've been working on this the past few days and thought I would put it
out
there to see if anyone else has interest in it. It really has nothing
to do
with the Digium appliance, I've just been looking for some mass produced
solid state hardware to run small branch offices off of for awhile now
and I
think I've finally landed on something I like.
Basically I've taken an HP thin client workstation which is all solid
state
and loaded Debian and Asterisk on it (well, Asterisk-GUI too, but just
to
prove I could make it appliance-worthy). I'd be interested in any
feedback on how to improve it, specifically on how to make Debian and
Asterisk take up less space so I could buy the model that only has 512
MB of
flash rather than 1 GB.
I built my own appliance some time back - initially for a router
project, but I've since adapted it for Asterisk boxes and NAS boxes..
The basic unit has 64MB of IDE-flash, 256MB (or more) RAM. The flash IDE
device has one partition and is bootable, so it has a /boot with a bzImage
in it, enough of a /dev/ and /etc to make Lilo work on it and an initrd.gz
which is unpacked into a 128MB RAM disk, then the system runs entirely
from RAM once booted, so there's no continual write to flash issues (I
hope!) I do actually have a 2nd partition on the device which I tar all
the configuration files into - the bare minimal of what I need gets stored
there whenever something changes. (and a copy of astdb too). I don't think
this is perfect, and is prone to issues like a power cycle during write,
but ...
I put a 2nd IDE flash device for Voicemail storage - that does have a live
filesystem on it (currently just ext2, which I force an fsck of at boot
time, if it's dirty) I've used 64MB to 256MB devices for this (storing VM
in GSM format only), some customers want call recording, so they get the
bigger ones, but I'm thinking of moving to a laptop drive for people who
want even more (and enable idle spin down, etc.)
I build the kernel and initrd.gz file on a separate box - it's Debian, but
it could be anything as I don't actually put a distribution as such into
it, I just copy the files I need, and I'm lazy about it, so I copy all of
/bin, /lib, most of /etc and a /dev and selected bits of /usr/bin and
/usr/lib. (I use ldd on all the executables to work out which libraries I
really need from /usr/lib) The kernel is a custom kernel for the hardware
with no modules apart from Zaptel, etc.
I copy everything into a 128MB file, zeroed (it compresses better)
formatted ext2, mounted as a lookback device. Once the copy is complete, I
unmount it, gzip -9 it and that's the initrd.gz file. You need to make
sure that the Linix kernel you compile has the ability to load an
initrd.gz file and a big enough ramdisk!
It's not that efficient, and I could save space by using uClib, busybox,
etc. but it's really not worth it, but 2 things I don't have on the target
system is perl and vim.. Perl is about 10MB, as is vim. Right now I don't
have a need for either (and I use nano when I do need to tweak stuff which
is rarely) Perl would be nice so I could run stuff like mrtg locally on
the boxes, but isn't essential for now.
So if there are some new security implications on the current Debian, or
an asterisk upgrade, I just upgrade/update the build box, then create a
new initrd.gz file and install it. (however this is in the order of 40MB
for an Asterisk system with apache php) so it a bit tricky to do a field
upgrade if the remote system is bandwidth limited, but I can pull it in
off a USB drive if necessary.
My /etc/asterisk and /var/www/docs are actually stored as part of the tar
file, so upgrading those is fairly trivial.
This is what a running system looks like:
$ df -h
FilesystemSize Used Avail Use% Mounted on
/dev/ram0 124M 107M 18M 87% /
tmpfs 125M 0 125M 0% /dev/shm
/dev/hdc2 60M 23M 37M 39% /data
If I mount the flash device, then:
# ls -l /mnt
total 39019
drwxr-xr-x 2 root root 1024 Aug 9 14:54 boot
drwxr-xr-x 13 root root24576 Dec 6 2006 dev
drwxr-xr-x 2 root root 1024 Nov 15 2006 etc
-rw-r--r-- 1 dsx 1000 39758472 Aug 9 14:53 image.gz
drwx-- 2 root root12288 Dec 12 2006 lost+found
# ls -l /mnt/boot
total 2849
-rw-r--r-- 1 root root 512 Dec 12 2006 boot.0300
-rw-r--r-- 1 root root 512 Dec 22 2006 boot.0800
-rw-r--r-- 1 root root 512 Dec 12 2006 boot.1600
-rw-r--r-- 1 dsx 1000 1390066 Jun 5 15:47 bzImage
-rw--- 1 root root 31744 Aug 9 14:54 map