Advertisment

Terminal Services on Linux

author-image
PCQ Bureau
New Update

We run a network of 10 machines–a mix of 486, Pentium I and II machines–in our office. They run Netware and DOS and we use WordStar/WordPerfect for word processing and QuattroPro for spreadsheet applications. This used to be enough till we started working with MS Office documents and browsing the Internet frequently. I set up a P-III machine for the same with Windows 98. But everyone wanted time on this machine. The obvious solution was to move my entire work to Windows and use terminal services. But the steep licensing fees of Microsoft products held me back. Then I found a solution–LTSP (Linux Terminal Server Project). 

Advertisment

LTSP allows computers running on the network (workstations) to connect to a Linux machine (server) and run applications installed on the latter. The workstations can work on the applications simultaneously (application sharing). While the application runs on the server, the inputs are accepted from a workstation’s keyboard or mouse, and the output is displayed on the workstation’s screen. Since the processing takes place on the server, the workstations can use slower processors like 486 or Pentium I. What’s more, the workstations don’t even need a hard disk and can boot off a floppy, since the applications are installed on the server and the files are saved on the server itself. This suggests that the server should be a powerful machine with ample amount of memory. We used a P 4 with 1 GB RAM and 40GB RAM. We installed PCQLinux 8.0 (given out with PCQuest in March 2003) on the server since it comes with powerful office applications like OpenOffice (which can edit MS Office files) and feature-rich Web browsers like Mozilla and Konqueror. You don’t need to be a Linux guru nor a networking expert to set up LTSP and it is as simple as following the steps given below. 

Prepare Boot Floppy 

The workstations can boot off a floppy to connect to the server. To prepare this boot floppy, browse to
www.rom-o-matic.net. Click on the latest production release of Etherboot (version 5.0.10 as of this
writing). 

For NIC/ROM type, select the kernel driver for your one of your workstation’s Ethernet card. It was "eb-5.0.4-rtl8139.lzdsk" in my case. For ROM output format, select “Floppy Bootable ROM Image”. Click on “Get ROM” button. Write the downloaded image to the floppy with the following command:

Advertisment

dd if=eb-5.0.4-rtl8139.lzdsk of=/dev/fd0

Substitute "eb-5.0.4-rtl8139.lzdsk" with the name of the image you downloaded. Unplug the workstation Boot the workstations off the floppy. Once booted, the workstation will show something as follows:

"Ethernet Address 00:05:1C:16:43:C2"

Advertisment

Here “00:05:1C:16:43:C2” is the MAC address of the workstation’s Ethernet card in my case. Note down the address in your case for later use. In case the other workstations have a different Ethernet card, prepare a separate boot floppy for them.

Note down their MAC addresses. 

Install LTSP 

Download the RPMs named ltsp_core, ltsp_kernel, ltsp_x_core and ltsp_x_fonts from www.ltsp.org/"LTSP website. Log in as root and install the RPMs as:

Advertisment

rpm -ivh ltsp*rpm

Change to directory /opt/ltsp/templates and issue the following:

./ltsp_initialize

Advertisment

Edit Configuration Files 

We'll start with /etc/dhcpd.conf. The network in our office is on the private IP address range of 192.168.1.1 to 192.168.1.254. Depending on the IP addresses that you use for your network, substitute it wherever appropriate in the following configuration. We have a setup where dhcpd allocates dynamic address in the range of 192.168.1.151 to 192.168.1.200. This can be varied for your setup as desired. My /etc/dhcpd looks like:

server-identifier yourdomain;

subnet 192.168.1.0 netmask 255.255.255.0 {

range 192.168.1.151 192.168.1.200; # dynamic allocation

36000; # 10 hours

max-lease-time 54000; # 15 hours

option subnet-mask 255.255.255.0;

option broadcast-address 192.168.1.255;

option routers 192.168.1.1;

option domain-name-servers 192.168.1.1;

option domain-name "yourdomain";

option time-offset 19800; # IST offset from GMT

option ip-forwarding off;

option netbios-name-servers 192.168.1.1;

option netbios-dd-server 192.168.1.1;

option netbios-node-type 8;

option netbios-scope "";

}

Scroll down and add following for each workstation:

Advertisment

# WS1

host ws1 {

option root-path "192.168.1.1:/opt/ltsp/i386";

hardware ethernet 00:05:1C:16:43:C2;

option host-name "ws1";

fixed-address ws1.yourdomain;

filename "/lts/vmlinuz-2.4.19-ltsp-1";

}

