Adventures in Thin

NB This adventure has been postponed due to my lack of knowledge/skills to make it work 🙁

Moving from a flat to a house so no longer will the same room function as lounge, dining room, study and guest room. Simply having a very long cable on a widescreen monitor meant that one PC used to serve both work and entertainment functions, but alas no more. So, how to have a satisfactory work-from-home PC and a media PC without spending too much moolah? One (theoretical) answer is to scrounge a basic ‘obsolete’ PC and use it as a thin client – meaning it is just a gateway to using the resources on my current, decent quality PC. The software to make this possible is really oriented to businesses, schools or colleges running clusters of computers cheaply but the principles are (probably) applicable at home. And I hope you don’t need to be a veteran sysadmin to make it work. This post, is going to be a running commentry on what I’ve learned as I go through the stages.

The Scrounge

A thin client doesn’t need much in the way of processor speed or memory and has no use for a harddrive, but it does need decent network card (and it’ll be much easier if its PXE-bootable).

Scrounging hint: given that software licensing and data protection are the things that are likely to make an IT department nervous about giving stuff away, just ask for the machine without the hard drive. Sorted.

Lucky me – my workplace was refurbishing old computers and had a box to throw my way (Dell Optiplex GX280). Its 3GHz processor and 512MB RAM would actually make for a very reasonable linux machine without the need for any of this thin client business. But it doesn’t have a hardrive, and anyway, the thing client’s the whole point. So…

Exploring the PC

What have you got your hands on? Download a linux live CD like Xubuntu to find out (NB get the larger full disc, the alternate install disc is no use without a hard drive). If you’ve got an older machine try DSL. Load to the BIOS, slide the CD in, and hit F2/F12/Del or whatever to change the boot order. Save and exit.

Have a play, does everything seem to work? Good…

Now, open the terminal and type:


This gives you the lowdown on some of the important components. Look for ‘Ethernet controller’ and write down the full description of the controller because you’ll need it later.

Personal hurdle 1: No BIOS! eek. Some info about the graphics chip appears and then nothing, nadda, sweet FA. Turned out that the person donating the machine had kindly put in some extra RAM from another identical looking machine also being decomissioned. But non-matching (or maybe just malfunctioning) RAM made the machine halt before it had even managed to load the BIOS. Apparently this is usually a sign of a hardware problem so try unplugging things if you run into it. I removed the offending hardware and all’s rosey.

BIOS settings

As yet the only BIOS setting I’ve needed to change is to enable the PXE bootable thing, which was pretty easy to find after hitting F2 and looking around. If the card isn’t PXE-bootable, you’ll either have to invest in a new NIC or try one of the alternative methods.

Personal hurdle 2: BIOS settings locked! Okay, so this is pretty likely on a machine scrounged from a business. Try to find your PC’s manual. Mine described a jumper on the motherboard to resent admin and system passwords for the BIOS. Open the box, pull the jumper connection, close the box, power on, no more mister password. For fuller advice try this random website on BIOS settings.

Well okay, that’s as far as I’ve got so far. But it all looks plain sailing from here. Yup, gonna be a breeze…

Networking 1 – setting up a static IP address

Usually this kind of network would run with two network cards in the server PC, one getting an internet connection and one connected to a switch. But a very useful blog post from Life, Revived suggested that you can make do simply with an existing ADSL router as long as it has two or more ports. So, physically you just need a cable running from the router to both server and client(s).

The more complex bit is about how the computers do their IP addressing. The server needs a static IP. This means putting appropriate settings (which should be available from you Internet provider) in the configuration screen found, under Ubuntu. Check the router’s IP by putting it in the address bar of a browser – for Speedtouch routers this is – you should see your router configuration application. Now do this:

  1. System->Preferences->Network Configuration
  2. Under the ‘Wired’ tab select your connection – probably eth0
  3. Hit ‘Edit’ and go to the IPv4 settings tab.
  4. Change Method to ‘Manual’ and hit ‘Add’
  5. Fill in the details.
  • ‘Address’ is the static IP of your PC. The first three figures should be the same as that for the router and the last must be different. (There are some useful guides to networking at, including information specific to different router models.) If you’ve got other computers using the router, either wired or wireless turn them on and have a look at the router config webpage – you should see the range of IP addresses dynamically assigned to your PCs – choose a static IP that is well outside of that range.
  • Netmask always seems to be
  • Gateway is the IP address of the router.
  • DNS Server addresses come from your Internet provider – you can enter more than one address here, separated with a space.

Keep a note of all those numbers – they’ll come in handy in a moment.

Personal hurdle 3: There’s a silly bug in Ubuntu 8.10 which means that after a reboot the network reverts to the automatic settings. There are a couple of workaround suggestions here, but they didn’t work on my system. Instead, the following workaround from the official bug report worked:

check the “system settings” checkbox, THEN uncheck the “connect automatically” checkbox, check “connect automatically” again… wait for sometime and then click on “Authenticate” [OK in my system]: n-m should trigger the sudo authentication dialog box and let you save the settings.

Setting up the server

Now its a case of hopefully following the instructions at the Life, Revived post, which I’ve copied in parts below.

Install the ltsp server:

sudo apt-get install ltsp-server-standalone openssh-server

Edit your dhcp configuration file which will tell the client where to look for an operating system:

gksudo gedit /etc/ltsp/dhcpd.conf

Enter the network information you used above. Mine looks like this:

# Default LTSP dhcpd.conf config file.
subnet netmask {
# option domain-name "";
option domain-name-servers;
option broadcast-address;
option routers;
#    next-server;
#    get-lease-hostnames true;
option subnet-mask;
option root-path "/opt/ltsp/i386";
if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
filename "/ltsp/i386/pxelinux.0";
} else {
filename "/ltsp/i386/nbi.img";

Restart the dhcp server with:
sudo /etc/init.d/dhcp3-server restart
If all is okay, then great. Time to build the image for the client to boot from:
sudo ltsp build-client

Setting up the client

The final job is to write the boot instructions for the client to a floppy disc. Dig out your note of the ethernet controller info and visit Have a look at the list of network cards and select the appropriate ROM type, hit ‘Get ROM’ and save somewhere sensible. To write the disc use a terminal command like this:

dd if=file-you've-downloaded.dsk of=/dev/fd0

Personal hurdle 4: My server PC doesn’t have a floppy drive. Unfortunately,  running a Xubuntu live CD on the client machine doesn’t seem to allow access to the floppy, so I’ve had to physically swap the floppy drive into the new machine to write the boot disc. Alternatively using a CD might have been easier (choosing a .iso instead of a .dsk download from rom-o-matic), but ideally I’d like to be able to use the CD drive in the client machine without the minor faff of remembering to put the put CD in on every shut down.

Go, Go, Go!

Now its time to start the client machine, hit F2/DEL to get into the BIOS. Choose to boot from the floppy you’ve just inserted and give it a whirl.

My results so far: ‘Non-system disk or disk error’. Shucks, time to revist rom-o-matic…