LTSP

Attenzione! Questa pagina contiene materiale obsoleto Attenzione!

In fase di sviluppo Leggere le avvertenze In fase di sviluppo

L'installazione del software sui PC scolastici è spesso impegnativa in termini di tempo ed errori; ancora più impegnativi sono la manutenzione e l'aggiornamento del software. Ovviamente esistono in commercio molte soluzioni, ma, a quanto mi risulta, nessuna è nel contempo semplice da usare e compatibile con le condizioni finanziarie scolastiche.

Questa pagina contiene qualche appunto sulla sperimentazione iniziata nel settembre 2015 presso un paio di laboratori dell'IISS Greppi di Monticello Brianza. I risultati attesi (e raggiunti...) sono un insieme di macchine moderne, uniformi tra loro, veloci, aggiornate e sicure. Soprattutto in circa 10 secondi è possibile aggiungere/sostituire un PC, pronto all'uso con preinstallato il software necessario e centinaia di utenze già configurate per l'uso didattico.

L'uso di un server LTSP è compatibile con qualunque sistema operativo precedentemente installato e quindi provare è a "rischio zero".

Quanto viene qui proposto non è a rigore una soluzione completamente libera, nel senso che non è free as freedom, ma solo free as a free beer. Ovviamente è sempre possibile "saltare" i passaggi (assolutamente opzionali) che sono esplicitamente marcati come proprietari, secondo la propria visione ideologica del software nelle scuole. Alcuni software (anche loro opzionali) richiedono inoltre il pagamento di una licenza; anche questo aspetto è evidenziato.

Nota: la libertà non ha prezzo.

Scenario

Il target scolastico descritto è quello di una scuola superiore ad indirizzo informatico, dove sono richieste macchine potenti per eseguire anche software relativamente pesante (virtualizzazione, uso di IDE avanzati) e con grande uso di banda verso la scheda video (visione di filmati) ed verso il disco USB personale degli studenti (ancora virtualizzazione).

Si tratta del tipico laboratorio scolastico (non obsoleto):

Ovviamente sono possibili alcuni compromessi, alcuni accettabili (ambiente interamente a 32 bit, 2 GB di RAM, processore dual core) e altri meno (rete da 100 Mbit/s, server realizzato con un PC "normale"), ma si tratta di scelte che rendono l'esperienza utente a volte frustrante.

Meglio evitare schede grafiche troppo moderne e/o particolari, a causa della varietà di driver da installare o addirittura della impossibilità di uso. Personalmente preferisco assolutamente quelle integrate Intel, ma alcune mie macchine hanno una scheda grafica ATI oppure sono basate su processori AMD. Il fatto di usare schede integrate, nel caso di acquisto dedicato, ha l'indubbio vantaggio di diminuire il costo dell'hardware ed il calore generato (e quindi, indirettamente, il rumore, sempre eccessivo nei laboratori informatici).

Le persone:

Mi è stato chiesto se il server può essere usato come workstation. Si, ma lo sconsiglio vivamente, perché, per esempio, il suo spegnimento pregiudica il funzionamento dell'intera rete. Anzi, per evitare tentazioni, meglio non dotarlo di monitor, tastiera, mouse... Se poi è in un'altra stanza: meglio ancora!

Installazione di base

Installare Debian 8 “Jessie” AMD64 sul server: procedura standard, senza ambiente grafico (procedura qui non descritta). Configurare un IP statico

Consigliato: installare il server SSH per evitare di dover lavorare sul server fisico. Tutto quanto descritto a partire da questo punto è effettuabile con accesso remoto al server che, quindi, potrebbe stare in una sala server dedicata.

[Consigliato] Server di posta configurato per permettere almeno all'utente "root" di inviare mail.

Opzionale: modifica delle sorgenti software e aggiunta delle relative firme. Esempio:

root@ltsp-EE:~# nano /etc/apt/sources.list
deb http://ftp.it.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.it.debian.org/debian/ jessie main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
deb http://ftp.it.debian.org/debian/ jessie-updates main contrib non-free
deb-src http://ftp.it.debian.org/debian/ jessie-updates main contrib non-free
deb http://ftp.it.debian.org/debian/ jessie-backports main contrib non-free
deb-src http://ftp.it.debian.org/debian/ jessie-backports main contrib non-free
deb http://labs.picotech.com/debian picoscope main
deb http://download.virtualbox.org/virtualbox/debian jessie contrib
deb http://mozilla.debian.net/ jessie-backports firefox-release

