Diskless Linux Kiosks

by Jamie Zawinski
2000 - 2009


From July 2000 through August 2009, DNA Lounge featured a number of flatscreen internet kiosks scattered around the club.

In the time before everyone had a cell phone, and everyone's cell phone included a decent web browser, this was very convenient.

In This Modern World of 2009, however, I found that the kiosks didn't really provide much. Also, they were a constant maintenance headache, so in August 2009, we finally retired them, as described in my Jul 5, Aug 11, and Aug 27 blog posts.

They were pretty cool, a unique and notable feature for a night club, and a more-or-less interesting technical challenge.

But the time had come for them to join the dustbin of computing history.



The rest of this document describes how they used to work.


Our goal for the kiosks was for them to be usable for web browsing, IRC, AIM, and so on. (IRC was, in fact, still a going concern at the time.) When most people set up kiosks, they tend to try and lock them down so that you can only run a web browser, but that's a little too limiting, since I want people to be able to run other applications too (telnet, ssh, irc, and so on.) So really, I wanted to give access to a complete desktop system. But do so safely and reliably.

I decided to set them up as Linux systems running the GNOME desktop, preconfigured with all the common applications people might want to run. However, I needed to figure out a way to make the system robust enough that one user couldn't screw it up for another, on purpose or accidentally. The system would need to be locked down enough that it was easy to reset it to a working state. 'l33t warcha1king g1yph0r

(Incidentally, though our kiosks themselves are hardwired, we also provide free wireless network access within the club: 802.11b SSID = "dnalounge", no registration required.)

So, I had the following goals:

Originally I was planning on using cheap laptops to do this: In early 2000, one could obtain refurbished P90 laptops with 800x600 displays and PCMCIA ethernet for around $450 each. I got the above goals (booting read-only, logging in, etc) working with laptops; but it turned out to be a a bad idea.

I came to the realization that laptop hardware is just too flaky. Pretty much everything about a laptop is inferior to a desktop machine, in terms of performance, reliability, and expense: their only benefit is that they run off batteries, and that's not a concern in this application. They're also hellaciously difficult to service: if something goes wrong, you throw the whole thing away and get a new one.

So, we decided to spend a bit more money on the kiosks to get something more reliable: diskless desktop computers for the kiosks, plus external flatscreens. The benefits here are that: the machine itself can be serviced; and if the machine gets toasted, I don't have to buy a new screen too. The screens can be secured such that they are fairly indestructible, and they also have a warranty. Plus, commodity hardware is both cheaper and more reliable than laptop hardware.

Currently, the hardware we're using for the kiosks is:

From late 2000 through 2006, these machines ran as "fat client" computers: the machines each ran all of their applications locally, but had no local disks. Everything was mounted via NFS from a remote file server. Users would auto-login as a "guest" user on the client machine, which would run X11, a web browser, a basic GNOME desktop, etc.

As much was mounted shared and read-only as possible; and when the machine rebooted, everything was reset to a default state.

That worked reasonably well for six years, but it was hellaciously complicated. We wasted a lot of time fighting with stupid hardware compatibility problems (e.g., the kernel not liking the onboard NIC, crap like that) and they often ran out of RAM and crashed, especially if someone tried to run a Java applet.

So, these days, they are "thin clients" instead of "fat clients". The back-room server machine (which had been merely the file server for the fat clients) is now a much beefier machine which runs all of the applications for the kiosks. Each kiosk is, essentially, an X terminal. All that the kiosks run locally is an X11 server; the window managers and web browsers are all running on the same remote host. That machine has a 1GHz processor and 1.2GB RAM, which (it turns out) is plenty to run six copies of GNOME and Firefox under the kind of light usage they get in our environment.


Here are the steps I followed in creating this system:


Configure a server machine.


Install and configure LTSP.


Customize the kiosk startup sequence.


Configure auto-login.


Configure auto-reset.


Other usability tweaks.


On two occasions, back in Aug 2008 and Jul 2009, I made an attempt to upgrade the kiosks to a more modern Linux, specifically from a 2003-vintage Red Hat 9 to a 2008-vintage Ubuntu 7.10. I almost got them to work, but they were too flaky to use. They crashed all the time (I suppose we can blame the video drivers for this) and it was a very inconvenient kind of crash. It was not the kind of crash where the machine reboots. It was the kind of crash where someone has to physically press the reset button. So that was pretty much a non-starter. But if you like, you can still read log of my Ubuntu installation adventures.