LTSP – Concept and Implementation

LTSP is used to setup Linux Thin Clients aka Diskless Clients. It also can be used for Maintenance server or Installation Server in infrastructure. It is very cost effective & highly customizable solution.

This article will explain the concepts and implementaion of LTSP.

What is Thin Client?

There are many definitions for Thin Client. However as per our documents, Thin Clients are the machines without Hard-disk. So there will not be any Operating System on the Client side. Client will boot up using PXE boot over the network and will load the GUI of Server or local machine.

What is LTSP?
LTSP is Linux Terminal Server Project. See ltsp.org for more information.

How LTSP works?

Major Components of LTSP:

  1. DHCP
  2. TFTP
  3. Network Block Device (NBD) / Network File Sharing (NFS) Server
  4. X – GUI
    – Display Manager (LDM, GDM, etc.)
    – Window Manager (icewm, Gnome, etc.)

Architecture and Process: 

 

LTSP server will be setup on one Linux Server.
– Client machine boots up with PXE and search for DHCP server over Network
– DHCP server will provide IP address to Client and guide TFTP server to transfer Linux Kernel (pxelinux.0) Client and Client initialize with Linux kernel
– Same time Client NBD server loads filesystem image on Client side so Client gets all required libraries and binaries to load whole Operating System.
– Client sends LDM request over SSH and server loads Login Screen provided by LDM on Client.

Implementing Thin Client Solution with LTSP:

We have Ubuntu 10.04 Desktop edition installed on LTSP server.
We are going to implement LTSP 5.x on it.
Login with root or use “sudo” before every command mentioned below

   Install following components:
Ltsp-server
Dhcp3-server
tftpd-hpa
Openssh-server
dnsmasq
nfs-kernel-server & nfs-common
portmap

Command:
     apt-get install ltsp-server dhcp3-server tftpd-hpa dnsmasq nfs-kernel-server nfs-common portmap openssh-server

   Setup LTSP client environment

Command:
    ltsp-build client

It will create Client environment under /opt/ltsp/i386

It will also do the necessary changes.

Configure DHCP server

Include below line in /etc/dhcp3/dhcpd.conf

     include "/etc/ltsp/dhcpd.conf";

Do changes in /etc/ltsp/dhcpd.conf as per your requirement.
Sample Configuration below:

authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
   range 192.168.0.20 192.168.0.250;
   option domain-name "example.com";
   option domain-name-servers 192.168.0.1;
   option broadcast-address 192.168.0.255;
   option routers 192.168.0.1;
   allow booting;
   allow bootp;
   next-server 192.168.0.1;
   option subnet-mask 255.255.255.0;
   option root-path "/opt/ltsp/i386";
group {
   use-host-decl-names       on;
   option log-servers        192.168.0.1;

host ws001 {                                               <-- Hostname of Client
        hardware ethernet     00:21:85:6E:88:42;               à Client Mac Address
        fixed-address         192.168.0.20;                    à Client IP address
        filename              "/var/lib/tftpboot/ltsp/i386/pxelinux.0";  à Kernel path for
TFTP Server
    }
}

You can multiple host entries as per your Thinclients. Please copy from host ws001 { to } Which is colored RED.
And paste before Last Curly bracket at the end. And do the changes accordingly. Also change the IPs accordingly.

And restart dhcp3-server.

/etc/init.d/dhcp3-server restart

TFTP server Configuration:
Configuration file for TFTP server is “/etc/default/tftpd-hpa”.
Please comment TFTP_OPTIONS line. And append RUN_DAEMON=”yes”. So the file will look like:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
#TFTP_OPTIONS="--secure"
RUN_DAEMON="yes"

 

Restart TFTP server

/etc/init.d/tftpd-hpa restart

NBD server Configuration

   NBD stands for “Network Block Device”. It shares image of linux Filesystem hierarchy.
In older LTSP version it was done by NFS. However NBD is much faster and beneficial than NFS.
Linux Image resides under “/opt/ltsp/images/” and named as i386.img.

Command “linux-update-image” creates or updates image from /opt/ltsp/i386 folder.

Append below two lines inside /etc/inetd.conf

9572   stream  tcp     nowait  nobody /usr/sbin/tcpd /usr/sbin/nbdswapd
2000   stream  tcp nowait  nobody /usr/sbin/tcpd /usr/sbin/nbdrootd /opt/ltsp/images/i386.img

Restart openbsd-inetd server using

/etc/init.d/openbsd-inetd restart

Now Start the Thin Client. Configure BIOS to boot first from Network/PXE. You will get Server Login Screen on Client

Important Configuration files & tips for Customization

   –  LTS.conf:

This Configuration file is very important in case of customization.
If you are using NBD server then please save this file under /var/lib/tftpboot/ltsp/i386/
If you are using NFS server then please save this file under /opt/ltsp/i386

Sample customization with lts.conf:
If you do not want LDM to execute and if you just want a command line Console on client and not on the server then Enter below settings in lts.conf

[default]
SCREEN_01=shell
SCREEN_02=shell

It will start only Shell prompt and not LDM/GUI.

    – /opt/ltsp/i386/:

If you want any packages on client side to run or execute, you need to add those packages or do those modifications under /opt/ltsp/i386. For that follow below steps

Commands:
mount –t proc proc /opt/ltsp/i386/proc
chroot /opt/ltsp/i386

And now you can install packages using apt-get. Please note that these packages will get installed inside /opt/ltsp/i386 folder.
Now you also can do any configuration changes such as network, Disk or anything.
After adding packages or doing modifications first come out of Chroot.
please run below commands:

Commands:
exit
ltsp-update-image

Now reboot Thin Client and observe the changes. 🙂

 

Neelesh Gurjar has written 122 articles

Leave a Reply