LTSP — Linux Terminal Server Project

1. Introducció

LTSP (Linux Terminal Server Project) és una solució de codi obert que permet que ordinadors antics, o sense disc dur, arrenquin a través de la xarxa i s’executen íntegrament des d’un servidor central. El client no necessita sistema operatiu propi: carrega un entorn Linux complet des del servidor.

LTSP logo

1.1. Casos d’ús típics

1.2. LTSP clàssic vs. LTSP modern (≥ v5.x / LTSP 2019+)

Característica LTSP clàssic (< 2019) LTSP modern (≥ 2019)
Execució de les aplicacions Al servidor (X11 forwarding) Al client (imatge squashfs)
Requisits de CPU del servidor Molt alts Moderats
Requisits del client Mínims Alts (executa el sistema)
Complexitat Alta Moderada
Distribucions suportades Debian, Ubuntu Debian, Ubuntu, Fedora…

Aquesta guia cobreix LTSP modern (versió ≥ 23.x), basat en imatges squashfs i arrencada iPXE/PXE.

2. Arquitectura general

Arquitectura general

Flux d’arrencada:

  1. El client engega i el seu firmware (BIOS/UEFI) fa una petició DHCP.
  2. El servidor DHCP respon amb una IP i l’adreça del servidor TFTP.
  3. El client descarrega el fitxer d’arrencada iPXE via TFTP.
  4. iPXE descarrega el kernel Linux i un initrd mínim via HTTP/TFTP.
  5. L’initrd munta la imatge squashfs del sistema via NFS o NBD.
  6. El client inicia una sessió gràfica (SDDM, LightDM…) localment.
  7. L’autenticació es fa contra el servidor (LDAP, NIS, fitxers locals sincronitzats…).

3. Requisits del sistema

3.1. Servidor

Component Mínim recomanat
CPU 4 nuclis
RAM 4 GB + ~200 MB per client concurrent
Disc 20 GB (SO) + espai per a la imatge (~5–10 GB)
Xarxa 1 Gbps (Gigabit Ethernet obligatori)
SO Debian 12 o Ubuntu 22.04/24.04 LTS
💡
Nota

Amb 30 clients simultanis calen ~10 GB de RAM addicionals al servidor si la imatge es munta per NBD en RAM; amb NFS el consum és menor.

3.2. Client

Component Mínim
CPU x86_64, qualsevol
RAM 512 MB (1 GB recomanat per a entorn gràfic)
Xarxa Targeta amb suport PXE (pràcticament universal des de 2005)
Disc No necessari

4. Instal·lació del servidor LTSP

4.1. Prerequisits

sudo apt update && sudo apt upgrade -y
sudo apt install --no-install-recommends \
    dnsmasq \
    nfs-kernel-server \
    openssh-server \
    curl \
    squashfs-tools

En entorns de producció es pot usar un servidor DHCP extern (router, pfSense…). En aquest cas, dnsmasq s’usa únicament com a proxy PXE.

4.2. Instal·lació de LTSP

sudo apt install ltsp

A Debian/Ubuntu el paquet ltsp ja inclou:

Comprova la versió instal·lada:

ltsp --version

4.3. Inicialització del servidor

# Genera la configuració bàsica del servidor
sudo ltsp init

Això crea /etc/ltsp/ltsp.conf amb valors per defecte.

5. Creació de la imatge del client

LTSP genera una imatge comprimida (squashfs) que els clients carreguen a la RAM o munten per xarxa.

Opció A: imatge basada en el mateix servidor (recomanada)

sudo ltsp image /

Crea /srv/ltsp/images/amd64.img a partir del sistema de fitxers del servidor. Qualsevol programari instal·lat al servidor estarà disponible als clients.

Opció B: imatge en un chroot separat

# Crea un chroot de Debian minimal
sudo debootstrap --arch=amd64 bookworm /srv/ltsp/bookworm

# Instal·la paquets dins el chroot
sudo chroot /srv/ltsp/bookworm apt install \
    task-xfce-desktop \
    ltsp-client \
    firefox-esr

# Genera la imatge a partir del chroot
sudo ltsp image /srv/ltsp/bookworm

Útil si vols que els clients tinguin un entorn diferent del servidor.

5.1 Actualització de la imatge

Cada cop que instal·les programari nou o fas canvis al sistema, has de regenerar la imatge:

sudo ltsp image /

I actualitzar el fitxer d’arrencada iPXE:

sudo ltsp ipxe

6. Configuració de xarxa: DHCP i TFTP

Escenari 1: dnsmasq com a servidor DHCP complet

