It’s been a long time since I wanted to move to a thin client infrastructure at home.
Up to now, kids are using some very old laptops, with a minimal Linux distribution. I setup a central Edubuntu server (on a Virtual Machine), with their accounts, and the kids laptops are using remote X (through NX/FreeNX for better reactivity).
Problem: I don’t want to maintain those minimal Linux OS, and I would like to replace those old laptops (broken keyboards, damaged screens,…) with simpler, cheap and low consuming hardware (Wyse,…).
So my first step was to setup the infrastructure to support those thin clients.
And this is what I did, taking advantage of Edubuntu distribution… and LTSP !
The main steps:
- install LTSP server
- construct thin client images
- setup DHCP server
- tune specific configuration for each thin client if needed
Install LTSP
LTSP : Linux Terminal Server Project is a simple solution to answer my need. Opensource, used in education, and available as packages in my Edubuntu distribution… Perfect !
So we need to install the LTSP server binaries, as well as an SSH server (thin client are using SSH to communicate with the server).
Note that installing LTSP will install a TFTP server and a DHCP server.
sudo apt-get install ltsp-server-standalone openssh-server
Construct thin clients boot images
You can have different hardware categories (i386,…), but in my case, I will continue running i386 🙂
So the default command is:
sudo ltsp-build-client
(if you need another architecture, just add it as a parameter : --arch i386
This command can last for quite a long time. Be patient…
Setup DHCP server
We need to update DHCP configuration
- edit file:
sudo vi /etc/ltsp/dhcpd.conf
- adjust network and server IP addresses, as well as the gateway IP and nameservers IP
- set any fix lease if necessary
Here is my configuration file:
# # Default LTSP dhcpd.conf config file. # authoritative; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.50 192.168.0.60; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option domain-name-servers 212.27.40.240, 212.27.40.241; option routers 192.168.0.250; option root-path "/opt/ltsp/i386"; if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" { filename "/ltsp/i386/pxelinux.0"; } else { filename "/ltsp/i386/nbi.img"; } host Raistlin4 { hardware ethernet 00:26:55:ce:1d:67; fixed-address 192.168.0.22; } host daisy { hardware ethernet 00:d0:b7:70:98:1d; fixed-address 192.168.0.21; } }
Some explanations:
authoritative
: this one is very important, as I have an Internet box which is also DHCP server, and I don’t want to remove this feature, in case my internal DHCP server is down….option domain-name-servers 212.27.40.240, 212.27.40.241;
: that’s my ISP DNS servers. I don’t have an internal DNS server, so I need to properly setup those ones for my Intranet computers to work properlyfixed-address...
: for DHCP pre-defined addresses, I had to setup those sections (using their MAC addresses)
Remember to activate the server:
sudo /etc/init.d/dhcp3-server start (or restart)
Activation and configuration tuning
Note that any change on the LTSP server IP, should be followed by:
sudo ltsp-update-sshkeys
update client packages
I just added “telnet” package which was missing, but the same commands are valid for any new software installation
sudo chroot /opt/ltsp/i386 mount -t proc proc /proc apt-get update 'apt-get upgrade' or 'apt-get install telnet' ... exit sudo ltsp-update-kernels sudo umount /opt/ltsp/i386/proc sudo ltsp-update-image -a i386
chroot
is needed, but you also need to mount /proc, asapt-get
commands need it.
How to debug thin clients
Create a root access on thin client consoles:
chroot /opt/ltsp/i386/ passwd
To debug, I wanted to install an openssh-server on the thin client (easier to connect from my laptop):
sudo mount --bind /dev /opt/ltsp/i386/dev sudo mount -t proc none /opt/ltsp/i386/proc export LTSP_HANDLE_DAEMONS=false sudo chroot /opt/ltsp/i386 apt-get install openssh-server sudo ltsp-update-image sudo umount /opt/ltsp/i386/dev sudo umount /opt/ltsp/i386/proc
Adjust LTSP configuration
The configuration file is located here: /var/lib/tftpboot/ltsp/i386/lts.conf
Here is my configuration file:
[Default] SCREEN_02 = shell SCREEN_03 = shell SCREEN_04 = telnet SCREEN_07 = ldm LOCALDEV = True LDM_DIRECTX = True SYSLOG_HOST = 192.168.0.11 [00:17:08:3d:0a:37] X_COLOR_DEPTH = 24 X_MODE_0 = 1400x1050 X_MODE_1 = 1280x1024 X_MODE_2 = 1024x768 XKBLAYOUT = fr
Some explanations:
SCREEN
: this configures the Ctrl-F1, Ctrl-F2,… actions on the thin clients. I setup shell access for F2 & F3. I also added “telnet” access to the ServerLOCALDEV
: authorize thin clients local USB accessLDM_DIRECTX
: no need to encrypt X11 connection between my thin clients and the server (all of them are on my Intranet)- Then I added a specific section for one thin client, in order to give specific X11 configuration.
Conclusion
Currently, my kids laptops are configured to boot PXE and they get serverd properly by the LTSP server.
Next step: I’m going to order the Wyse devices… 🙂
Additional documentation
Mostly in French, but equivalents should be available via Google…
- installer un client léger: http://doc.ubuntu-fr.org/clientleger_installer
- configurer le serveur de client léger: http://doc.ubuntu-fr.org/clientleger_configurer
- Configurer un réseau LTSP sur base Edubuntu 11.04: http://doc.ubuntu-fr.org/edubuntu_ltsp_configuration
- Config du fichier lts.conf: http://wiki.ubuntu-fr.org/clientleger_lts.conf