root@ltsp-EE:~# aptitude install pkg-mozilla-archive-keyring
root@ltsp-EE:~# wget -O - http://labs.picotech.com/debian/dists/picoscope/Release.gpg.key | apt-key add -
root@ltsp-EE:~# wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | apt-key add -
root@ltsp-EE:~# aptitude update
root@ltsp-EE:~# aptitude safe-upgrade

Installare uno o più ambienti grafici (operazione lunga, soprattutto se l'ADSL è lenta: anche un'ora). Esempio:

root@ltsp-EE:~# tasksel

Scelta dei task da installare

Opzionale: installare alcuni pacchetti non-free utili al server e/o ai futuri client. Esempi:

root@ltsp-EE:~# aptitude install firmware-iwlwifi firmware-realtek
root@ltsp-EE:~# aptitude install amd64-microcode intel-microcode

Verifica del funzionamento del sottosistema grafico, avviando in remoto un programma quale “gedit” (in alternativa: verifica sul server fisico):

vv@vv-15rse:~$ ssh -X 192.168.111.20 -l vv
vv@192.168.111.20's password:
vv@ltsp-EE:~$ gedit

Installazione del server LTSP

La scelta fatta è quella di creare un server LTSP-PNP, identico come architettura e software installato ai client; i file system sono condivisi attraverso NDB e Squashfs, per ragioni di semplicità e prestazioni.

root@ltsp-EE:~# aptitude install ltsp-server-standalone ltsp-client dnsmasq

Configurare il proxy-DHCP:

root@ltsp-EE:~# ltsp-config dnsmasq
Created /etc/dnsmasq.d/ltsp-server-dnsmasq.conf

root@ltsp-EE:~# nano /etc/dnsmasq.d/ltsp-server-dnsmasq.conf
# IP ranges to hand out.
# Comment this line dhcp-range=192.168.67.20,192.168.67.250,8h
# If another DHCP server is present on the network, you may use a proxy range
# instead. This makes dnsmasq provide boot information but not IP leases.
# (needs dnsmasq 2.48+)
dhcp-range=192.168.111.0,proxy

Configurare il kernel da fornire ai client (lo stesso del server):

root@ltsp-EE:~# nano /etc/ltsp/update-kernels.conf
# Comment this line BOOT_METHODS="NFS NBD AOE"
# Add this line
BOOT_METHODS="NBD"
# Un-comment this line
IPAPPEND=3

root@ltsp-EE:~# dpkg-reconfigure linux-image-3.16.0-4-amd64
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-3.16.0-4-amd64
/etc/kernel/postinst.d/zz-update-grub:
Generating grub configuration file …
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Trovata immagine linux: /boot/vmlinuz-3.16.0-4-amd64
Trovata immagine initrd: /boot/initrd.img-3.16.0-4-amd64
fatto

Creare il file system:

root@ltsp-EE:~# ltsp-update-image --cleanup /

Questa operazione è molto-molto lunga, soprattutto in funzione della CPU utilizzata: sa va dai 5 minuti usando uno XEON ad 8 core, ai 10 minuti con un portatile i7 con 8 core o un desktop i5 con 4 core, ai 30 e passa minuti con atom quad core e 2 GB di RAM (opzione sconsigliata, ovviamente, ma perfettamente funzionante).

E infine:

root@ltsp-EE:~# ltsp-config nbd-server
root@ltsp-EE:~# service nbd-server restart
root@ltsp-EE:~# ltsp-config lts.conf

Utile anche, al termine, il riavvio del server.

A questo punto possiamo avviare una macchina (anche virtuale) e scegliendo il boot da rete, dopo aver configurato il BIOS e/o utilizzato un tasto funzione (per esempio, sui portatili Dell: F12).

Configurazioni varie

Permette il boot dei client da disco locale

Questo passaggio (facoltativo) rende possibile all'accensione la possibilità di scegliere tra il boot locale ed il boot da rete.

La configurazione di seguito riportata permette anche di mostrare all'accensione una fotografia. Nel mio caso, la "villa" con cui la scuola è nota nella zona:

Villa Greppi

Riferimento: http://www.syslinux.org/wiki/index.php/Comboot/menu.c32