This is the part that describes the first workstation. Replace the hardware Ethernet address with the one you noted down for the workstation. Replace yourdomain with your network domain name. Finally, make sure that the filename of the kernel (eg. /lts/vmlinuz-2.4.19-ltsp-1) matches the kernel installed in /tftboot/lts. Repeat for all workstations. Note that the /tftboot prefix to the path is not required. If you have a ISA card there are two more steps to be done which is explained in the LTSP documentation. Edit your /etc/hosts file to add the IP address of the workstations as following. Repeat for all the
workstations.

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost.localdomain localhost

192.168.1.1 yourserver.yourdomain yourserver

192.168.0.1 gateway.yourdomain gateway

192.168.1.20 ws1.yourdomain ws1

192.168.1.21 ws2.yourdomain ws2

Advertisment

The last file we'll edit is /opt/ltsp/i386/etc/lts.conf. This file has a "default" section and "ws1", "ws2" sections for each workstation. Probably all you'll need to do here is make sure you have the right IP address for the server. My file looked as follows:

# Config file for the Linux Terminal Server Project (www.ltsp.org)



SERVER = 192.168.1.1

XSERVER = auto

X_MOUSE_PROTOCOL = "IMPS/2"

X_MOUSE_DEVICE = "/dev/psaux"

X_MOUSE_RESOLUTION = 400

X_MOUSE_BUTTONS = 3

USE_XFS = N

LOCAL_APPS = N

SOUND = N

RUNLEVEL = 5

USE_NFS_SWAP = N

SWAPFILE_SIZE = 64m

# Example of specifying X settings for a workstation

#



XSERVER = auto

LOCAL_APPS = N

USE_NFS_SWAP = N

SWAPFILE_SIZE = 48m

RUNLEVEL = 5

SOUND = N

Start the Services

We need to have the following services running on the server: dhcpd, tftpd portmap and nfsd. These may already be installed. If not, you can also get them from your installation CDs or sites like www.rpmfind.net Restart the services at this time by issuing the following:

# /etc/rc.d/init.d/nfs restart

# /etc/rc.d/init.d/dhcpd restart

# /etc/rc.d/init.d/xinetd restart

tftpd is started through xinetd. To start these services at boot time issue the command:

ntsysv

and select these services from the list.

All Done

The setup is now done. Connect your network cable, and with the server running, boot the workstation from the floppy. You'll soon see your usual login screen on the workstation. Just remember to shut down the workstation by logging out and hitting the power button. Using the shutdown button login screen will shutdown the server as well. This is taken care of by some additional tweaking from the settings menu in KDE that restricts shutdown only when root password is supplied. For more on LTSP refer to the site
www.ltsp.org

Troubleshooting

Workstation doesn't boot: Check that all the required daemons are running on the server, also check the configuration files.

You might find some clues in your log files. 

No login screen: Check that your workstation is listed in /etc/hosts. Also refer to
www.ltsp.org/contrib/gray_screen.html
Distorted display: I had this problem with a Jurassic-era 14" monitor. Getting modelines from
www.ltsp.org/modelines.html here and putting them in the workstation section of ltsp.conf solved it. 

Ugly fonts: Copy your existing 100 dpi fonts from /usr/X11R6/lib/X11/fonts/100dpi to /opt/ltsp/i386/usr/X11R6/lib/ X11/fonts/100dpi. 

No sound: The standard LTSP installation doesn't include sound support for the workstation. Download the ltsp_sound package from http://heanet.dl.sourceforge.net/sourceforge/ltsp/ltsp_sound-3.0.1-i386.tgz. Unpack the archive and refer to Readme file for setup instructions.

Slow Internet connection: After setting up LTSP, I found that there was a significant delay when trying to connect to websites.

This turned out to be a DNS lookup issue, and was easily fixed by entering the addresses of my ISPs' DNS servers into /etc/resolv.conf. Specifying DNS servers with dialers like kppp should also work. 

Workstations' monitor smaller than server’s: Configure workstation section in the lts.conf to give different resolutions using X_MODE_0 or X_MODE_1 lines as detailed in the LTSP
documentation.

Other problems: Read the official LTSP documentation. Also check out www.ltsp.org/contrib/index.php contribs section at the LTSP site for additional info and packages. 

Sudev Barar

Advertisment

Stay connected with us through our social media channels for the latest updates and news!

Follow us: