A Temporary Internet Lounge Revisited
Back in 2003 I put together a temporary Internet lounge for the World Science Fiction Convention using a customized Knoppix 3.4, which worked out well. I then wrote about what I had done, and that article appeared in the February 2005 issue of Linux Journal. Of course, time and software wait for no person, so the question now has become how to build a temporary Internet lounge using used/bargain hardware with Knoppix 3.7.
To re-cap, Knoppix is a Debian-based Linux distribution that boots and runs off the CD-ROM drive. By default Knoppix never touches the hard drive--you don't have to install it, you simply have to tell a PC to boot from the CD-ROM drive. Because of Knoppix's excellent hardware detection system, one could, in theory at least, put together a dozen different makes and models of PCs with a dozen identical Knoppix disks, and in five minutes have all of them up, running and browsing the Internet. With Knoppix, there are in essence two filesystems on the disk--a conventional ISO 9660 system that is used while Knoppix boots and a compressed filesystem that is used after the system boots. This complicates things, but it also allows Knoppix to store significantly more than 700MB of software on a conventional 700MB CD-ROM.
Knoppix gets us out of paying the license fees associated with commercial operating systems. Knoppix also gets us away from the hard disk install time requirements of conventional free and commercial operating systems, such as Microsoft, Debian, SuSE, Fedora, FreeBSD and so on. With Knoppix, we have the freedom to tailor exactly what the user sees, be it screen wallpaper that shows the name of the event or browser bookmarks that show the names of the event sponsors.
So, what things might you want to change or control for a temporary Internet lounge at an event? First, the default screen resolution of Knoppix is 1024 x 768. Many 15-inch monitors do not support a resolution greater than 800 x 600, however. So, if you know that you're getting 15-inch monitors, you should adjust the resolution down to 800 x 600. Second, the default window manager is KDE. If you don't know what sort of PCs you are getting for your event or if know they will have less than 128MB of memory and/or less than a Pentium II 350 CPU, you should use a lighter-weight window manager, such as IceWM. Third, the default home page in the browsers would have to be set to something that reflects your event. Similarly, the browser bookmarks likely should be set to event-related information and/or local tourist information. Fourth, the startup screen and wallpaper may need to note the event and/or event sponsors. Fifth, you likely want to add Macromedia Flash support. Sixth, to stay focused on the event, extras can be removed. Finally, you likely want to enable automatic timeserver updates.
Begin your project by downloading and burning a copy of Knoppix. What is described here works with Knoppix 3.7; other versions of Knoppix may not work with what is described below.
You need to assemble a development machine; a machine as modest as a Pentium II 350MHz, with 256MB of RAM, a 52x CD-ROM and a blank 6GB hard drive is sufficient. You could do with less RAM and a slower CD-ROM, but this is about as modest a machine as you would want for this sort of customization. To supplement this development machine, elsewhere on your network you need one or more support boxes to act as the FTP server, a CD burner and the DHCP server.
Next, boot the development box under Knoppix and start a shell. The first steps are to set up a new filesystem, create the necessary directories and create a swap file. Some of this stuff requires just over 1GB of memory, RAM plus swap, so for a machine with 256MB of RAM, a 750MB swap file is needed. Here are the commands for setting up the drive for the first time:
su mkfs.ext2 /dev/hda1 mount -o rw /dev/hda1 /mnt/hda1 mkdir /mnt/hda1/master mkdir /mnt/hda1/source mkdir /mnt/hda1/knx cd /mnt/hda1/knx dd if=/dev/zero of=swap bs=1M count=750 cd ~ umount /dev/hda1 exit
In the above commands, the master directory is used to store the conventional filesystem, source was used to store what is going to be the compressed filesystem and knx was used to store the swap file plus the finished CD image. The above steps should need to be taken only once.
You probably are going to take the next set of steps several times, so you may want to turn it into a small script to automate this part of the disk creation task. This way you can burn a draft CD-R, show it to others associated with the event, get feedback and adapt it based on feedback. Here we erase past work, set up swap space and then copy from the current CD image to the hard drive.
su mount -o rw /dev/hda1 /mnt/hda1 cd /mnt/hda1/source rm -rf * cd /mnt/hda1/master rm -rf * cd /mnt/hda1/knx rm knoppix.iso mkswap swap swapon swap cp -Rp /KNOPPIX/* /mnt/hda1/source cp /cdrom/index.html /mnt/hda1/master cd /cdrom mkdir /mnt/hda1/master/KNOPPIX find . -size -1000000 -type f -exec cp -p --parents {} /mnt/hda1/master/ \;
You now are ready to start customizing your installation. The following steps are separated based on topic, so you may want to skip some sections.
Start with artwork, namely the opening screen and the wallpaper. For the wallpaper, practically any PNG image the size of your screens--1024 x 768 or 800 x 600--is fine. A number of graphic programs enable you to convert easily from .jpg files to .png files, including the popular and free The GIMP. Save this image on the support box as knoppix.png.
The opening start-up screen needs to be in a special 640 x 400 16-color format. If you decide to use Macromedia's Flash program, you need to credit them as part of the boot screen. So, create a simple 640 x 400 image with less than 17 colors, and save it in .bmp format on the support box as startup.bmp.
Next, download the image files from the support box and convert the start-up image to the format you are going to need later:
cd ~knoppix lftp -u <<support box userid>>,<<support box password>> <<support box ip number>> get startup.bmp get knoppix.png exit bmptoppm startup.bmp | ppmtolss16 >logo.16
Next, get into the boot filesystem and issue these commands:
cd /mnt/hda1/master/boot/isolinux mv ~knoppix/logo.16 . chmod 744 logo.16
The next step is to edit the text that shows up under the logo in the file boot-en.msg. Ignore the first two lines--they contain the code to load the logo image--and make sure the third and fourth lines are less than 80 characters. Override the read-only warning, save the file and exit.
To replace the wallpaper, enter:
mv ~knoppix/knoppix.png /mnt/hda1/master/KNOPPIX/background.png
You now are ready to edit /mnt/hda1/master/boot/isolinux/isolinux.cfg. Within isolinux.cfg, you need to edit the first and second APPEND lines. If you want an 800 x 600 default screen, change the VGA value to vga=788. After that, insert the command screen=800x600. If you want to use IceWM, then insert desktop=icewm after the vga= command. Finally, at the end of the file, delete a number of # characters so the final file is no larger than it was when you started. Override the read-only warning, save the file and exit.
Due to the oddities of compression, you may have a situation where without adding or removing software you can find yourself with a too-large filesystem. So, remove unneeded software with these commands:
chroot /mnt/hda1/source dpkg -P <<name of an unneeded package>>
Easy targets to get rid of include games, KDE, server and high-end office software, such as openoffice-de-en. Also easy to get rid of are selected language files, for example, kde-i18n-xx, where the xx represents an unneeded country code. Once done here, press Ctrl+D to leave chroot.
If you need to add a software package, enter:
chroot /mnt/hda1/source wget <<url and name of required package>> mv <<package name>> /mnt/hda1/source dpkg -i <<name of previously downloaded required package>> rm <<name of now installed package>>
Once done, press Ctrl+D to leave chroot. Keep in mind that for anything added, you must take away something larger.
If you did anything while under chroot, you left a history file. To get rid of that history file, enter:
rm /mnt/hda1/source/root/.bash_history touch /mnt/hda1/source/root/.bash_history chmod 600 /mnt/hda1/source/root/.bash_history
Now, start Mozilla, edit the bookmarks, set the default home to the event home page and tweak the default settings. These changes are stored on the RAM disk. To move them to the hard disk you enter:
cp -r ~knoppix/.mozilla/knoppix/ujixazk6.slt/* /mnt/hda1/source/etc/skel/.mozilla/knoppix/ujixazk6.slt chmod -R 644 /mnt/hda1/source/etc/skel/.mozilla/knoppix/ujixazk6.slt/*
Now it's time to add the Flash plugin. Subject to some conditions, noted here, you can distribute copies of Flash with your custom Knoppix disk. You need to credit Macromedia and send the company two copies of what you have done. Assuming you can live with Macromedia's conditions, here are the steps for installing Flash. After you have agreed to Macromedia's conditions, download the Linux install package to /home/knoppix. From there, enter:
cd /mnt/hda1/knx mv /home/knoppix/install_flash_player_7_linux.tar.gz . tar -xvzf install_flash_player_7_linux.tar.gz cd install_flash_player_7_linux ./flashplayer-installer
During the install program, you are asked where you want to install Flash. The answer is:
/mnt/hda1/source/usr/lib/mozilla
You now can delete the install package:
rm * cd .. rmdir install_flash_player_7_linux rm install_flash_player_7_linux.tar.gz
People attending your event most likely will check the time on the PCs and expect the PC clocks to be correct. Look around /usr/share/zoneinfo to find the name of the time zone in which you plan to hold the event. For example, if the event is planned for Winnipeg, Manitoba, the target time zone should be Canada/Central. If the event is to be in Seattle, Washington, the target time zone should be US/Pacific. Visit ntp.isc.org to get the IP number of a secondary timeserver close to the event that welcomes visitors.
If your router has a built-in NTP server, set that router to use the timeserver, and set your planned timeserver below to the router's address. Regardless of where your timeserver is--the router or a site outside your event--create the file /mnt/hda1/source/etc/rc5.d/S99timesetup and insert the following:
#!/bin/bash ln -sf /usr/share/zoneinfo/<<target time zone>> /etc/localtime ntpdate -s -u <<name of the planned timeserver>>
To finish off the time server program, enter:
chmod 755 /mnt/hda1/source/etc/rc5.d/S99timesetup
If it's possible that the CD-ROMs you create might be dropped into machines running Windows, you may want to edit the file /mnt/hda1/master/index.html and replace Knoppix information with information about your event. Otherwise, enter:
rm /mnt/hda1/master/autorun.* rm /mnt/hda1/master/index.html
Now that the software is assembled, you can create the compressed filesystem:
cd /mnt/hda1/source mkisofs -R -U -V "KNOPPIX.net filesystem" -publisher "KNOPPIX www.knoppix.net" -hide-rr-moved -cache-inodes -no-bak --pad /mnt/hda1/source | nice -5 /usr/bin/create_compressed_fs - 65536 > /mnt/hda1/master/KNOPPIX/KNOPPIX
During the above process, you are likely to receive and can ignore a warning message noting that the filesystem is not ISO-9660. This is the slow step; it takes about an hour on a Pentium III 450. A slightly better compression rate can be achieved by inserting a -b after the create_compressed_fs, at the expense of much longer compress times.
Next, create the CD as a whole:
mkisofs -pad -l -r -J -v -V "KNOPPIX" -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved -o /mnt/hda1/knx/knoppix.iso /mnt/hda1/master
From here use lftp to move the resulting file to the support box for burning onto CD-R.
Beyond making the Knoppix CD-ROMs, other issues must be considered when creating the Internet lounge: disabilities, legalities, room layout, power, router setup, staffing and wireless connectivity. Talk to the senior event organizers about any special requirements for people with disabilities.
A brief visit to a lawyer is wise idea to ask about people with disabilities and lounge rules. What provisions you legally are required to make to assist people with disabilities should be your first question. Between what the lawyer says and what the event organizers say, the highest denominator wins. Second, ask about room rules. You want it clearly spelled out that people are using the lounge at their own risk. If someone in the lounge does something illegal and/or immoral, you and the event people do not want to be held legally responsible. To limit the risk of machine damage, keep food and drink away from the machines. Further on your rules sheet, you likely want to reserve the right to remove any being (human, animal or other) that is causing what you consider to be a disruption. Wording the rules correctly easily could be worth the cost of a brief visit to a lawyer.
If you have a choice about locations, choose the one that meets the needs of your disabled users, is as central as possible to the event, has easy access to power outlets and has some sort of high speed Internet connection already in place. If your event is spread out geographically, consider one or more satellite Internet lounges.
For room layout, remember to keep cables as short as possible and safe. A large rectangle or other enclosed shape can work well, with the cables running on the inside of the tables and the lounge visitors on the outside. This keeps most cables from being a potential hazard. This design also keeps the switches away from mischief and leaves a fairly safe place for staff to store their backpacks/bags. Any cables that do have to cross the floor should be covered with heavy cloth tape, or some other arrangement must be made to make sure they do not become a hazard.
You also need to check on power for your machines. In North America, you may be looking at 7.5A of power for a desktop PC plus a monitor--the information will be printed on the power supplies--or you may be looking at less than 1 amp for some laptop computers. In North America, a standard electrical circuit, which may be supporting several wall outlets, can offer up to 15A at 115 volts. So when you are looking at 7.5A per PC and monitor, you need one circuit for every two PCs. Or you could be looking at one outlet per 15 laptops. Make allowances for hubs, routers and other equipment you plan to have in the room and plan accordingly. If there isn't enough power, call an electrician and either bring in extra power or plan to cut back on the room power consumption by going to less power-hungry machines or by reducing the total number of machines. When planning, remember the electrician may need a fair bit of lead time to bring in the extra power you need, so talk to him/her as early in this process as possible. The last thing you want is people being cut off from sending e-mail because of a blown circuit breaker.
It typically is not cost effective to build even a simple router, such as a Coyote Linux box. The problem with a homemade router is the time it takes away from other preparation work, and dealing with a failure requires more than running to a shop with a receipt for a warranty exchange. So, get a basic commercial router/DHCP server from a shop that has a generous exchange policy and long hours that is located near the event. If you are going to be located away from stores, get a second router and call it insurance.
Put together and then follow a packing list of what you are going to need at the event. Include mouse pads, power bars, electrical cords, signs and all the other little bits needed for the lounge.
Once the event starts, you need to staff the Internet lounge, which may mean one person answering questions about how to start up the Mozilla browser. Do think about how you will keep the room covered when you need to step out for a meal or to use the bathroom and so on. The World Science Fiction Convention normally goes with the 6-2-1 rule for volunteers--everyone is required to get at least six hours of uninterrupted sleep, at least two solid meals and at least one shower/bath per 24 hours. That should be a good starting point for anyone working the lounge.
With Knoppix you can have a five-minute training session for room monitors, during which you show them the basics. Tell them that in the event of problems or oddities, simply reset a machine because the hard drive isn't being used. Also, think about how visitors to the lounge will be able to identify room staff: name badge? special hat? special jacket?
802.11B or 802.11G wireless access is worth considering for most events, as you likely are going to have some people with laptops who want this option. I suggest you set up a basic wireless hub, in which you set up WEP security, and then post the appropriate settings either in the lounge and/or in a publication given only to event attendees. This way your attendees can use wireless when they are in/near the lounge, but not everyone from the general public can access your network connectivity.
Beyond that, Knoppix is a great solution for temporary Internet Lounges, so have fun with it.
Colin McGregor (colin@mcgregor.org) works for a Toronto area charity, does consulting on the side and has served as President of the Toronto Free-Net. He also has made presentations at Toronto Linux User Group meetings. He enjoys attending, if not always working at, science fiction conventions.