Windows to the World

a Linux Internet Kiosk PC


This is part of an experiment to use Linux as a kiosk system. In this sollution, we try to set up a window manager and several applications to turn the basic kiosk system into an (unsupervised) multimedia pc. The complete system takes up 750 mb of disk space, so together with some mb of swap, a 1 gigabyte hard disk will do. Without the overhead of a desktop, the other system requirements are also quite modest - probably any Pentium class pc with some RAM will run it - although that also depends on which applications you'll be using and how many applications will be running simultanously.

Software Installation

After installing a (Debian) base Linux system, we add the required applications. We will use the folowing applications :

Application Purpose apt package remarks
Firefox Web Browser mozilla-firefox
GAIM chat / instant messaging, compatible with all major chat services (SMS Messenger, Yahoo, ICQ, AIM, ...) gaim There exist specific messengers for yahoo etc (but not MSN) for Linux.
Open Office Office Suite, for non html documents openoffice.org
evince pdf reader evince re http://wiki.debian.org/PDFViewers : alternatives, including Acrobat Reader
Totem Audio and Video Player totem also for CD and DVD
Skype internet telephony re skype download page
...

If it's (DOS / Windows) Games you're after, you may want to add DOS Box - a DOS emulator that will allow you to play games designed for DOS / Windows 9x). Just add to the list of software and add a menu entry to fvwm, etc - you get the idea by now ...

You may also want to support printing, possibly a printer shared on a Microsoft Windows or a Samba server, so you'll want to add cups and maybe an smbclient.

To make our setup reproducable over multiple machines, we use scripts. The list of applications we want to set up translates into the following lines of code :


	# packages from the debian distribution
	apt-get install vim ssh x-window-system fwvm aptitude bastille
	
	aptitude install --with-recommends xscreensaver mozilla-firefox openoffice.org totem gaim
	aptitude install --with-recommends evince flashplugin-nonfree
	#aptitude install --with-recommends smbclient cups

	# suggested additional packages  (recommends are already included by aptitude)
	apt-get install fvwm-themes fvwm-icons wm-icons


	# workaround 1  for 'unofficial' packages eg acroread: add additional apt sources and/or use pinning
	# TODO : set up pinning. for now resort to workaround 2
	
	# workaround 2 for 'unofficial' packages  eg skype : download and install ...
	pushd /root
	ftp 
			# use ftp commands or script here : ftp -s ...
			# downloaded files will be in /root
	dpkg-install blahblahblah.deb
	popd

	# packages :
	#		
	#
	#
	#


	

howto ? ftp scripts. This page describes an automated upload with ftp under DOS, but the mechanism is similar to automating downloads under Linux.

Reproducing the GUI setup and general system administration

create a user

We create 1 user (www) with password www. This account will be used to use the PC as a web client.


	#create a user:password www:www
	useradd --force-badname -m -s /bin/false -p `mkpasswd www SD` www
	tail -n1 /etc/passwd					#just checking
	tail -n1 /etc/shadow
	sleep 2	
	

Create the GUI environment for this user

Unless we use FAI (Fully Automatic Installation) or create a debian package that sets up the window manager and the applications the way we want them, we'll have to do it 'by hand', i.e. copy the relevant config files into the appropriate locations, and possibly edit the system configuration where necessary (e.g. set default runlevel). Here's a quick and dirty script (nothing more than a list of commands to execute, really). Note the use of the variable CP_SRC (copy-source) to hold the location where to copy from : could be a floppy, an USB stick, a CD, a network location, any directory, ...


	######### create the GUI ###############################

	echo enter location of files for kiosk configuration : 
	read CP_SRC

	mkdir /home/www/.fvwm/
	cp $CP_SRC/.fvwm2rc /home/www/.fvwm/.fvwm2rc
	cp $CP_SRC/ConfigFvwmTaskBar /home/www/.fvwm/ConfigFvwmTaskBar

	
	########## no GUI in runlevel 2 #########################
	
	mv /etc/rc2.d/S99xdm /etc/rc2.d/s99xdm
	mv /etc/rc2.d/S20xfs /etc/rc2.d/s20xfs
	mv /etc/rc2.d/S20xprint /etc/rc2.d/s20xprint
	ln -s /etc/init.d/xdm /etc/rc2.d/K01xdm

	########## more stuff to do by hand #####################

	echo don't forget :
	echo set default runlevel to 3 (kiosk) => /etc/inittab
	echo run bastille (with -b and prefab config) to lock down the system

	echo ""

	

The configuration files can be something like this:

you may also want a prefab config file for bastille so you don't have to do an interactive lockdown. refer to 'man bastille (or have a quick look at web client setup).

Preferences and Privacy

As all users will be working with the same account 'www', they'll be able to see each others browser history, most recently used file list, mesenger acacounts, etc. Therefore, all applications should get a predesigned setup (eg For firefox : default download location, cookie policy, history settings, .... Same for OpenOffice and others).

That, in fact, calls for techniques to set up these applications automatically with the appropriate preferences and options : unattended silent installs.

TO DO list

ideas for workarounds / temporary sollutions

Possibly (haven't tried it yet), we could edit the preferences and options in OpenOffice, Firefox, Gaim, ... in a model installation. Assuming these are saved in the logged-on user's home directory (.openoffice - .gaim - .mozilla - ...), we could copy them into a save location where the www user has 'read' access, then 'Exec exec' a script that copies them into /home/www when fvwm starts.

The same script could delete files such as .recently-used a.o.


Koen Noens
November 2005