Questo file è sovrascritto ogni volta che si crea l'immagine Squashfs , quindi meglio farne una copia. Da sistemare

root@ltsp-EE:~# nano /var/lib/tftpboot/ltsp/amd64/pxelinux.cfg/default
default vesamenu
ontimeout ltsp-NBD
MENU TITLE PXE boot menu
MENU ROWS 2
MENU TABMSGROW 8
MENU TIMEOUTROW 10
MENU HELPMSGROW 12
MENU CLEAR
MENU RESOLUTION 1024 768
timeout 100
MENU BACKGROUND villa-greppi.png
label ltsp-NBD
menu label Debian GNU/Linux 8 "Jessie" - LTSP (sperimentale)
kernel vmlinuz-3.16.0-4-amd64
append ro initrd=initrd.img-3.16.0-4-amd64 init=/sbin/init-ltsp quiet root=/dev/nbd0
ipappend 3
label bootlocal
menu label Boot da disco fisso locale
LOCALBOOT 0

Occorre infine copiare alcuni file:

root@ltsp-EE:~# cp /usr/lib/syslinux/modules/bios/*.c32 /var/lib/tftpboot/ltsp/amd64

Queste ultime modifiche sono immediatamente operative

Logo

Permette di impostare l'immagine di login

File da modificare (da sistemare)

/etc/alternatives/ldm-theme

DNS

A volte (non sempre, da sistemare) i client ricevono dal DHCP un DNS errato: 8.8.8.8. Se questo è un problema:

root@ltsp-EE:~# nano /var/lib/tftpboot/ltsp/amd64/lts.conf

Nella sezione global:

DNS_SERVER="192.168.200.253"
SEARCH_DOMAIN="intranet"

Installazioni particolari

Tutti i normali programmi installati sul server saranno presenti anche sui client. Fanno eccezione alcuni servizi, che in genere, non hanno senso se installati sui client. L'elenco dei programmi da non installare può, volendo, essere modificato a mano.

Nota: per tutti i programmi presentati, la versione potrebbe essere diversa e quindi i comandi cambiare di conseguenza

Dopo l'installazione o l'aggiornamento di un programma, e gli eventuali test lato server, è necessario aggiornare l'immagine:

root@ltsp-EE:~# ltsp-update-image --cleanup /

Picoscope - proprietario

Questo programma permette di utilizzare gli omonimi oscilloscopi. Si tratta di software gratuito, ma non libero.

 Occorre aggiungere le sorgenti, operazione implicita nelle impostazioni iniziali ad inizio pagina):

deb http://labs.picotech.com/debian picoscope main

root@ltsp-EE:~# aptitude install picoscope libcanberra-gtk-module
root@ltsp-EE:~# nano /etc/udev/rules.d/95-pico.rules
ATTRS{idVendor}=="0ce9", MODE="666", GROUP="pico"
root@ltsp-EE:~# cd /opt/picoscope/
root@ltsp-EE:~# chown root:pico * -R

Nota: procedura da meglio verificare con sistemi con USB3, che sembrano avere a volte problemi

Nota: inserire gli utenti interessati nel gruppo pico

Wireshark

root@ltsp-EE:~# aptitude install wireshark

Attivare l'uso anche per gli utenti non-root

root@ltsp-EE:~# chmod +s /usr/bin/dumpcap

Nota: l'operazione precedente va fatta ad ogni aggiornamento di wireshark

Nota: inserire gli utenti nel gruppo wireshark

ping

root@ltsp-EE:~# chmod +s /bin/ping

Nota: l'operazione precedente va fatta ad ogni aggiornamento di ping

Cisco PacketTracer - proprietario

L'uso gratuito di questo software è consentito solo alle scuole che appartengono alla rete delle Accademy Cisco

root@ltsp-EE:~# dpkg --add-architecture i386
root@ltsp-EE:~# aptitude install sudo
root@ltsp-EE:~# aptitude update
root@ltsp-EE:~# tar xzf Cisco\ Packet\ Tracer\ 6.2\ for\ Linux\ -\ Ubuntu\ installation\ -\ Instructor\ version.tar.gz
root@ltsp-EE:~# cd PacketTracer62/
root@ltsp-EE:~# ./install