Edita /etc/dnsmasq.d/ltsp.conf:

sudo nano /etc/dnsmasq.d/ltsp.conf
# Interfície on escolta (canvia-la pel nom correcte)
interface=enp3s0
bind-interfaces

# Rang DHCP per als clients
dhcp-range=192.168.1.100,192.168.1.200,12h

# Servidor TFTP integrat
enable-tftp
tftp-root=/srv/tftp

# Fitxer d'arrencada per a clients BIOS (PXE legacy)
dhcp-boot=ltsp/ipxe.efi,ltsp-server,192.168.1.1

# Fitxer d'arrencada per a clients UEFI
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-boot=tag:efi-x86_64,ltsp/ipxe.efi
sudo systemctl restart dnsmasq

Escenari 2: DHCP extern (router) + dnsmasq com a proxy PXE

Si ja tens un servidor DHCP a la xarxa (molt habitual a les aules), configura dnsmasq en mode proxy PXE:

# Proxy PXE — no assigna IPs, només respon les peticions PXE
dhcp-range=192.168.1.0,proxy

enable-tftp
tftp-root=/srv/tftp
dhcp-boot=ltsp/ipxe.efi

6.1 Generació dels fitxers TFTP i iPXE

sudo ltsp ipxe
sudo ltsp tftp

Això copia el kernel, l’initrd i els fitxers iPXE a /srv/tftp/ltsp/.

7. Configuració d’NFS

Els clients necessiten accedir a la imatge squashfs. La manera més habitual és exportar-la via NFS.

7.1. Exportació automàtica (recomanada)

sudo ltsp nfs

Afegeix automàticament a /etc/exports:

sudo nano /etc/exports
/srv/ltsp  *(ro,async,no_subtree_check,no_root_squash)

I reinicia el servei:

sudo exportfs -arv
sudo systemctl restart nfs-kernel-server

7.2. Verificació

showmount -e localhost

Hauries de veure /srv/ltsp a la llista.

8. Arrencada dels clients per xarxa

8.1. Configuració del client (BIOS/UEFI)

  1. Accedeix al BIOS/UEFI del client (normalment F2, Del, F12…).
  2. Activa Network Boot o PXE Boot.
  3. Posa el Boot from Network com a primera opció d’arrencada.
  4. Desa i reinicia.

8.2. Seqüència esperada

Initializing Intel® Boot Agent...
CLIENT MAC ADDR: 00:1A:2B:3C:4D:5E
DHCP.......  OK (192.168.1.105)
TFTP...........
iPXE 1.x.x ...
Loading ltsp/vmlinuz... OK
Loading ltsp/initrd.img... OK
Booting kernel...
[LTSP] Mounting image via NFS...
[OK] Started Session Manager.

Si tot va bé, el client presentarà la pantalla d’inici de sessió gràfica.

9. Gestió d’usuaris

9.1. Usuaris locals (entorn senzill)

En LTSP modern, els usuaris creats al servidor estan disponibles als clients sempre que la imatge s’hagi generat amb ltsp image /:

sudo adduser alumne01
sudo passwd alumne01

9.2. Sincronització de comptes sense LDAP

LTSP pot sincronitzar /etc/passwd i /etc/shadow a la imatge:

# A /etc/ltsp/ltsp.conf
[common]
PWMERGE_SUR="^(?!ltsp|nobody|root)"

Regenera la imatge per aplicar els canvis:

sudo ltsp image /

9.3. Integració amb LDAP / Active Directory

Per a entorns amb molts usuaris, el recomanable és autenticació centralitzada:

sudo apt install sssd sssd-ldap

Configura /etc/sssd/sssd.conf:

sudo nano /etc/sssd/sssd.conf
[sssd]
services = nss, pam
domains = ldap

[domain/ldap]
id_provider = ldap
auth_provider = ldap
ldap_uri = ldap://192.168.1.10
ldap_search_base = dc=institut,dc=cat
ldap_default_bind_dn = cn=admin,dc=institut,dc=cat
ldap_default_authtok = contrasenya_admin
cache_credentials = True
sudo chmod 600 /etc/sssd/sssd.conf
sudo systemctl enable --now sssd

10. Personalització de la imatge

10.1. Instal·lació de programari addicional

Tot el que instal·les al servidor (si uses ltsp image /) estarà als clients:

sudo apt install libreoffice gimp inkscape vlc
sudo ltsp image /

10.2. Scripts d’inici de sessió

Pots executar scripts personalitzats quan un usuari inicia sessió. Crea fitxers a /etc/ltsp/xsessionrc.d/:

