Linux thin client Installation guide

Document Change History

Version Issue Date Changed By Details of Change
1.0.019-Apr-2004Zach Forsyth
(Zach.Forsyth AT
Initial Draft
1.0.105-Jun-2004Mike EriksenHTML'ization, few minor changes
1.0.223-Jun-2004Mike EriksenBug in naming of group config files fixed



This document outlines the methods to install a Linux thin client software solution based on Thinstation on older hardware and a current terminal server.

Items required:

Initial Preparation

Ensure that the application server is completely up to date with all security patches, hot fixes and service packs.

Time to implement


1. How to follow this document

Except for where you are requested to jump to a new step, follow through each step sequentially.

2. Introduction

Thinstation is a Linux distribution that enables you to convert standard PCs into full-featured diskless thin clients supporting all major connectivity protocols like Citrix ICA, MS Windows terminal services (RDP), X, Telnet, SSH, etc.

It can be booted from the network using Etherboot/PXE or from standard media like floppy/CD/hdd/flash-disk etc. The configuration can be centralized to simplify terminal management.

The focus of this document is to convert an old pc (we have had success with 166 MMX systems) into a thin-client for Windows Terminal Services, Citrix ICA, X or VNC.

Note: A minimum of 32mb of ram is desirable.

The old pc (thin client) can be booted without the need for any internal storage devices if it is capable of PXE network booting. I have found the perfect card for this is a 3com 3C905CX-TX-M, which can be bought in a twenty five pack for a reasonable cost.

Alternatively the PC can be booted from floppy, or CD, or even the hard drive, but this document will focus mainly on the PXE network boot abilities of Thinstation.

The proposed thin client design uses the following boot procedure:

3. Thinstation Linux software

Please visit the following internet location and download the most recent version of Thinstation:

Click the download link and then sources
At the time of writing the most recent version was Thinstation-2.0.1

Save this file into a location where you can transfer it to a Linux host. To read the vendors documentation you may extract the files using WinZip or winrar under windows, but will encounter a couple of errors (you can safely ignore these errors as we just want to read the docs under windows).

Download or otherwise copy the file that you have downloaded to the Linux host. Create a directory we can work in on the Linux host by issuing the command:

You can create this directory wherever is most convenient for you and name it whatever you like.

I find the easiest way to transfer files is by using an ftp server, simply upload the file you an ftp server using your windows ftp gui application of choice, and then download it on the Linux host using the command:


  1. The first line will ftp into (or whatever your ftp server address is) where you will then be asked for login credentials to access the ftp server
  2. The second line changes to binary transfer mode
  3. The third line simple downloads all files that start with the word Thin
  4. You will need to acknowledge you want to download the file
  5. then you will want to quit back to the console

Once these are downloaded into a working directory such as \apps you may extract them using the following command:

Linuxhost> tar -zxvf Thinstation-x.xx.tar.gz

This will create a directory called Thinstation-2.0 which contains all of the files we need.

Note: xxx denotes version information and will depend on what version you have downloaded.

4. Configuration

Change into the directory that Thinstation was extracted to on the Linux host.

We now need to edit a file called build.conf
If you are familiar with linx/unix vi application you may complete the editing within Linux or alternatively you could edit this file under windows and then ftp it back to the Linux host. Your choice...

Within the build.conf file are configuration options that cover the following areas:

All of these areas have modules listed that you can enable or disable by simply adding or removing a hash symbol. Example:

# --- Network cards modules

module eepro100
#module e1000

In this example the eepro100 module is enabled and the e1000 module is disabled.
Simple as that...

You need to run through all of the listed modules and choose which modules you would like to have enabled. This will be determined by the clients existing hardware which Thinstation is required to run on.

For example, you will need to select all of the modules that directly relate to the network, sound and video cards that are installed in all of the machines in the target thin client group.

Unless otherwise mentioned you may choose specific modules for the particular hardware that needs support or where you are unsure leave the default selections in place.

You can always fine tune these selections once you have successfully created and tested your first image.

Copy or save the edited build.conf file and proceed to build the image. At this point in time we are ready to build and can issue the following command:

linuxhost> ./build

This will build a set of images for all different booting methods and will store them under the boot-images directory. You will see a lot of messages flowing past and should not see any error messages at all.

I like to just copy this whole directory back onto my windows machines and then I know that I have all the files for any boot option I would like to use. You can do this by compressing the folder and then using ftp to send it back to the windows host.

linuxhost> tar -cf boot-images.tar boot-images

This will create a file called boot-images.tar of the boot-images directory and all sub folders and files. You can now ftp this back to your windows host and then decompress it to a folder.

It is also a good idea to grab the following client configuration files and upload them as they will be needed on the tftp server in some of the following steps.

5. TFTP server installation

Microsoft Windows servers include a "remote installation service" (RIS), which is a tftp server (a "tftpd") that runs as a service, which is nice. However the only options you have to configure RIS is to change a registry key directly that locates the files it serves. There is no logging, there is no other way to configure it at all. In my opinion there are other and better ways to install a tftpd service than using RIS as there are multiple free tftp servers that can be installed as a service using the Microsoft Windows resource kit tools. See also my separate guide on TFTP as a service HOWTO.


The following programs from the Microsoft Windows NT4/2000/2003 resource kit:

The srvany.exe utility is distributed by Microsoft as part of their Resource Kit for Windows NT4/2000/2003. Included with this utility is instsrv.exe that is used to install services. A service is similar to a background process on Unix.

The advantages of running as a service include:

Using these directions You can install your own application to run as a service.

Here are the steps to configure a tftpd service:

Install the Solarwinds tftp server application and just choose all the defaults.

Copy instsrv.exe and srvany.exe to a local directory on the machine you wish to run the tftpd service. Open a command prompt and browse to the location srvany and instsrv are located.

instSrv uses the following syntax to install SrvAny and create a service name:


If the service was successfully installed the following information will be displayed:

After you install SrvAny and create a service name, you must configure the service. To configure a service you must specify a target application, an account name, and password for the service to use. Then you can configure optional settings such as startup parameters and a default working directory.

You can now need to configure your service with the registry editor. Once this step is complete all further configuration should be possible through the services mmc tool.


Caution - The registry editors bypass standard safeguards, allowing settings that can degrade performance, damage your system, or even require you to reinstall Windows.

If you must edit the registry directly, back it up first. Read the Registry Editor Help for more information. To configure a service in RegEdit:

  1. Click the Start button, and then click Run.
  2. In the Open box, type regedit, and click OK.
  3. Add a new sub key named Parameters in the following registry location:
  4. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
  5. Right-click the newly created service name that you created when installing srvany (eg. "tfptd32service"), point to New, and then click Key.
  6. In the console pane, for the name of the new key, type Parameters.
  7. To specify the target application, right-click the Parameters sub key, point to New, and then click String Value.
  8. Type the name of the new entry as Application.
  9. Right-click Application and then click Modify.
  10. In the Edit String window, in Value Data, type the full path to the application, including the application name and extension (for example: C:\tftp\tftpd32.exe).

You can now start the "tftp32service" manually using the Services application in the Control Panel.

Check that it's working OK. You can now also set a whole range of options from within the Services application.

That should be it, now our Thinstation image and configuration files can be added to the tftp root directory.

7. DHCP server and TFTP files

Setting up the Windows system DHCP service

  1. If necessary, install the DHCP service from Windows component setup (under "Network services") of your Windows server
  2. Start the DHCP manager by selecting the DHCP option from the Admin Tools submenu of the Programs menu.
  3. If you have not already done so, create a scope (New Scope.. in the Actions menu). You'll need to specify a start and end address, subnet mask, and any exclusions (excluding your server IP address is probably a good idea!).
  4. Inside this scope, click on Scope Options and then select Configure Options from the right-hand mouse button menu.
  5. Select the checkboxes corresponding to the desired options and set values appropriately. You will need the following:
    - 66 Boot Server Host Name: "" (put here your terminal server IP)
    - 67 Boot file Name: "thinstation.nbi.zpxe"

You can now copy some files from the boot-images.tar file that was previously uploaded back to the windows hosts. The files required are to be copied to the tftp servers root directory, which is probably c:\tfpt-root or similar.

Files required are located within the \boot-images\etherboot folder. Copy the following files to your tftp servers root working directory:

You should also get a copy of the thinstation.conf.example and thinstation.hosts.example from the base directory of the Thinstation archive that we extracted earlier on the windows system. Alternatively this can be found on the Linux host.

Once this file has been copied to the tftp servers working root directory please rename them from thinstation.conf.example to, and thinstation.hosts.example to thinstation.hosts.

There should now be the following files in c:\tftp-root

The thinstation.nbi file is the thinstation image.
The thinstation.nbi.zpxe instructs PXE enabled clients to download the image.
The file holds configuration options for all thin clients.
The thinstation.hosts file holds host specific information.

8. configuration file

The file is used as a global configuration file to set specific connection and session options for all thin clients.

To ensure that we can always revert to an original configuration file you should save a copy of as thinstation.conf.backup.

Once this is done, please open using notepad or WordPad. Do not use Microsoft word as it adds some nasty formatting information. We basically want a plain text file and nothing else.

Unless otherwise mentioned you may choose specific settings as applicable to your environment or where you are unsure leave the default selections in place.

Remove or disable the following section:

#SESSION_0_ICA_APPLICATION_SET="Windows 2000 Desktop"

And replace with whatever session you would like the thin client to load.
Example of an rdesktop/Windows Terminal Server Session below:

SESSION_0_TITLE="Company X Terminal server"

You need to set SESSION_0 to your desired setting to match your particular environment. Note: You need to set the IP address and title to your specific requirements. Make sure you have correctly placed or removed the # symbols within this file. "-u ''" sets an empty user-ID, "-u joe" sets default user-ID "joe". "-a 16" requests 16 bit color depth on Windows 2003 server. Valid values are 8, 16 and 24. Windows 2000 server only support 8 bit color.

If you have a printer that is serial or usb you will need to enable the specific sections as required.
The default image is setup to allow the use of a parallel printer.

Once you have set all of the required options you may save the file and test booting a thin client from the network. It should receive a dhcp address, then download the thinstation.nbi file load all of the modules and then connect to the windows terminal server we have specified.

9. Custom configuration file

This section describes how a custom file can be used for each thin client.

If you need to set individual configurations for terminals (i.e. custom keyboard layout or video settings) you can add configuration files named like:

thinstation.conf-<eth MAC address>
example: thinstation.conf-005004AABBCC


thinstation.conf-<ip address>
example: thinstation.conf-

Each thin client will merge the options included in with the ones included in these files.

A better way to do this is giving the thin client a hostname by editing the thinstation.hosts file that was copied into the tftp root working directory earlier.

The thinstation.hosts file should appear as follows according to Paolo Salvan's guide:

donald003103014152it_kb hi_res# Donald Ducks Computer
daffy005001231234# Daffy Ducks Computer

You can specify the hostname of every thin client, and assign them an optional "groups" setting. With the settings shown above the thin client host named donald will get the following conf file:

...while the thin client host called daffy will only receive:

Both of the methods mentioned above will allow us to set up client specific configuration files and will allow the users to be grouped logically according to their requirements.

10. Alternative boot methods

In the scenario that end users machines do not support PXE booting or are limited by bandwidth it is beneficial to be able to boot them from local media. Thinstation supports a number of local boot methods but I have found the two most useful are booting from floppy and CD.


If you would like to boot from the floppy drive please visit the following internet location and download the most recent version of the Universal Boot Disk - (currently

Click the download link and then sources

Save this file into a location where you can access it on a windows host.
Extract the contents of this file and then open a dos window and navigate to the folder.

Once this has finished you will have a boot floppy that will start up a non-PXE network card and download the Thinstation images from the server.

As described in Paolo's guide, this boot disk contains more than 30 NIC drivers that cover the most popular network cards being used today.

Note: PCMCIA or USB network cards are not supported!

If you have a PCI or ISA card that doesn't work with this boot-disk:

CD booting

CD booting is very useful for clients that have very low bandwidth but would still like to connect to the terminal server as a thin client. A perfect example is a user that is connecting over a DSL link.

If you would like to boot from a CD you can create an image by hard coding all of the values you would like to be used before we run the ./build command on the Linux host.

Follow the above instructions to configure the build.conf file and the follow the instructions below before issuing the ./build command.

On the Linux host rename thinstation.conf.example to thinstation.conf.buildtime and adapt to your specific needs including all of the required network settings. These settings will then be hard coded into all the different boot files.

After you are satisfied all of the settings are correct you can run the ./build command which will create the images under the boot-images directory.

If you can burn CD's on your linux host, you can go ahead and burn the iso image found under the \boot-images\iso directory.

Otherwise you can follow the procedures earlier to compress, copy and extract the boot-images directories contents to a windows machine.

Once you have the files on a windows machine you can simply burn a copy of the iso file found in the boot-images\iso directory onto a CD using Nero or any CD burning application.

You will need to follow this procedure every time you need to make a configuration change to the thin clients as all the settings are hard coded and the clients do not pick up specific settings from the tftp server.

11. Printing

Each thin client is automatically configured to support a printer on the parallel port. They can be configured to support further printers on serial or usb ports as well by changing a section of the file as described previously.

The procedure below describes the steps to share the printer on the parallel port on the thin client to the server and to allow any network connected fat or thin client to print is as follows:

To install the printer on any of the thin clients within the network you can simply browse through the Network Neighborhood to the server the printer was install on and double click the relevant shared printer.

Note: I have found that due to security restrictions imposed on the terminal server client sessions the printer driver cannot always be installed on each thin client. If this occurs, you can log in as a user with administrator privileges on the terminal server and set up the printer. This appears to place the printer driver files into the right location on the server, so that when the client installs the printer the driver files are already present.