Che Lubit sia un sistema operativo semplice, stabile e veloce non è un novità per chi segue questo blog, quindi il titolo di questo post deve avere anche un altro significato , anzi diciamo che ha doppio significato.
L'immagine in alto rappresenta chiaramente l'argomento che andrò a trattare in
questo articolo, si tratta di una installazione centralizzata del sistema che
"serve" più client.
Andiamo quindi subito a vedere come Lubit può essere un sistema per tutti.
Siamo abituati a pensare i servers come web server, file server, print server e così via, adesso invece andremo a realizzare un OS Server o per meglio dire un Terminal Server.
Lo scopo di questa soluzione è utilizzare meglio le risorse e la capacità di calcolo di un PC mettendoli a disposizione di PC datati, anche senza memoria di massa , che faranno da semplici Thin-Client connesi in rete locale.
Per intenderci andremo a realizzare quello che accade con i
terminali stupidi collegati a server unix, chi ha qualche annetto se li ricorderà ;)
Il sistema operativo sarà installato solo sul server e ogni client, collegato alla rete LAN, farà il boot da rete e il login come se si operasse direttamente sul Pc server.
Come funziona.
Si parte da una installazione di Lubit su di una macchina che abbia la capacità e le risorse per gestire con tranquillità la multiutenza visto che permetterà di far lavorare più utenti contemporaneamente, tutto il tutorial si basa sulla versione a 32 bit per assicurare il funzionamento anche con i client un pò datati.
Il secondo requisito per realizzare quanto detto è un sistema che permetta ai client di avviarsi prelevando il sistema operativo da remoto, questa funzione si chiama PXE.
Avrete notato che la maggior parte di pc ha la possibilità in fase di boot di scegliere se avviarsi da una memoria locale o da rete, beh questa è proprio la funzione che ci serve.
Il PXE dev'essere installato e configurato sul server, questo si compone di un DHCP server e di un server TFTP (Trivial File Transfer Protocol).
Ricordo velocemente che il DHCP server (Dynamic Host Configuration Protocol), come dice il nome, è un protocollo di rete che permette di gestire le connessioni degli host assegnando ai client che ne fanno richiesta tutti i parametri di rete, per es. indirizzo ip, subnetmask, DNS e altri parametri specifici per il PXE.
In questo caso la prima cosa che fà il DHCP è fornire ai client, oltre ai parametri di rete, l'indirizzo TFTP dove risiedono i files di sistema da caricare.
Il TFTP server è una versione semplificata di FTP che permette di rendere disponibili dei files in rete, non ha necessità di autenticazione.
Quindi avendo installato e configurato questi due componenti abbiamo la possibilità di accettare delle richieste DHCP, riconoscere e fornire tutti i dati ai client per il boot, e inoltre rendiamo disponibile agli stessi client i files di sistema da leggere tramite TFTP.
Oltre a questi due componenti andremo anche a generare i files di sistema per i client.
Dopo aver spiegato, anche se brevemente, come funziona il tutto andiamo alla parte pratica.
Realizziamo il nostro Terminal Server!
Potremmo installare tutte le funzioni che ho descritto prima a mano singolarmente ma esiste una soluzione rapida e semplice per fare tutto in modo quasi automatico, e siccome quel che conta è il risultato andremo spediti per la via più breve.
Per installare tutto quanto in un colpo solo basta digitare da terminale:
sudo apt-get install ltsp-server-standalone openssh-server
fatto questo abbiamo pronti tutti i servizi che ho elencato in precedenza, naturalmente ora non resta che fare un pò di configurazione.
Innanzitutto partiamo dalla configurazione dei parametri di rete.
Abbiamo appena installato un server dhcp nel nostro PC e quindi, cosa molto importante,
se il router ha il servizio dhcp attivo è assolutamente necessario disattivarlo!!!
Configuriamo adesso l'interfaccia di rete del server che garantirà il servizio, dobbiamo configurarla con un ip statico a nosto piacimento, l'unica raccomandazine è di utilizzare ip privati.
Per esempio l'indirizzo ip privato per il server che utilizzerò in questo articolo è 192.168.1.3 netmask 255.255.255.0
Editiamo il file che imposta i parametri per le interfacce di rete:
sudo leafpad /etc/network/interface
inserendo le seguenti righe
auto eth0
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
gateway 192.168.1.1
Il router invece ha indirizzo 192.168.1.1 netmask 255.255.255.0 e garantirà l'accesso ad internet per tutti i PC.
A questo punto cominciamo con il creare l'ambiente di sistema che verrà letto dai client, procediamo da terminale digitando:
sudo ltsp-build-client
ora potete prendere un caffè nel frattempo che viene completata l'operazione (ci vorrà un pò, circa 20 minuti), il caffè non è indispensabile per la riuscita quindi potete optare anche per altro ;)
Finito questo passo, è il momento di configurare i servizi.
Cominciamo con il DHCP, il file da modificare si trova in /etc/ltsp ed ha nome dhcpd.conf , quindi da terminale:
sudo leafpad /etc/ltsp/dhcpd.conf
(
chi preferisce un editor old style testuale può usare nano al posto di leafpad)
ci troviamo adesso nei parametri di configurazione che dobbiamo personalizzare in base alle nostre necessità,
in particolar modo dobbiamo modificare gli indirizzi di rete del server e il range degli ip a disposizione.
Riporto qui il file già pronto per configurae il server così da rendere piu' facile la modifica, basta copiare ;)
# Default LTSP dhcpd.conf config file.
#
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.20 192.168.1.250;
option domain-name "lubit.local";
option domain-name-servers 192.168.1.3;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
# next-server 192.168.1.1;
# get-lease-hostnames true;
option subnet-mask 255.255.255.0;
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";
}
}
Come si può vedere ho impostato la lan 192.168.1.0 e subnet 255.255.255.0 dell' ip 192.168.1.3 che è l'indirizzo dell'interfaccia del server, impostato il range di ip disponibili dal 20 al 250, ho dato un nome al dominio e specificato il broadcast, il resto potete lasciarlo così com'è.
Specifichiamo che il server dhcp deve stare in ascolto sull'interfaccio eth0 editando il file
sudo leafpad /etc/init.d/isc-dhcp-server
modifichiamo le variabili
DHCPD_CONF=/etc/ltsp/dhcpd.conf
INTERFACES="eth0"
A questo punto aggiorniamo le chiavi ssh:
sudo ltsp-update-sshkeys
generiamo l'immagine del file di sistema che verrà letto dai client
sudo lstp-update-image
e riavviamo il server DHCP:
sudo /etc/init.d/isc-dhcp-server restart
Il gioco è fatto!
Ora da Lubit Control Panel creiamo un utente per ogni client, questo passo non è indispensabile ma è lo scopo di tutto il lavoro che abbiamo fatto fino ad ora :)
Colleghiamo i client alla rete e avviamo il boot da network.
Se il vosto client è davvero vechiotto o molto particolare e non supporta il boot da rete a, link
http://rom-o-matic.net/gpxe/gpxe-git/gpxe.git/contrib/rom-o-matic/ potete creare un floppy disk, chiavetta usb o cd per risolvere .
Ok, sicuramente a questo punto vi trovate davanti al login di Ubuntu, tranquilli è solo l'avvio ... il resto è solo Lubit!
E' tutto, buon divertimento, alla prossima.
Saluti!