Thin client options
In my spare room I have what I grandiously like to call a
library. (By library I mean approx 112ft of bookshelf space, on 3
of the 4 walls). What does any library need? A
computer! Internet access, ability to print, access files
etc. I have a random vision of the future of having my eBooks
managed "somehow" (plug the eBook reader
in, download the book(s) I want...). Nothing high powered;
possibly playing youtube videos would be the hardest thing this
computer would need to do. However I would like this machine to
be able to print to a locally connected (USB) printer and also scan
from it (it's a HP printer/scanner). I could live without
printouts (especially since that's an inkjet printer so the ink'll
probably dry out before I use it again!) but the scanner is one of the
reasons I want the machine there (eg to scan the covers of my books for
my online index).
But first I need a computer. Most of the time this machine is
going to be turned off (or, if power drain is sufficiently small, in
standby mode) so a quick boot is required. Optimally no moving
parts (no hard disk, no fans). It doesn't need to be Windows
(indeed, probably better off not
being Windows, given the headache of keeping patches and antivirus
software up to date!). So this sounded like a perfect job for a
diskless X terminal. Netboot, NFS mount root, etc etc.
My first attempt at this was an iOpener; Panix
used to use these when doing "internet rooms" at conventions; they'd
hacked them so they had a NetBSD kernel and then would NFS mount
everything else. Just needed the one server for the con
room. These iOpeners didn't have ethernet, but a USB dongle
worked adequately for 10baseT. I've previously done a minor
consulting favour for Panix and in lieu of any recompense I took two of
these devices off their hands. I played around with them a
little, but never felt the "love" or desire to actually get them
working. It might be the small RAM (its been a while since I
powered them up; maybe 64M?) or the small flash disk that replaces the
hard disk (16M) or the small screen (800x600). Whatever the
reason, I never really got these machines doing much more than booting
into a command prompt. They're still sitting in my basement
gathering dust. One day I'll revisit this project!
My second attempt was to just use a laptop. Unfortunately Linux
(at the time) didn't do very well for sleep modes and these older
machines (the newest laptop I have is a Celeron 2.4Ghz Dell Inspiron 1100)
take a fair time to boot. Windows... well, see the above
comments! Also didn't help that this machine only had 256Mb of
RAM, so Windows was pig slow (even now I've upgraded it to 1Gb of RAM
it's still slow! Very slow hard disk, it seems).
My third attempt was to use a netbook. I originally got an Eee700.
This suffers from a small 7" screen, small keyboard etc but in most
respects it could be hacked into doing what I wanted... worst case I'd
put on a different Linux distribution (Ubuntu netbook?). The
problem was actually that this machine better filled the niche of
"guest PC" for the living room; if someone wanted to check on email or
surf the net or look up IMDB during the Oscars or whatever then this
was a perfect machine! It was too useful to be relegated to
library use :-) In fact I ended buying a 2nd
(refurbished) Eee (an Eee900 this time) which I have at work connected
to the guest wireless network so I can access personal email etc from
work. I like these EeePCs!
So now attempt 4. I managed to get hold of a HP t5720. These actually come in two variations; the t5720 which runs Microsoft Windows XPembedded, and the t5725
which runs a Linux variant (based on Debian Etch). The hardware
seems identical, it's just the OS that they boot into that
distinguishes them. These can be obtained for around $100 from
eBay. Now these machines were designed as thin clients.
Inside they have a 1Ghz AMD Geode 1500 processor
with 256Mb RAM and 512Mb of flash disk (instead of a hard disk).
The memory can be upgraded using SODIMM memory. There's a
plethora of USB ports, built in audio, PS/2 keyboard/mouse ports... in
other words it looks pretty much like a bog standard (underpowered)
PC. Interesting there's no moving parts at all; it's all
passively cooled with a couple of massive heat sinks on each end of the
case. I plugged in a USB-DVD drive and booted ("rescue mode")
from a CentOS DVD I had around
and confirmed this could read the hardware normally. Given the
small amount of memory and disk I don't think I'll install CentOS on
this machine,but this is powerful enough that I should be able to run a
real OS without much problem. I just need a quick boot time!
Looking around at the different Linux thin-client builds it seems
there's quite a few options to chose from. Firstly we have the
standard HP build, which can be downloaded from their website.
This is based on Debian Etch. It's
pretty old, now. Installation was simple enough; make
a bootable USB drive, let it boot, and it completely overwrites the
internal flash drive with the new image. It's slow, but it
works. Remove the USB device, reboot... and we have a Linux
install. From POST
completion to the OS being ready for use takes around 30 seconds.
By default the machine drops straight into a local X configuration;
from here you can run firefox (sorry, iceweasel) - but it's an old version. Now, it looks like HP have added some of their own APT
repositories, and also left references to a main etch respository so I
thought I'd try to update the machine. Here the limits of the
small hard disk show up. "apt update" worked just fine.
"apt upgrade" complained about the Debian official packages not being
properly signed (I guess HP didn't put the right public key in the
image) but otherwise worked... until the disk filled up.
Attempting to recover from this ended up with an unbootable
system. Umm. Perhaps someone more versed in Debian recovery
than me could have got it working again, but I didn't need to; I just
reflashed it again from the HP image. This time round I just
updated iceweasel. However this still only took me to 184.108.40.206,
which is very old in firefox terms. Hmm.
The HP image can also work as a more general "X terminal", where you
connect to a remote XDMCP server, authenticate and then run the X
session on the remote machine. The desktop macune just runs the X
server. In this mode it doesn't really matter than the provided
software is old because you don't really run it. I've not tested
this option yet; I need to work out how to configure the display
manager on my server to accept requests from remote machines but not
run X on my local console ('cos I prefer a text terminal on my server
consoles, thank you very much). I think that if I'm going to use
the HP image then I'll have to investigate this mode more. I'll
also have to determine how well audio works, and how quickly (slowly?)
the system starts up.
Another way of doing terminal services is the Linux Terminal Server Project.
This is pretty much designed to control and manage diskless
workstations. Unfortunately I started to get a headache just
reading the site. It seems that the codebase is currently being
redesigned (from LTSP4 to LTSP5) and the documentation isn't always
clear in what it's describing. It also looks like it might be a
lot of work to get it running on my existing CentOS server and needs
network reconfiguration of the server. Umm. I'm not sure I
want to go to all that hassle! So I'm currently giving LTSP a
Previously I've used Damn Small Linux
on tiny PCs (eg a laptop with 16Mb RAM). It's amazing that it
works so well, but it also looks like it's stuck in the past (a 2.4
based kernel. I'd be surprised if modern software (firefox 3.5
for example) would run on it. There was a more modern version (DSL-N) but this also looks like there's been no update for years.
Then there's ThinStation.
This looks interesting. Currently I'm testing this via PXEboot
(network boot) so I can switch between this and the HP image just by
rebooting. This took 50 seconds to boot but some of that delay
may be due to needing to download the image. Of course
booting from the network with this image gives a fresh start each time,
so there's no history. It runs a very basic setup using iceWM,
has firefox 3.0.x and has many forms of connectivity (eg rdesktop, ssh,
Citrix ICA, NoMachine NX, VMware view etc etc etc). I
need to see what power-saving functionality is available on this build,
or whether I need to shutdown/reboot each time, and whether the local
printer/scanner functionality will work.
Next up is xPUD. This is
almost a web-based OS. It comes as a kernel image with a 44Mb
initrd image attached (so it takes a little while to netboot because
there's a bit of data to transfer!) but once it's got the data into RAM
it boots fast; under 10 seconds from kernel startup to running
system. It's a different look'n'feel, but it seems to work.
The main downside is that the ethernet controller on this HP (a
via-rhine) doesn't have a driver in the base OS image so if I netboot
then it won't find the ethernet controller so I can't actually see the
internet! If I boot from a USB flash drive then I can put the
optional drivers package on the drive as well, and this has the
via-rhine driver needed. Firefox is 3.5.5, which is prety
new. Attempts to update to the latest, though, don't appear to
work. And is probably pointless given that a reboot would just
rollback to the downloaded image. This is something I need to be
aware of with xPUD; if I want newer application versions I may end up
having to roll my own. But it's interesting and something to look
And this is where I am at the moment; playing with the HP/Debain build, ThinStation and xPUD.
Of course I don't have ethernet in the library, so I need to go
wireless. This adds a new dimension... some USB wireless cards
are only supported under newer kernels and these images (eg the HP one)
may not have the required drivers. So do I go with a wireless USB
card, or do I get a WRT54GL (or compatible) running a firmware such as Tomato in "access point" mode so it acts like a bridge, effectively providing ethernet to that room?
At the moment I've got my laptop in there running Windows (sigh). I think I've got a way to go on this project, yet!
Last modified: Monday, 19-Apr-2010 18:21:59 EDT