Corso avanzato di LTSP

Transcript

Corso avanzato di LTSP
Faber – Corsi avanzati
Corso avanzato di LTSP
Andrea Della Regina <[email protected]>
Associazione di Promozione Sociale Faber Libertatis - http://faberlibertatis.org/
introduzione
Linux Terminal Server Project (LTSP) è una tecnologia che
permette ad un server Linux di supportare una rete di thinclient e/o terminali X.
Per thin-client si indica un PC a basso costo, basse prestazioni
e basso consumo generalmente senza disco fisso e/o memorie
di massa (diskless).
Per terminale X si indica un PC, generalmente recuperato, il
quale sfrutta un server grafico X in rete per l'esecuzione di
applicazioni grafiche. In quanto terminale la risorsa
computazionale è quasi interamente delegata
al server
centrale.
LTSP: per cosa si usa
L'utilizzo di LTSP è consigliato nel caso si intenda realizzare
uno dei seguenti scenari:
●
un'aula scolastica e universitaria;
●
un'internet point;
●
sviluppo in gruppo su di un sistema centrale.
Tutti questi scenari prevedono:
●
una rete di PC usata da molti utenti;
●
condivisione della risorsa internet, stampanti etc;
●
l'utilizzo da parte di tutti gli utenti degli stessi software;
●
limitato utilizzo di applicazioni multimediali.
LTSP: per cosa NON si usa
L'utilizzo di LTSP è sconsigliato nei seguenti scenari:
●
postazioni stand-alone;
●
largo uso di applicazioni multimediali;
●
postazioni di editing audio/video;
●
uso di webcam, scanner, masterizzatori;
●
visualizzazione di video/DVD;
●
trasferimento di grosse quantità di dati dai client server
centrale.
LTSP: cosa serve
Hardware:
●
un server sufficientemente dimensionato;
●
thin-client o PC recuperati (PI, PII con 64/128 Mbyte di
RAM, con scheda di rete bootable, altrimenti floppy,
CDROM o piccolo hard-disk;
●
switch almeno 100 Mbps;
●
cablaggio di rete (categoria 5e);
●
connessione ad internet (opzionale).
Software: una distro predisposta (Edubuntu, K12ltsp) oppure:
●
distro generica (Debian, Ubuntu);
●
servizi DHCPD, TFTPD e NFD;
●
server X e desktop manager (XDM, GDM, KDM);
●
ltsp-utils e ISO LTSP;
●
ltspfsd (opzionale).
LTSP: dimensionare il server
Il server è in genere assieme allo switch il principale Single
Point Of Failure (SPOF) di una rete LTSP, quindi si deve
avere la massima attenzione al suo dimensionamento/scelta.
Deve avere:
●
CPU sufficientemente veloce (da PIV 3GHz in su);
●
RAM almeno 512 Mbyte+(50 Mbyte*num. client);
●
due dischi fissi da almeno 80 Gbyte con RAID 1 software
o hardware (controller);
●
una o più schede di rete da 100/1000 Mbps.
Se si dispone della connessione a Internet meglio destinare
una scheda di rete per collegare il server al router.
LTSP: facile o difficile?
L'installazione/configurazione di una rete LTSP è una cosa alla
portata di un utente medio di Linux o alta materia da geek?
Probabilmente seguendo le istruzioni o utilizzare una distro
specifica per l'LTSP non presenta grosse complicazioni.
I problemi possono venire dalla difficoltà di capire perché non
funziona ed eseguire un corretto troubleshooting. Per avere
supporto in questo bisogna avere ben chiara la dinamica del
funzionamento di un LTSP.
Per questo si affronta l'avvio standard di un sistema Linux e lo
si confronta con l'avvio di un client LTSP.
l'avvio di Linux da hard disk
Il seguente schema descrive l'avvio di un sistema Linux da hard
disk con sequenza di boot del BIOS Floppy-CDROM-HD e
schema di partizionamento del disco hda1=>/boot,
hda5=>swap, hda6=>/, hda7=>/home.
L'avvio di Linux si compone delle seguenti macro-fasi:
●
BIOS (POST e sequenza di boot);
●
Linux Loader (GRUB o LILO);
●
Kernel (kernel land)
●
Init (user land).
l'avvio di Linux: fase BIOS
Il Basic Input/Output System (BIOS) è il firmware della
scheda madre del PC ed è contenuto in una memoria ROM ed
eseguito all'avvio/reset del sistema.
Il programma prevede senza intervento da parte dell'utente di
eseguire le seguenti fasi:
●
Power On Self Test (POST), in cui verifica la sanità del
sistema;
●
sequenza di boot, in cui verifica quale, tra i vari dispositivi,
nell'ordine fissato nella memoria CMOS, contenga un
settore di avvio.
l'avvio di Linux: fase Loader
Nel nostro esempio il BIOS non ha trovato nessun settore di
avvio né nel floppy, né nel CDROM ma invece l'ha trovato nel
Master Boot Record (MBR) dell'hard-disk hda.
L'MBR è il primo settore di 512 Byte del disco e contiene lo
stage 1 del Linux Loader (e.g. GRUB), viene dunque caricato in
RAM ed eseguito. Il suo compito è di indicare la posizione e di
caricare in memoria lo stage 1.5 e 2 del Loader che si trova nel
nostro caso nella partizione hda1.
Una volta caricato gli stage 1.5 e 2, GRUB è in grado di capire
il contenuto della partizione, di leggere il suo file di
configurazione e visualizzare lo splash-screen a video.
l'avvio di Linux: fase Kernel
GRUB, sulla base di una configurazione automatica e di una
nostra scelta, può far partire un kernel Linux o un altro sistema
operativo.
L'opzione avviata può essere ad esempio del tipo:
root (hd0,0)
kernel /vmlinuz-2.6.xxx root=/dev/hda6 ro quiet splash
initrd /initrd.img-2.6.xxx
Sapendo che hd0,0 corrisponde per GRUB alla partizione
hda1=>/boot, questa provoca l'avvio del kernel che si trova in
/boot/vmlinuz-2.6.xxx ed il caricamento dell'init RAM disk
contenuto in /boot/, il quale contiene un root file system
temporaneo con i moduli necessari gestire il disco fisso ed il file
system della partizione di root effettiva (hda5=>/).
l'avvio di Linux: fase Init
Una volta che il kernel è in grado di montare il root file system
(hda6=>6), può leggere il file di configurazione /etc/fstab per
montare le altre partizioni (e.g. hda7=>/home).
Conclusa la sua fase inizializzazione il kernel lancia il primo
processo applicativo, con PID 1, cioè il programma /sbin/init il
quale esegue l'inizializzazione del sistema sulla base del
contenuto del file /etc/inittab.
l'avvio di Linux da rete: il netboot
Cosa c'è di diverso nell'avvio di Linux in un client LTSP?
Il BIOS passa il comando ad un boot ROM che può essere
contenuto in un chip della scheda di rete oppure in un floppy, in
un CDROM o in un hard-disk al pari di un kernel.
Nel primo caso è necessario che non solo la scheda disponga
della boot ROM, ma che lo stesso BIOS preveda il boot da
scheda di rete.
In genere le schede di rete che prevedono nativamente il boot
supportano l'ambiente Preboot eXecution Environment
(PXE).
Il progetto Etherboot fornisce un diverso ambiente liberamente
scaricabile nei formati necessari all'avvio da floppy, CD o HD.
l'avvio di Linux da rete: il DHCP
Cosa fa la boot ROM?
Interroga in rete un server DHCP per ottenere le informazioni
necessarie alla gestione della rete (indirizzo IP, maschera di
rete etc.), a dove prelevare il kernel e l'indirizzo del disco in rete
con il file system di root. Ad esempio:
●
IP Address: 192.168.1.100;
●
Subnet mask: 255.255.255.0;
●
Default gateway: 192.168.1.1;
●
Filename: 192.168.168.1.1:/tftpboot/lts/vmlinuz-2.6.16.1ltsp-1;
●
Root path: 192.168.1.1:/opt/ltsp/i386.
l'avvio di Linux da rete: il TFTP
DHCP dice alla boot ROM dove si trova il kernel, ma come fa a
riceverlo per eseguirlo?
L'informazione filename recuperata dal server DHCP viene
usata per interrogare un server TFTP (Trivial File Transfer
Protocol). Il TFTP è una versione molto semplificata del più
conosciuto FTP in quanto non richiede la gestione dell'utente
ed è quindi implementabile anche nel firmware di una scheda di
rete.
Nel nostro esempio la boot ROM richiede il file
/tftpboot/lts/vmlinuz-2.6.16.1-ltsp-1 al server TFTP all'indirizzo
IP 192.168.50.1.
l'avvio di Linux da rete: l'NFS
Una volta caricato il kernel, trasferito via rete, come viene
caricato il file system di root?
Il kernel caricato da rete ha integrati, oltre ai moduli per gestire
la rete, anche il driver del file system NFS (Network File
System) che permette di montare una directory esportata da
un server NFS come una partizione di un disco.
Le informazioni su dove recuperare il disco in rete sono fornite
dal parametro root-path fornito dal server DHCP.
Una volta montato il root FS il kernel può avviare la procedura
di inizializzazione, i moduli del kernel ed i programmi residenti
nel disco NFS.
l'avvio di Linux da rete: server grafico X
Come avviene l'avvio dell'interfaccia?
Il file system montato sul client LTSP contiene una cersione di
Linux alleggerita, adatta ad un avvio veloce da parte di un PC
sotto-dimensionato.
Quindi
le
applicazioni
residenti
costituiscono il minimo indispensabile.
In fase di avvio il file di configurazione rootfs:/etc/lts.conf
contiene le informazioni su quali servizi ed interfacce utente
avviare. E' prevista una shell minimale (busybox) e un
sessione X auto-configurata che si collega al server grafico
centrale esportando sul terminale X il Desktop Manager. Il
comando che realizza la “magia” è:
# X -query <IP SERVER> &
question time
Questo per la parte teorica!
Ci sono domande?
hardware: la rete LTSP
versioni di LTSP
LTSP è sviluppato da una piccola ma attiva comunità in due
versioni:
●
●
LTSP 4 (4.2u2): si configura per mezzo delle ltsp-utils e
fornisce un rootfs minimale compilato “from scratch” con
LBE (LTSP Build Environment);
LTSP 5: si integra con la distro host e genera la rootfs
tramite i package della distro stessa.
L'installazione mostra come installare LTSP 4 perché assicura
di utilizzare terminali con prestazioni inferiori e perché da
meglio evidenza del funzionamento del sistema.
installazione del sistema host
Installare una versione desktop di Ubuntu 7.04.
Installare i seguenti pacchetti:
$ sudo apt­get install dhcp3­server tftpd­hpa nfs­kernel­server tcpd
i quali installeranno i servizi dhcpd, tftpd e nfsd.
A parte il dhcpd, lo start degli altri due servizi va a buon fine.
configurazione di rete
Modificare con un editor il file /etc/network/interfaces:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.0.0.1
netmask 255.255.255.0
gateway 10.0.0.254
auto eth1
iface eth1 inet static
address 192.168.50.1
netmask 255.255.255.0
Eseguire dopo il comando:
$ sudo /etc/init.d/networking restart
download software
Scaricare dal wiki di LTSP l'ISO della versione 4.2u2 (100MB)
che contiene i package del rootfs e di ltsp-utils.
Il sito di riferimento è la pagina del wiki di LTSP:
http://wiki.ltsp.org/twiki/bin/view/Ltsp/DownLoads
Eseguire i comandi:
$ mkdir ~/ltsp
$ cd ltsp
$ wget http://ltsp.mirrors.tds.net/pub/ltsp/isos/ltsp­4.2u2­0.iso
$ wget http://ltsp.mirrors.tds.net/pub/ltsp/isos/ltsp­4.2u2­0.md5sum
$ md5sum ­c ltsp­4.2u2­0.md5sum
ltsp­4.2u2­0.iso: OK
installazione pacchetti LTSP
Eseguire i comandi:
$ sudo mkdir /mnt/iso
$ sudo mount ­o ro,loop ltsp­4.2u2­0.iso /mnt/iso
$ sudo dpkg ­i /mnt/iso/ltsp­utils/ltsp­utils_0.25_all.deb
$ sudo ltspadmin
Appare la schermata semi-grafica di ltspadmin.
Installare i pacchetti LTSP seguendo le seguenti istruzioni:
Seleziona “Configure the installer options”
Imposta “Where to retrieve packages from?” a “file:///mnt/iso”
Accetta i valori di default per le altre domande.
Rispondi “y” a “Correct? (y/n/c)”
Seleziona “Install/Update LTSP Packages”
Digita “A”, poi “Q”.
Rispondi “y” a “Ready to install/update the selected LTSP packages? (y/n)”
Prosegui con invio e digita “q”.
configurare il runlevel
Eseguire i comandi:
$ sudo umount /mnt/iso
$ sudo ltspcfg
Appare la schermata semi-grafica di ltspacfg
Eseguire i seguenti passi per assicurarsi che il runlevel
standard di Debian/Ubuntu (2) sia usato.
Proseguire con invio.
Digitare “c” per “Configure the services manually”
Digitare “1” per “Runlevel”
Accettare il valore di default (2).
selezionare l'interfaccia di rete
Eseguire i seguenti passi per selezionare l'interfaccia (eth1) a
cui sono collegati i terminali.
Digitare “2” per “Interface selection”
Immettere “eth1” e premere invio.
configurare il DHCP server
Modificare il file /etc/default/dhcp3-server:
INTERFACES="eth1"
Modificare il file /etc/dhcp3/dhcpd.conf:
ddns­update­style none;
get­lease­hostnames true;
default­lease­time 600;
max­lease­time 7200;
authoritative;
log­facility local7;
option domain­name "ltsp­test.lan";
option domain­name­servers 212.216.112.112, 212.216.172.62;
option option­128 code 128 = string;
option option­129 code 129 = text;
subnet 192.168.50.0 netmask 255.255.255.0
{
range 192.168.50.100 192.168.50.199;
next­server 192.168.50.1;
option subnet­mask 255.255.255.0;
option broadcast­address 192.168.50.255;
option routers 192.168.50.1;
option root­path "192.168.50.1:/opt/ltsp/i386";
if substring (option vendor­class­identifier, 0, 9) = "PXEClient"
{
filename “/lts/2.6.17.3­ltsp­1/pxelinux.0";
}
else
{
filename "/lts/vmlinuz­2.6.17.3­ltsp­1";
}
}
riavvio del DHCP server
Riavviare il server DHCP con il comando seguente:
$ sudo /etc/init.d/dhcp3­server restart
configurazione del TFTP server
Modificare il file /etc/default/tftpd-hpa:
RUN_DAEMON="yes"
OPTIONS="­l ­a 192.168.50.1 ­s /var/lib/tftpboot"
Eseguire i comandi:
$ sudo mv /tftpboot/lts /var/lib/tftpboot
$ sudo rmdir /tftpboot
$ sudo /etc/init.d/tftpd­hpa restart
configurazione di XDMCP e GDM
Dall'interfaccia di ltspcfg seguire i seguenti passi:
Selezionare “7” per “XDMCP configuration”
Rispondere “y” a “Do you want to enable gdm (y/n) ?”
Rispondere “n” a “Do you want to disable the graphical login on the server (y/n) [N]?”
Confermare premendo invio.
Riavviare GDM con il comando:
$ sudo /etc/init.d/gdm restart
configurazione di /etc/hosts
Dall'interfaccia di ltspcfg seguire i seguenti passi:
Selezionare “8” per “Create /etc/hosts entries”
Rispondere “y” a “Do you want to add entries to /etc/hosts (y/n) ?”
Confermare premendo invio.
Eliminare le righe in /etc/hosts inutili e correggere il dominio
degli hostname.
configurazione di /etc/hosts.allow
Dall'interfaccia di ltspcfg seguire i seguenti passi:
Selezionare “9” per “Create /etc/hosts.allow entries”
Rispondere “y” a “Do you want to add entries to /etc/hosts.allow (y/n) ?”
Confermare premendo invio.
configurazione di /etc/hosts
Dall'interfaccia di ltspcfg seguire i seguenti passi:
Selezionare “10” per “Create /etc/exports entries”
Rispondere “y” a “Do you want to add entries to /etc/exports? (y/n) ?”
Confermare premendo invio.
Modificare il file /etc/exports commentando la riga dei swapfiles
e aggiungendo il parametro subtree_check:
/opt/ltsp 192.168.50.0/255.255.255.0(ro,no_root_squash,sync,subtree_check)
# /var/opt/ltsp/swapfiles 192.168.50.0/255.255.255.0(rw,no_root_squash,async)
Riavviare il servizio NFS con il comando:
$ sudo /etc/init.d/nfs­kernel­server restart
configurazione di lts.conf
Dall'interfaccia di ltspcfg seguire i seguenti passi:
Selezionare “11” per “Create lts.conf file”
Rispondere “y” a “Do you want to create a default lts.conf file (y/n) ?”
Confermare premendo invio.
Modificare il file /opt/ltsp/i386/etc/lts.conf aggiungendo le righe
sul layout (it) e modello (pc105) di default della tastiera:
[Default]
SERVER = 192.168.50.1
XSERVER = auto
X_MOUSE_PROTOCOL = "PS/2"
X_MOUSE_DEVICE = "/dev/psaux"
X_MOUSE_RESOLUTION = 400
X_MOUSE_BUTTONS = 3
USE_XFS = N
SCREEN_01 = startx
SCREEN_02 = shell
XkbLayout = it
XkbModel = pc105
testare LTSP: le utenze e il floppy
Con questi ultimi passi abbiamo installato il nostro sistema
server. Ora bisogna testare l'installazione creando uno o più
utenti non privilegiati:
$ sudo groupadd ws001
$ sudo useradd ­d /home/ws001 ­m ­s /bin/bash ­g ws001 ws001
$ sudo passwd ws001
Inoltre scaricare l'immagine floppy dell'All Drivers Etherboot
Floppy e copiarla in un floppy:
$ wget http://etherboot.anadex.de/eb_on_hd.ima
$ dd if=eb_on_hd.ima of=/dev/fd0
Questo floppy facilita il test dell'avvio di un terminale X.
testare LTSP: l'avvio da floppy
Utilizzando il floppy appena creato, avviare un terminale con il
boot standard da floppy.
Apparirà un menù con una serie di opzioni.
Selezionare la prima opzione per un avvio da rete.
Lo stesso floppy permette di copiare un mini sistema di boot su
hard disk per avviare il terminale copiando la Boot ROM
nell'hard-disk.
testare LTSP: l'avvio da hard disk
Volendo disporre sia dell'avvio da hard disk di Linux che
dell'avvio da rete, si deve procedere, dopo aver installato Linux
(es. DSL) nel seguente modo.
Individuare il PCI ID dell'ethernet controller con il seguente
comando:
$ lspci ­n | grep "^`lspci | grep "Ethernet controller" | head ­n 1 | cut ­d\ ­f1`" | cut ­d\ ­f3
Scaricare dal sito http://www.rom-o-matic.net/5.4.3/ la ROM in
formato .zlilo per la scheda identifica dal PCI ID ricavato e
copiare il file scaricato in /boot/.
Aggiungere le seguenti riga al file /boot/grub/menu.lst:
title LTSP
root (hd0,0)
kernel /boot/eb­<nome nic>.zlilo
testare LTSP: i local device
Da interfaccia grafica, gli utenti possono accedere in un
terminale LTSP solo ai dispositivi (dischi, schede audio etc.) del
server. Per ovviare a questo è stato introdotto in LTSP 4.2 il
supporto ai Local Device tramite il servizio LTSPFS. Per
attivarlo eseguire:
$ sudo apt­get install fuse­utils libfuse2 libx11­protocol­perl
$ sudo adduser ws001 fuse
$ sudo mount ­o ro,loop ~/ltsp/ltsp­4.2u2­0.iso /mnt/iso
$ sudo dpkg ­i /mnt/iso/local_devs/ltsp­server­pkg­ubuntu_0.1_i386.deb
Aggiungere la riga seguente al file /opt/ltsp/i386/etc/lts.conf
nella sezione [Default]:
LOCAL_STORAGE = Y
question time
Finita la parte pratica!
Ci sono domande?
saluti
Grazie per l'attenzione,
arrivederci al prossimo corso!