(Bug) Occorre infine modificare/creare la voce di menu:
root@ltsp-EE:~# nano /usr/share/applications/pt6.desktop
[Desktop Entry]
Encoding=UTF-8
Type=Application
Exec=/usr/local/bin/packettracer
Icon=/opt/pt/art/app.png
Name=Cisco Packet Tracer
Categories=Application;Network;
MimeType=application/x-pkt;application/x-pka;application/x-pkz;

VMware Workstation Player - proprietario

L'uso gratuito di questo software è possibile solo per uso personale

root@ltsp-EE:~# ./Vmware-Player-7.1.2-2780323.x86_64.bundle
root@ltsp-EE:~# aptitude install linux-headers-amd64 build-essential linux-headers-3.16.0-4-amd64

Avviare VMPlayer sul server come utente normale, anche in remoto, per configurarlo:

vv@ltsp-EE:~$ vmplayer

Inoltre (consigliato): File → Player_Preferences → Download_all_components_now. Verrà richiesta, più volte, la password di root

MPLABX - proprietario

Software per la programmazione dei processori Microchip PIC18 e PIC32

La procedura di installazione è descritta alla pagina: Post-installazione di Debian Stretch

Browser

Il browser internet è forse il programma con cui l'utente ha maggiore familiarità e che, spesso, è fonte di obsolescenza, vera o presunta che sia. Quindi potrebbe essere utile qualche integrazione all'installazione base di Debian.

I due migliori browser oggi disponibili:

root@ltsp-EE:~# aptitude install chromium chromium-l10n -t jessie-backports
root@ltsp-EE:~# aptitude install -t jessie-backports firefox

[Sconsigliato] Se proprio non potete fare a meno dei "servizi" Google Inc, potete installare anche google-chrome, figlio di chromium infarcito di codice proprietario, Occorre scaricare il pacchetto di installazione, direttamente dal sito di Google. Quindi:

root@ltsp-EE:~# aptitude install libcurl3 libappindicator1
root@ltsp-EE:~# dpkg -i google-chrome-stable_current_amd64.deb

Questo programma esiste solo in versione a 64 bit. Se avete installato anche l'architetture i386 occorre commentare una riga nel file google-chrome.list e aggiungerne una simile in sources.list

root@vv-15rse:~# nano /etc/apt/sources.list.d/google-chrome.list
#deb http://dl.google.com/linux/chrome/deb/ stable main

root@vv-15rse:~# nano /etc/apt/sources.list
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

[Sconsigliato] Infine, se proprio non potete fare a meno del software proprietario Flash Player, prodotto ormai abbandonato da Adobe e fonte del 90% dei problemi di sicurezza dei browser, potete usare il già citato google-chrome oppure installare in chromium pepperflashplugin:

root@vv-15rse:~# aptitude install pepperflashplugin-nonfree

Software aggiuntivo

In genere il software presente nell'enorne repository Debian si installa al solito modo. Qualche esempio

root@ltsp-EE:~# aptitude install codeblocks codeblocks-contrib

Creazione degli utenti

Un server LTSP senza utenti è inutile... Ovviamente è possibile crearli a mano uno per uno sul server, ma certamente uno script che permette di creare centinaia di utenti in pochi istanti è cosa quanto mai opportuna.

LTSP: pagina di login

Ecco un esempio, da personalizzare e suddiviso in due script, uno per creare le classi ed uno per creare gli utenti. Si parte da un file contenente la mail reale dell'utente e il gruppo a cui appartiene, separati da virgola:

vincenzo@da_qualche_parte.it, admin
un.altro@da_qualche_parte.it, prima
ancora.1@da_qualche_parte.it, prima
...

Un primo file crea il gruppo-classe

