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.
| 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.
Flux d’arrencada:
| 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 |
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.
| 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 |
sudo apt update && sudo apt upgrade -y
sudo apt install --no-install-recommends \
dnsmasq \
nfs-kernel-server \
openssh-server \
curl \
squashfs-toolsEn entorns de producció es pot usar un servidor DHCP extern (router, pfSense…). En aquest cas,
dnsmasqs’usa únicament com a proxy PXE.
sudo apt install ltspA Debian/Ubuntu el paquet ltsp ja inclou:
ltsp-server — eines del servidorltsp-client — components que van a la imatgeComprova la versió instal·lada:
ltsp --version# Genera la configuració bàsica del servidor
sudo ltsp initAixò crea /etc/ltsp/ltsp.conf amb valors per
defecte.
LTSP genera una imatge comprimida (squashfs) que els clients carreguen a la RAM o munten per xarxa.
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.
# 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.
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 ipxeEdita /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 dnsmasqSi 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.efisudo ltsp ipxe
sudo ltsp tftpAixò copia el kernel, l’initrd i els fitxers iPXE a /srv/tftp/ltsp/.
Els clients necessiten accedir a la imatge squashfs. La manera més habitual és exportar-la via NFS.
sudo ltsp nfsAfegeix 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-servershowmount -e localhostHauries de veure /srv/ltsp a la llista.
F2, Del, F12…).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.
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 alumne01LTSP 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 /Per a entorns amb molts usuaris, el recomanable és autenticació centralitzada:
sudo apt install sssd sssd-ldapConfigura /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 sssdTot el que instal·les al servidor (si uses ltsp image /)
estarà als clients:
sudo apt install libreoffice gimp inkscape vlc
sudo ltsp image /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=$UIDsudo chmod +x /etc/ltsp/xsessionrc.d/10-munta-xarxa.sh
sudo ltsp image /# 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/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
| 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 |
# 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# 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# 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# 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# 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| 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 |