Thin Client: New User Guide

Stephen Noble stephen7 at bigfoot.com

30th November 1999
1.How to turn inexpensive legacy computers into fast terminals using the power of your main computer, you will need : A fast computer to act as Server, A client computer (old and unwanted). Linux compatible network cards. A connection between computers. 2.How to centralise system administaration by useing NFS, ie placing the entire file system of a faster client on the server.

1. Introduction

2. Hardware and Documentation

2.1 Hardware

When you start, you will need at least this

2.2 Documentation

You may like to familiarise yourself with the linux documentation, specifically you can read (skim) for an overview the following :

Also you probably have in the /usr/doc/LDP/ directory

The obligitory link

One last thing

3. Server setup

The server needs to be setup in readiness for the client in a number of ways

3.1 Check your network services on your server

run the command /sbin/ifconfig if your output is similar to below then your loopback and ethernet card are correctly configured.


[cassie@snoball cassie]$ /sbin/ifconfig
lo        Link encap:Local Loopback
     inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
     UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
     RX packets:854 errors:0 dropped:0 overruns:0 frame:0
     TX packets:854 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0
eth0      Link encap:Ethernet  HWaddr 00:AA:00:BB:BD:09
     inet addr:192.168.53.1  Bcast:192.168.53.255  Mask:255.255.255.0
     UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
     RX packets:190369 errors:0 dropped:0 overruns:0 frame:0
     TX packets:249267 errors:0 dropped:0 overruns:0 carrier:1
     collisions:4793           Interrupt:5 Base address:0x320

If not ...

3.2 Setting up a dhcpd daemon

Here the server gives out IP numbers to requests by clients

3.3 Tftpd setup

trivial ftp - after you have your IP number your client requests a kernal, this is delivered over ethernet.

restart inetd, kill -HUP "process id of inetd"

3.4 Kernel image

You must compile a kernel for the Client that includes NFS support and the NIC driver for that client compiled in (not modules). Answer yes to Root file system on NFS? and BOOTP support?

After building the kernel, run mknbi-linux from the Etherboot distribution on it.(the mknbi program in the netboot/linux directory) Install this tagged image as /tftpdir/"vmlinuz.xterm".

see etherboot-4.2/doc/html/README-3.html

should i put a copy of mine somewhere for download RH6.0 ne2000 NIC

3.5 Security

It's easiest to allow anybody and anything to run services and process on your computer, but one day you will be sorry. You restrict these by your /etc/hosts.deny and specifically restore rights by /etc/hosts.allow, indicative examples :


#hosts.deny
# all except those in hosts.allow
ALL:ALL


#hosts.allow
#only hosts within my domain and my host at home.
ALL:LOCAL, 192.168.53.       #<-- note:no space after :

more security - look for more information in the ldp-howto's and if your using etherboot, in it's security howto.

4. Client setup

Network loader

A small program that runs as a BIOS extension, can be loaded from a floppy, or you can burn an eprom chip and insert it on your network card for a totally diskless client. It handles the DHCPD query and TFTP loading and then transfers control to the loaded image. It uses TCP/IP protocols.

There are two free implementations of TCP/IP net loaders: Etherboot and Netboot: Etherboot uses built-in drivers while Netboot uses Packet drivers.

5. Network files system

The Client requests to mount /tftpboot/<IP address of client> as its / by NFS from server. You must export this from the server,(maybe symlink to /tftpboot/client to be safe.)

NFS is a big topic there is a HOWTO and two mini Howto's.

first you need to create a copy of your current system under /tftpboot ken has written two scripts that do all your work, I called them makefirst and makecopy. my first client takes 20-30mb and the copy less. I used du -h to look for large unnecesary files.

see etherboot-4.2/doc/html/diskless-5.html

the following seem to me to be the critical files here

5.1 server specific


#/etc/exports
/tftpboot/elite             elite(rw,no_root_squash)
/tftpboot/elite             gordon(rw,no_root_squash)
/usr                        *.gundog.net(ro)
/home                       *.gundog.net(rw)
/mnt/cdrom                  (ro)

run exportfs -a  to reread the exports file after
changes /usr/sbin/exportfs --help


#/etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4="no"
HOSTNAME="snoball"         <-----------
GATEWAYDEV=""
GATEWAY=""


#/etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR="192.168.53.1"            <-----------
BOOTPROTO=none

5.2 client specific


#tftpboot/elite/etc/fstab
snoball:/tftpboot/elite    /               nfs rw  1 1
none                    /proc proc          defaults   0 0
snoball:/usr           /usr                 nfs     ro  1 1
snoball:/home          /home                nfs     rw  1 1


#tftpboot/elite/etc/sysconfig/network
NETWORKING=yes
FORWARD_IPV4=nomore
HOSTNAME=elite
GATEWAYDEV=
GATEWAY="192.168.53.1"       <-----------


#/tftpboot/elite/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
USERCTL=yes
ONBOOT=yes
BOOTPROTO=none
BROADCAST=192.168.53.255
NETWORK=192.168.53.0
NETMASK=255.255.255.0
IPADDR=192.168.53.23         <-----------

#odd fiddles #itemize> #item>fast... #item>cp /usr/bin/xargs /tftpboot/client/bin/xargs #/itemize>

6. X-terminal

With no further changes your client should boot on the CLIENT pc, it just happens to be sharing it's files via NFS

At this point you have a console terminal. you need to make just a few more changes to run X

7. Acknowledgments & further exercises

Markus Gutschke and Ken Yap the authors of the Etherboot program.

Extend your system with the following programs

stephen7 at bigfoot.com