Questa pagina contiene materiale obsoleto
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.
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!
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
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
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).
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:
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
Permette di impostare l'immagine di login
File da modificare (da sistemare)
/etc/alternatives/ldm-theme
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"
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 /
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
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
root@ltsp-EE:~# chmod +s /bin/ping
Nota: l'operazione precedente va fatta ad ogni aggiornamento di ping
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;
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
Software per la programmazione dei processori Microchip PIC18 e PIC32
La procedura di installazione è descritta alla pagina: Post-installazione di Debian Stretch
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
In genere il software presente nell'enorne repository Debian si installa al solito modo. Qualche esempio
root@ltsp-EE:~# aptitude install codeblocks codeblocks-contrib
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.
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:
Di seguito alcuni problemi ancora da sistemare in modo elegante. La soluzione proposta per ora la considero comunque adeguata...
Alcuni applicativi esistono solo in ambiente Windows (ma... sicuri che è un problema e non un'opportunità?). Possibili alternative:
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
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
Il taccuino tecnico - Permanentemente in fase di
riscrittura
Copyright 2013-2024, Vincenzo Villa (https://www.vincenzov.net)
Quest'opera è stata rilasciata con licenza Creative Commons | Attribuzione 4.0 Internazionale (CC BY 4.0)