#!/bin/bash
# Nome del file: mkclass.sh
# Crea una o più classi, a partire da un un file CSV con il seguente formato:
# mail@xxx.yyy, classe1
# mail2@xxx.yyy , classe2
# ...
if [ $# != 1 ]; then
 echo "Sintassi: mkclass.sh elenco.csv"
 exit
fi
for i in `cat $1`
 do
 id=${i%,*}
 cl=${i#*,}
 echo -e "Utente: $id - Classe: $cl"
 getent group $cl > /dev/null
 if [ $? -ne 0 ]; then
  echo Il gruppo $cl non esiste: lo creo
  addgroup $cl
 fi
 ./mkuser.sh $id $cl
done

Il nome deve essere unico: un modo per ottenerlo "by design" è usare esclusivamente la mail di un solo dominio, per esempio quello della scuola. Lo script seguente eliminerà i caratteri non graditi, tipicamente i "." e creerà un utente con lo stesso nome, inviano direttamente la password alla mail dell'interessato (se, come dovrebbe essere, il server di posta è già correttamente configurato).

Lo script che crea un utente potrebbe essere il seguente:

#!/bin/bash
# Nome del file: mkuser.sh
# crea un utente, con password casuale e gruppo (non primario) passato come parametro
# Il primo parametro DEVE essere una mail valida @da_qualche_parte.it
if [ $# != 2 ]; then
 echo "Sintassi: mkuser <utente@xxx.yyy> <gruppo_classe>"
 exit
fi
mail=$1
nome=${mail%@*}
id=`echo $nome | tr -d .`
getent group $2 > /dev/null
if [ $? -eq 0 ]; then
 echo "Il gruppo $2 esiste..."
 else
 echo "Il gruppo $2 NON esiste - Script terminato"
 exit
fi
getent passwd $id > /dev/null
if [ $? -ne 0 ]; then
 adduser $id --gecos "$id" --disabled-login
 echo $id: $1 >> /etc/aliases
 quotatool -u $id -b -l 500000 -q 600000 /
fi
lp=`apg -c cl_seed -n 1 -m 8 -x 8 -t -E 0O1Il`
p=${lp%\ *}
echo -e $id:$p | chpasswd
message="Di seguito le credenziali per l'accesso ai Terminal Server disponibile come opzione su alcune macchine nei laboratori \n\n"
message="$message Nome Utente: $id\n Password: $p\n\n"
message="$message Nota: la password sembra difficile da ricordare, ma ha un bel suono: $lp"
message="$message Nota2: al momento non esiste una procedura semplice e sicura di cambio password... Sorry"
echo -e $message | mail $1 -s "Password per l'accesso al server LTSP"

Di seguito un esempio della mail ricevuta:

LTSP: la mail con la password

Da sistemare

Di seguito alcuni problemi ancora da sistemare in modo elegante. La soluzione proposta per ora la considero comunque adeguata...

Windows

Alcuni applicativi esistono solo in ambiente Windows (ma... sicuri che è un problema e non un'opportunità?). Possibili alternative:

  1. Un Terminal Server Windows a cui accedere in RDP è un'alternativa accettabile (anche se le prestazioni sono piuttosto scarse ed il costo delle licenze elevato). Forse esiste qualcosa del genere via ssh anche per MAC
  2. Un'altra alternativa è una macchina virtuale sul disco USB personale di ciascun utente. Anche in questo caso vi è il problema delle licenza, ma nella mia scuola si usa in modo esteso, grazie alle licenze quasi gratuite del programma msdn
  3. [Non una soluzione] Wine lo sconsiglio.
  4. [Non una soluzione] Al momento non ho sperimentato WTSP (e non penso lo farò, anche perché non ne conosco l'esistenza: ignoranza mia!).

Password

Il cambio password non funziona, nel senso che al reboot torna la vecchia. Come workaround è possibile accedere al server via ssh con le credenziali dell'utente e usare passwd.

Oppure, sempre da terminale e con qualche messaggio non di immediata comprensione, avviare l'applicazione in remoto:

vv@ltsp:~$ ltsp-remoteapps gnome-control-center user-accounts

Per l'uso delle applicazioni remore è necessario inserire nella sezione [Default] di /var/lib/tftpboot/ltsp/amd64/lts.conf l'opzione REMOTE_APPS=True

Stampa

A volte è utile condividere la stampante, anche se ciò potrebbe creare qualche problema di produzione impropria di rifiuti...

Per le stampanti di rete, la configurazione fatta sul server non sembra essere esportata ai client. Una soluzione temporanea potrebbe essere quella di stampare sempre attraverso la stampante condivisa dal server:

root@ltsp-EE:~# cupsctl --remote-any

L'unico problema potrebbe essere il traffico generato verso il server ad ogni stampa, soprattutto nel caso di immagini ad alta risoluzione.

Parole chiave: Debian Jessie – LTSP server - Laboratorio scolastico

Ultima modifica di questa pagina: 12 marzo 2016


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima