DisclaimerNeither this author nor the project contributors are in any way responsible for physical,
financial, moral or any other type of damage incurred by following the suggestions in this text or using the
programs. Both this document and the Thinstation program and supporting programs are presented "as is" without
any warrenty concerning functionallity or security.
Any trademark belongs to the owner.
-- NOTE: This FAQ covers Thinstation ver. 1.0.
I'm working on an update.
What is ThinstationThinstation is a basic and small yet very powerful Open Source "thin client" operating system and some programs which make it
possible to connect to servers via a network. Thinstation is mainly intended for office, company or department
use. Being a private individual with just one PC you will have little use for Thinstation.
Thinstation is based on Linux, but users may actually never see Linux at all if you decide to
connect directly to a Microsoft Windows server, a Citrix server or a Unix server! The user will feel he/she
connects directly to the server. But if you want to, you can have a Linux interface - a blackbox window manager to be exact.
Thinstation also supports a MS Windows-only environment and REQUIRES NO UNIX/Linux
KNOWLEDGE (but it doesn't harm :-).Thinstation runs on ordinary PC hardware (x86) and is based on
Linux, which itself is Open Source and free. You may
either reuse older computers or save a lot of time on workstation administration. Or both! An old Pentium 100
MHz with 16 MB RAM or better will be a perfectly useful workstation. And you don't need a hard disk - you can
boot off the network and even have a fairly silent workstation.
But even with brand new hardware Thinstation is advantageous, saving a lot of administration time (I
personally did assamble a new small mini-itx PC from its boxes AND connected to Word on a Windows server within
19 minutes!). You can save money too, as you can just buy entry level or mini-itx computers and still
have fast program execution (as your server permits). With a new cpu and psu fanless and diskless mini-itx PC
you may have a powerful and completely silent workstation (and cool too, if you have to think about air
Thinstation is able to connect to:
- Citrix servers using the ICA protocol (on top of MS Windows
Server, SUN Solaris and IBM AIX)
- Microsoft Windows Servers using the RDP protocol by rdesktop (Windows NT4TSE, W2k Server, W2k3 Server, even XP as single user
- Tarantella servers
- Unix servers running X
- VNC Servers (actually tightVNC)
- Telnet and SSH (Secure SHell) servers
You just need a decent server for the users. An ordinary quality PC with a ~2 GHz/"2000+" cpu and 1-1.5 GB
ram will easily support 20-30 users on a Windows server with MSIE, e-mail and Word/Excel or any similar typical
applications. However, it will not work well with Auto-CAD/3D Studio Max or other heavy duty
- Linux kernel 2.4
- XFree86 4.3
- Boot media: etherboot, pxe, CD, hard disk, compact flash
- Small size - typically 5-6 MB
- Support of more than 20 locales (national languages)
- DHCP and TFTP (for etherboot and pxe)
- Samba and NFS file access
- Supermount (e.g. automatic mount) of client floppies and CD-ROMs
- Sound on clients (if supported by the server) and client connected printers (LPT and USB) - as well as
server and network printers
- Ps/2 and USB keyboards and serial, ps/2 and USB mice
- Scroll wheel mice
- Support for syslog server (to monitor the clients)
- Enhanced Shell with command line editing and history
- Telnetd (telnet server) on clients so the admin can log in and check logs in /var/logs and if necessary
reboot the workstation remotely. Or kill processes.
- Debug package. This stops the inittab entry from working so you start in a console mode regardless what
packages you choose, adds strace which is useful for seeing where a program fails. When in debug mode, you
can start the session manually by going start-session 0
If you are a bit handy with Linux any NIC supported by the kernel and any VGA supported by the current
X-server can be supported by Thinstation.
- Pentium Classic 100 MHz with 16 MB RAM or better.
- NIC: among others: Realtek 8139, NE2000(isa/PCi), VIA Rhine I/II, SIS 900, 3com 903/59x, Intel
eepro100, tulip... (see build.conf for a comprehensive list).
- VGA: VESA. Who needs more for a terminal anyway? OK then - also S3 (incl. virge and savage), ATI
(Radeon and earlier), Matrox, Cirrus Logic, i740, i810, NVidia, Trident, Tseng and more (see
build.conf for a comprehensive list).
Where does Thinstation come fromThinstation was founded by Miles Roper as a fork from Francisco
Castro's Netstation project. If this project interests you, so might
PXES (another Netstation fork) and Diet
PC by Paul Whittaker.
Where to get Thinstation and more informationThinstation is hosted by www.sourceforge.net as Thinstation.sf.net. You'll find two mailing lists there. You may download both
precompiled images (for use in MS Windows-only environments), a fully configurable Linux version and the entire
source for all GPL'ed parts.
How to install Thinstation
We expect you to be an adminitrator or to have similar knowledge (or plenty of time!).Thinstation offers
both prebuilt images for use in a MS Windows-only environment and a fully configurable setup if you have access
to a Linux box (any current distribution will do).
The prebuilt MS Windows solution allow you to connect Thinstation clients to one or more MS Windows server
(NT4TSE, win2k, win2k3) without the need of any unix/Linux knowledge, but still get all the client-server
benefits! Read about the prebuilt solution in http://thinstation.sourceforge.net/docs/HowTo.txt by
Paolo Salvan.To build your own image you need a Linux box. First get Thinstation from thinstation.sourceforge.net. Unpack
tar xvfz Thinstation-<version>.tar.gz
Next edit build.conf to reflect your client hardware. Make it as simple as possible in the beginning,
and make it better/more complete once it works with a basic setup. Now you build the client image: type
What to do next depends on how you want to boot Thinstation:
- network boot with a NIC with a boot ROM:A boot ROM is a small chip on your NIC. They are not common.
- Copy thinstation.nbi (from boot-images/etherboot) and thinstation.conf to
your TFTPD root directory.
- Edit thinstation.conf to match your terminal's configuration.
- Add <TFTPD root dir>thinstation.nbi as the boot file to your DHCP server's
- network boot with a NIC w/o a boot ROM using a boot floppy:You may compensate for the lack of a boot
ROM on the NIC by making a bootable floppy. This solution is probably the most common.
- Prepare everything as described above.
- Go to www.rom-o-matic.net and make the bootable floppy as
explained at that site.
- network boot with a PXE aware NIC:
- Copy the files and directories in boot-images/pxe, kernel/vmlinuz-<version>
(rename it to vmlinuz) , initrd.gz and thinstation.conf to your TFTPD root
- Edit thinstation.conf to match your terminal configuration.
- Add <TFTPD root dir>pxeLinux.0 as the boot file to your DHCP server's
- boot from local storage media (hard disk, CD, Disk-on-Chip/CF...)Booting off local media gives you
the choice of two methods: syslinux or loadlin (DOS only). Please note you do still need the TFTP server to
deliver the thinstation.conf file unless you adapted the thinstation.defaults
correctly and make an unique image for each computer.
You'll need the syslinux package (~400 kB).
- Copy the files in boot-images/syslinux, kernel/vmlinuz-<version> (rename it to
just vmlinuz) and initrd.gz to the storage media.
- Run syslinux /dev/<device>
More info on syslinux? http://syslinux.zytor.com/faq.php
Lars Karlslund has contributed a Thinstation Compact Flash card + syslinux boot HOWTO
How-to make a bootable Thinstation CD: Since I (Mike) had some trouble using the official TS
1.0 way, I'll present the way CDs are going to be made in 1.1 (it is far better too :-):
- Build the image using the super kernel and nbi. Forget about the cd kernel and iso in
- Make the directory boot-images/iso/source and grab the files isoLinux.bin and
isoLinux.cfg from here and put them in
this new directory. Also grap make_iso
and put it in boot-images/iso.
- Make the file make_iso executable (chmod u+x make_iso) and run it.
The result will be the file boot-images/iso/ts.iso which you can burn as an image with your
favorite tool (cdrecord ts.iso under Linux is one suggestion...).
- Copy the files in boot-images/loadlin.exe, kernel/vmlinuz-<version> (rename it
to just vmlinuz) and initrd.gz to your DOS (aka FAT) media.
- Run ts.bat
- More on loadlin? http://elserv.ffm.fgan.de/~lermen/
- boot from a floppy:(Stand alone floppy boot is unconfirmed at the time of writing. Please let me
know about your experiences.)
- Format a new floppy: superformat /dev/fd0
- Build a Thinstation image including only the base package.
- Copy the files in boot-images/syslinux, kernel/vmlinuz and initrd.gz to the
- Run syslinux /dev/fd0
NSP packages:To select which nsp packages must be loaded after boot you must set the PACKAGES variable
in Thinstation.conf file. The .nsp files must be put on the same directory where the .nbi image resides.
Configuring ThinstationAny basic client configuration is done in the file thinstation.conf in
the TFTP server's root directory. All lines beginning with a # are comment lines (not read). Add/remove the #s
to reflect your whishes. Make a simple thinstation.conf to start with (e.g. one NIC and one video card
(try VESA when in doubt) and one server protocol and minimal service/daemon support - no sound/printer...) and
gradually make it as you want to.
It is possible to have both individual and groupwise thinstation.confs.
Be aware you can't add features in thinstation.conf not already built into the image (pre-built or
defined by your own build by build.conf)!
And now to Qs and As:
NIC, video and peripheral questions:
Thinstation as workstation:
MS Windows servers:
Q: Can I
have individual configuration files for different clients?
A: Yes. In your TFTP server's download directory you just create a configuration file named
thinstation-<ip address>.conf (e.g. thinstation-192.168.1.2.conf) or
thinstation-<MAC address> (e.g. thinstation-12AB34CD56EF.conf). A file just named
thinstation.conf will be the default configuration.
If you have made a thinstation.hosts file (which maps MAC
addresses to host names) you can name the configuration file thinstation-<host name>.conf (e.g.
thinstation-peter.conf). Much easier to remember.
Q: Can I have
individual image files for different clients?
A: Easily - if you boot off a local media, but it is not so easy with network boot. Usually
the DHCP server tells the client to ask the TFTP server for one specific image. However, you can let the DHCP
server detect the clients MAC address first and then hand out a specific ip address AND a unique image file
name to the client. This way you lose some of the flexibility of using DHCP, but you get a more secure network,
since you are in control of which NICs are acceptable to get net access. Normally you should be able to make a
comprehensive image which covers any clients and then use the conf file to select the needed modules for the
individual client. However, please note that you do have a size limit for the image file (8 MB for ver. 0.9x,
16 MB for ver. 1.x).
Q: Which mouse protocol to use ?
Q: How do I get the scroll wheel on my mouse to work?
A:For a traditional serial mouse (rhombic 9 pin connector) you probably need the
MICROSOFT protocol. Mice with a PS/2 connector (small round one) needs ... PS/2 :-). However,
wheel PS/2 and USB mice need the IMPS/2 variant. For unsual mice see www.faqs.org/docs/Linux-mini/XFree86-Second-Mouse.html#PROTOCOL.
A: Assuming the server and the server software application supports the scroll wheel, all you
have to do is to change one line in the thinstation.conf:
Remember to hard reboot your Thinstation afterwards.
Q: How do I get my USB mouse to
A: You will need to use X_MOUSE_DEVICE=/dev/input/mice in thinstation.conf
to support a USB mouse, in addition to including the "usb" Thinstation package (for ver. 0.9x) or "usb-hid"
(for ver. 1.x) in thinstation.conf.
Q: The X font server doesn't work
A: Make sure you use the right tcp port on the font server e.g.
X_FONT_SERVER=192.168.1.2:7100 (at least Red Hat uses port 7100 but check with your distro) in
Q: I can't connect to a unix
server using X
A: Make sure XDMCP is running on the server and accepts connections. There is a good
step-by-step procedure at www.redhat.com/mirrors/LDP/HOWTO/XDMCP-HOWTO/procedure.html
(not Red Hat specific).
Q: Is XDMCP (X server) accessed by "-query"
or by "-indirect"?
A: If you prefix the server address with an asterisk in thinstation.conf then X will
be started using the "-indirect" rather than the "-query" option. For example:
Q: The Thinstation X server doesn't start - it keeps on trying and trying.
A: First make sure you have setup the mouse correctly. A misconfigured mouse can prevent X
from starting! Go figure... Next make sure you have built in the correct driver in the image. Try the VESA
driver alternatively (any video card should be VESA compatible). Make sure X_HORIZSYNC and
X_VERTREFRESH in thinstation.conf has the correct values. X servers can be very
picky about this! If you have trouble finding the right modes, have a look at www.ibiblio.org/pub/Linux/docs/HOWTO/XFree86-Video-Timings-HOWTO
If you have a SIS based video card, you may need some hard work and the help of Thomas Winischhofer to run XFree86
successfully on any Linux distro.
Q: Poor colors and no sound connecting to a MS Windows server with RDP (rdesktop)
A: At present only 8 bit (256) colors are supported by the rdesktop ver. 1.2 client software.
And no sound. When the rdesktop project advances on this, so will
Thinstation support. However using ICA you should be fine but a few bucks down....
keyboard layout with MS Windows server using RDP (rdesktop)
A: Rdesktop ver. 1.2 has a few problems with some non-US keyboards. Check out the rdesktop
CVS to see which has already been fixed.
Q: Hey! Where
is the telnet client in blackbox - no menu entry!?
A: Boot up in blackbox, open a xterm and type telnet <server>. This
is fixed in ver.1.0.
Q: My BFG9000-Pro mk. III-c (or whatever) graphics card
ain't supported by Thinstation. But XFree86 supports it!
A: If there is a driver for for your video card and it is for the same XFree86
version as Thinstation use (currently 4.3) and if it is compiled with GCC 2.95 (this is common), then support
it yourself :-) Create the directory structure
Put the driver itself (<name>.o) there and chmod it into -rwxr-xr-x. Edit
build.conf and add xf4-<name> as a module and rebuild. And done!
If there isn't any XFree86 support you still might still try the VESA driver, though.
Q: My NIC does support PXE but PXE boot doesn't
A: If you have an early PXE implementation, it might be buggy. See http://syslinux.zytor.com/faq.php. Version 2.0 or newer is preferable.
However, double check your DHCP/TFTPD setup.
Q: My NIC doesn't support PXE and
making/buying a boot ROM for it is out of the question. Can't I just boot off a hard disk?
A: Sure. Make a small DOS (FAT12 or FAT16) partition
and use loadlin or syslinux to boot (loadlin is simple, syslinux offers more candy). See
How to install Thinstation.
Sub-Q1: How much disk space do I need then?
Sub-A1: 8 to 10 mega bytes if you can afford it.
Sub-Q2: So little!? Couldn't I use a USB keyring or a Compact Flash Card
Sub-A2:Yes - see Lars Karlslund's contributed Compact Flash card + syslinux boot HOWTO.
Q: Can I boot off a CD (KNOPPIX
A: Yes. That's what the Thinstation boot CD does! You can use Thinstation without
ever touching your PC's harddisk.
Q: Can I boot off a CD if my BIOS/CD doesn't support
A: Yes, with a little help from a boot floppy: Smart
Q: Can I boot off just a floppy?
A: Well, at least you can mimic etherboot with a floppy even if your NIC doesn't have a boot
ROM. This mean you can use a floppy to connect to the DHCP and TFTP server and download the rest. Maybe a bit
slow during boot, but it works well.
Goto http://www.rom-o-matic.net/ and download an image for your
NIC. Follow the instructions on that site to make a net bootable floppy.
Q: Can't I avoid the TFTP server?
A:If you REALLY don't need any reconfiguration of Thinstation once it is built, you actually
can do without if you boot from a local media. Before you build:
Thinstation ver. 0.9x: Edit the file packages/base/etc/thinstation-defaults to reflect your needs and
append any needed entries from thinstation.conf.Rebuild.
Thinstation ver. 1.x: Edit the file thinstation.defaults and rebuild a new
Q: Can't I avoid the DHCP server?
A:Thinstation ver. 0.9x: No.
Thinstation ver. 1.x: Yes. Obviously you must boot from a local media. Setup all the network parameters in
thinstation.defaults and (re-) build.
Cool! I just run MS Windows on a server and save all the licence money!In order to connect with terminal services to your Windows
server from Thinstation, each client must have:
A: Well, that would be illegal.
(note the difference between CAL and TS-CAL. A TS-CAL is more expensive than a CAL). Please read here for
a more detailed and authoritative answer: www.microsoft.com/windows2000/server/howtobuy/pricing/tsfaq.asp
- A CAL (Client Access Licence - you get 5 or 10 CALs for "free" with the MS server licence).
- A TS-CAL (Terminal Server CAL.)
So, using Thinstation you save:
- The money for the client operating system itself (you just have to pay for the CAL and the TS-CAL)
- Really a LOT on client administration
Q: Can Thinstation be a
light Linux workstation - or how do I get root access?
A:Well, if you really push it, yes you can have a workstation, sort of. At least you can have
a stand alone Linux unit. You'll have very few tools and no compilers etc, though. To login in text mode you
have to press Ctrl-Alt-F5 (even if you are in rdesktop or ICA mode or what-ever). Login as root. The
password is pleasechangeme as default (Change it!!! - see below). If you prefer a X interface, boot up
in blackbox and make a telnet to localhost.
Q: How do I change the root password -
and should I change it?
A: YES! You really must change it! Why? Hmmm - only you, me and the
rest of the internet know the default root password is pleasechangeme... And you shouldn't trust me
This is how to change it:
Ver. 0.9x: Put the desired password (which DOES contain eight+ characters including BOTH small and capital
letters AND digits AND special characters like #¤%&/+(-) - right!?) into the file ROOTPASSWD
before you build.
Ver. 1.x: Same rules, but now the password is set directly in build.conf.
Thanks to Benjamin J. Chapman for supplying us with the password program from gnu.org and
instructions how to use it.
Q: Can the
clients have a /etc/hosts file the usual unix style?
A: Yes and no. There is no traditional editable hosts file, but you may tweak the
Thinstation setup to support the same functionallity. Edit the file
echo "127.0.0.1 localhost" > /etc/hosts
echo "$NS_CLIENT_ADDR $NS_CLIENT_NAME" >> /etc/hosts
echo "$NS_SERVER_ADDR $NS_SERVER_NAME" >> /etc/hosts
echo "127.0.0.1 localhost" > /etc/hosts
echo "$NS_CLIENT_ADDR $NS_CLIENT_NAME" >> /etc/hosts
echo "$NS_SERVER_ADDR $NS_SERVER_NAME" >> /etc/hosts
echo "192.168.1.2 my_server1" >> /etc/hosts
echo "192.168.1.3 my_server2" >> /etc/hosts
(use your own relevant numbers and names). Rebuild
and substitute your previous initrd.gz.
Q: How are the
clients named networkwise when using DHCP?
A: As default they are named ts_<MAC address>. "ts_" is defined in
thinstation.conf by the DEFAULT_HOSTNAME (ver. 0.9x) or NET_HOSTNAME (ver. 1.x)
entry. You may change this, but if you use more than three characters the MAC address will be truncated.
However, you may make the file thinstation.hosts in the root directory (where the kernel and the
image is) to link a name with the MAC-address. The syntax is:
# You can have any amount of spaces/tabs between names
HOST MAC GROUPS COMMENTS
bigboss 000103014152 printer hires # On Miles Desk
daffy 0060082FCBE8 #
donald 00A02403B0BE printer #
This will name the clients bigboss, daffy and donald.
Q: What is the group configs
A: Imagine you have a LOT of Thinstations. Some are old Pentium Classics, some are newer and
have a printer attached and some have a good VGA and large, new monitors. Instead of making individual
config-files for all your Thinstations you can group them with thinstation.hosts and create a
thinstation-<group>.conf (e.g thinstation-printer.conf). A
thinstation-<group>.conf is just another thinstation.conf with a different name (as is
thinstation.defaults). Be careful with all these "thinstation.conf" variants: the latest read
will overrule an earlier read. The sequence is:
thinstation-<group2>.conf... thinstation-<IP address>.conf and finally
Q: Will Thinstaion have a "real"
browser like Mozilla/Firebird or Internet Explorer?
A: Internet Explorer?! Uhm, not soon :-/
And really, the same goes for Mozilla/Firebird/Opera... etc. Thinstation is for older/weaker hardware, not for
3 GHz P4s. A Thinstation browser should not be an alternative to a server side browser. If you
want/need a complete browser, you should just login to the server Thinstation needs anyway (ica/rdp/X). A
Mozilla/Firebird browser not only claims a lot of RAM, but even worse, it is taxing the CPU badly. Imagine
running Mozilla on a Pentium-100 - hopeless. Why not just log-in to your 2-3 GHz server and fire up
Mozilla/MSIE in a few seconds?
This said, the next Thinstation will include a light webbrowser for reading documents and maybe reading
Q:How do I use a printer connected to a Thinstation client?
In build.conf enable lp_server.
In thinstation.conf add the following lines:
This will share the Thinstation client's parallel port on the network.
To use this printer from your server, add a new printer on the server associated
with a network port on the client. To do this on a Win2000/Win2003 server:
- add a new printer
- select "local" (deselect "autodetect plug & play printer")
- create a new "standard TCP/IP" port
- IP address for this port: insert the address of the thin-client
- port type: "Hewlett Packard Jet Direct" (port 9100).
- select the correct printer driver, and finish...
Q: Do you have more docs on ICA,
rdesktop, tarantella, blackbox...
A:We don't really doc the connectivity packages (ica, rdesktop...) since the guys and gals
behind them has more knowledge and does it much better than we can do. Search at the parent package's homepage
and get better advice.
Q:My keyboard layout isn't supported or is broken
A:See the keyboard request guide.
However, see also Faulty keyboard layout with MS
Windows server using RDP (rdesktop)
Q: Can I add my own package to
A:Yes. It requires some Linux/programming skills, though.
Make a folder in packages and put all your files in there, in a normal layout, ie
packages/<your app>/bin and packages/<your app>/lib. Don't use sbin, put
everything in bin. Also, don't use var, or usr, these are just symlinks to
tmp, everything in temp is created through the etc/init.d/XXXX scripts. Use
/etc/init.d/XXXX scripts to do all your initilization as only tmp is writable. All other
files are read-only, so anything which needs to be changed, needs to be a symlink to a file in temp. You need
to link against glibc 2.1.3 (available precompiled from the thinstation-developer source code).
You'll find ldd very useful to determine dependencies.
DHCP- and TFTP-Server configurationThinstation normally needs (at least) three servers to work: a
DHCP, a TFTP server and one or more application server(s). These may very well be the very same computer
hardwarewise. But if you boot from local media you can avoid the DHCP and/or TFTP server. However, if you have
many clients you would probably prefere both a DHCP and a TFPT server to make your life easier.
DO NOT INSTALL ANY SERVERS ON YOUR NETWORK UNLESS YOU ARE ALLOWED TO DO SO! They may conflict with existing
servers on your network making you very unpopular...
DHCPA DHCP server (or "daemon" in the unix/Linux world) hands out an ip number for your client upon
request and names the TFTP server as well as the name of the download directory and the client image on the
TFTP server. You need a DHCP server for Thinstation ver. 0.9x and probably want one for ver. 1.0.
Windows 2000/2003 DHCP servers works fine, but if you use a Windows NT4 server you need Service Pack 4+ (you
should have SP6 anyway). Any current Linux DHCP daemon is fine IFAIK, but you would probably choose
DHCP3 by isc.org. Paul
Whittaker has a great piece on Windows 2000 and DHCP here. And there is a fine Linux guide at
TFTPThe TFTP server manages the download of the boot image to the client.
The TFTP server must support the "tsize" option when using PXE boot. The Red Hat 7.3 TFTPD does not
support this option. atftp does. Newer Red
Hat versions should be ok.
Stolen directly from Paul Whittaker's http://diet-PC.sourceforge.net/setup.html#tftp (May
Now install and activate the TFTP server on your designated boot server. UNIX-like operating systems will
come with a TFTP server package (although it may not be installed by default), but you may have to obtain a
third party package for other O/Ss. See the Windows 2000 Etherboot HowTo for TFTP options
available for Windows platforms. To activate the TFTP server on Red Hat Linux, install the TFTP server RPM, set
disable=no in /etc/xinetd.d/tftp and restart xinetd using "sh /etc/initd.d/xinetd restart". Set "umask 022" to
ensure world-readability, create your TFTP root directory (usually /tftpboot) if required.
The MS Windows servers come with a build-in TFTP server called "Remote Installation Service". However,
it needs a domain controller to work, unless you use a hack by Morgan Simonsen (mind you - you still need a
valid MS Windows server licens).
An other possibility to get a small and simple combined DHCP and TFTP server for MS Windows is http://tftpd32.jounin.net/ (supports "tsize" for PXE boot). To run it
automatically as a service, use FireDaemon (free for non-commercial purposes).