# /etc/ltsp/xsessionrc.d/10-munta-xarxa.sh
#!/bin/bash
# Munta una carpeta de xarxa en iniciar sessió
mount -t cifs //servidor/compartit /home/$USER/Compartit \
    -o username=$USER,password=$PASSWORD,uid=$UID
sudo chmod +x /etc/ltsp/xsessionrc.d/10-munta-xarxa.sh
sudo ltsp image /

10.3. Fons de pantalla i configuració gràfica

# Copia el fons corporatiu
sudo cp fons_institut.png /usr/share/backgrounds/

# Edita la configuració per defecte del gestor de pantalla
# Per a XFCE:
sudo mkdir -p /etc/skel/.config/xfce4/xfconf/xfce-perchannel-xml/

11. Opcions avançades d’ltsp.conf

El fitxer /etc/ltsp/ltsp.conf permet una personalització detallada. Admet seccions globals i per MAC/IP.

sudo nano /etc/ltsp/ltsp.conf
[common]
# Servidor SSH per al túnel de sessió
SERVER=192.168.1.1

# Resolució de pantalla per defecte
XRANDR_SIZE=1920x1080

# Gestor de pantalla
DISPLAY_MANAGER=lightdm

# Desactiva l'apagada del client des del menú
AUTOLOGIN=alumne_demo

[mac:00:1A:2B:3C:4D:5E]
# Configuració específica per a una màquina
XRANDR_SIZE=1280x1024
KEEP_SYSTEM_SERVICES=bluetooth

[ip:192.168.1.110]
# Configuració per IP
AUTOLOGIN=professor

11.1. Paràmetres habituals

Paràmetre Descripció Exemple
SERVER IP del servidor LTSP 192.168.1.1
DISPLAY_MANAGER Gestor de sessió gràfica lightdm, sddm
AUTOLOGIN Usuari per a inici automàtic alumne
XRANDR_SIZE Resolució de pantalla 1920x1080
SOUND Activa el so al client true
CRONTAB_x Tasques cron al client CRONTAB_01="@reboot ntpdate …"
KEEP_SYSTEM_SERVICES Serveis systemd que s’han de mantenir bluetooth cups

12. Resolució de problemes habituals

12.1. El client no rep IP

# Comprova que dnsmasq està en marxa
sudo systemctl status dnsmasq

# Revisa els logs de DHCP
sudo journalctl -u dnsmasq -f

# Verifica que no hi ha conflicte amb un altre DHCP a la xarxa
sudo nmap -sU -p 67 192.168.1.0/24

12.2. El client rep IP, però no carrega el kernel

# Comprova que TFTP funciona des d'un altre equip
sudo apt install tftp-hpa
tftp 192.168.1.1 -c get ltsp/ipxe.efi

# Regenera els fitxers TFTP
sudo ltsp tftp
sudo ltsp ipxe

12.3. Error “Cannot mount NFS”

# Verifica l'exportació NFS
showmount -e 192.168.1.1

# Comprova el tallafoc
sudo ufw allow from 192.168.1.0/24 to any port 2049
sudo ufw allow from 192.168.1.0/24 to any port 111

# Torna a exportar
sudo exportfs -arv

12.4. El client arrenca, però no mostra pantalla de login

# Comprova la imatge squashfs
sudo ltsp image --verify /

# Mira els logs del client (si tens accés a la consola)
# A la consola del client, prem Ctrl+Alt+F2 per accedir a un TTY
journalctl -b -u display-manager

12.5. Usuaris no poden autenticar-se

# Prova l'autenticació SSH directament
ssh alumne01@192.168.1.1

# Comprova PAM
sudo cat /var/log/auth.log | grep -i pam

# Si uses SSSD
sudo sss_cache -G -U
sudo systemctl restart sssd

13. Resum d’ordres

Ordre Descripció
sudo ltsp init Inicialitza la configuració del servidor
sudo ltsp image / Genera la imatge squashfs del sistema
sudo ltsp image /chroot Genera la imatge d’un chroot
sudo ltsp image --verify / Verifica la integritat de la imatge
sudo ltsp ipxe Genera/actualitza els fitxers iPXE
sudo ltsp tftp Copia els fitxers d’arrencada a TFTP
sudo ltsp nfs Configura i exporta via NFS
sudo ltsp info Mostra informació de la configuració actual
sudo ltsp dnsmasq Genera la configuració de dnsmasq
sudo exportfs -arv Actualitza les exportacions NFS
showmount -e localhost Llista les exportacions NFS actives

14. Recursos addicionals

Versions d’aquest document

Domini Públic (CC0)