Questa guida è vecchia!! Ubuntu difatti, con la sua distribuzione derivata "Edubuntu", permette di ricreare un ambiente LTSP con 2 apt-get (o direttamente nell'installazione). Usate questa guida quindi come referenza per eventuali problemi.

by Enrico Bassetti - http://www.enricobassetti.altervista.org/guide/ltsp.php


Indice:

  1. Configurazione di un server
  2. NFS server not responding, still trying....
  3. Applicazioni locali
  4. Avvio di un client
  5. LTSP BootSplash Patch
    1. Creazione ambiente
    2. Creare la Initrd di LTSP

Configurazione di un server

Ok allora cominciamo: per prima cosa ci serve il pacchetto ltsp-utils che prenderemo con:

$ apt-get install ltsp-utils

(nota: esistono anche i pacchetti ltsp-server per l'installazione automatica, ma personalmente preferisco a mano! )

Per le distribuzioni che non hanno apt-get ma rpm consiglio di scaricare l'rpm da qualche mirror. Per le distro invece che non hanno ne uno ne l'altro vi scaricate il tarball dal sito www.ltsp.org

Finito in installare ci ritroveremo con un bel programmino ltspadmin. Lo avviamo (tramite root) e per prima cosa facciamo Install/Upgrade LTSP Packages. Ora scaricherà la lista dei pacchetti e poi ci mostrerà un menu di scelta. Li selezioniamo tutti (con il tasto "A") e poi premiamo "Q" per cominciare il download e l'installazione. Se tutto va a buon fine ci ritroveremo con LTSP installato. Ora passiamo alla config di base: sempre sul menu principale di ltspadmin scegliamo Configure LTSP. Questo avvierà un programma di configurazione di LTSP. Come il programma si avvia fa un check di tutti i files necessari e poi ci chiede di premere Enter (invio). Ora premendo S e dando invio possiamo vedere, tramite una tabella ben strutturata, cosa è configurato e funzionante e cosa no. Con C invece si passa alla configurazione. Una volta completata la config per tutte le voci che non sono pronte il sistema ha bisogno di qualche modifica per funzionare: per prima cosa editiamo il file di config del nostro Desktop Manager (_non_ il Desktop Grafico)

  • KDM # vim /etc/kde3/kdm/Xaccess

E modifichiamo la riga 38 togliendo il cancelletto (decommentando) in modo da consentire a tutti i client l'accesso alla macchina.

  • GDM # vim /etc/gdm/gdm.conf

E sotto la voce [xdmcp] decommentare tutto e modificare il paramentro:

Enable=false

con il parametro

Enable=true
  • XDM # vim /etc/X11/xdm/Xaccess

E modifichiamo la riga 49 togliendo il cancelletto (decommentando) in modo da consentire a tutti i client l'accesso alla macchina.

  • WDM # vim /etc/X11/wdm/Xaccess

E modifichiamo la riga 40 togliendo il cancelletto (decommentando) in modo da consentire a tutti i client l'accesso alla macchina.

Se qualcuno conosce altre config per altri Desktop Manager è pregato di segnalarla così posso aggiungerla alla lista.

Ed ora potete editare il file /etc/dhcp3/dhcpd.conf sostituendolo con questo (ovviamente MAC, ip e cose varie andranno adattate)

default-lease-time            21600;
max-lease-time 21600;

option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.254;
option domain-name-servers 192.168.0.254;
option domain-name "ltsp.org";
option root-path "192.168.0.254:/opt/ltsp/i386";

shared-network WORKSTATIONS {
subnet 192.168.0.0 netmask 255.255.255.0 {
}
}

group {
use-host-decl-names on;
option log-servers 192.168.0.254;

host ws001 {
hardware ethernet 00:E0:18:E0:04:82;
fixed-address 192.168.0.1;
filename "/lts/vmlinuz-2.4.9-ltsp-5";
}
}

Nel parametro filename è indicato il kernel che potete trovare in /tftpboot/lts/

Nel parametro option root-path c'è indicato l'IP del server e la cartella remota da montare. Di solito la cartella è sempre quella. (se non è stata modificata prima da ltspadmin nella voce Configure Installer)

Ora riavviate tutti i servizi che avete prima configurato e il vostro server sarà pronto!

NFS server not responding, still trying....

Tra connessioni con velocità diverse spesso capita che si perdono i pacchetti e che quindi il client non possa montare le cartelle NFS del server. Succede spesso quando il client ha una connessione a 10mbps e il server a 100, oppure quando il client ha una connessione a 100mbps e il server a 1Gbps. Come ovviare? Semplice: il problema è dovuto al fatto che i pacchetti inviati dalla scheda più veloce non vengono ben riconosciuti dalle schede. Per forzare il kernel di linux a riconoscerli basta aggiungere:

option option-128 code 128 = string;
option option-129 code 129 = text;

option option-128 e4:45:74:68:00:00;
option option-129 "MOPTS=nolock,ro,wsize=2048,rsize=2048";

al file dhcpd.conf. NOTA: l'opzione 128 non è un mac address, è una specie di codice di controllo di etherboot.

Applicazioni locali

Eh si, perché con LTSP si possono anche avviare le applicazioni in locale. Il come lo vedremo dopo, ma adesso vale la pena parlare della (s)convenienza delle applicazioni che girano sul client. Usando computer vecchi questo dubbio non viene, ma quando ci sono dei PC che potrebbero supportare le applicazioni avviate in locale? Ma quali sono i relativi vantaggi?

Nel caso delle applicazioni avviate localmente:

  • Si sposta il carico dal server al client
  • Alcune applicazioni, come quelle che fanno connessioni ad altri utenti (si veda VoIP e compagnia, ad esempio l'ex GnomeMeeting, ora Ekiga) girano meglio o girano solamente in questo modo.
  • Il computer da cui ha avuto accesso è facilmente identificabile dal proxy/firewall o da altri sistemi di monitoraggio/protezione

Invece ci sono i seguenti svantaggi:

  • Il carico di rete aumenta, poiché l'applicazione viene trasferita in locale per essere eseguita.
  • Nel caso di applicazioni molto usate e relativamente molto pesanti (tipo OpenOffice.org), non si ha il vantaggio del blocco di memoria condivisa, visto che la RAM è quella locale, non quella del server.

Naturalmente il client deve essere abbastanza performante da supportare le applicazioni e il carico di rete.

Come si fa?

Non ho provato direttamente a fare questa modifica, quindi per la parte pratica non ho ancora niente da scrivere (visto che molte volte non basta "seguire il manuale"). Questa volta quindi il mio consiglio è di prendere spunto da qui: http://wiki.ltsp.org/twiki/bin/view/Ltsp/LocalApps

Avvio di un client

Ok visto che ho poco tempo passo direttamente all'avviare i client, premettendo che il sistema sia già configurato e pronto all'uso. Quando avrò più tempo vi descriverò le danze vodoo davanti al monitor (e sopra la tastiera) che abbiamo praticato per far funzionare (sembra che funzioni) il nostro sistema.

Ci troviamo con un PC di quelli vecchi senza il chip integrato di avvio (vedere dopo per quelli con), quindi che non prende da solo i parametri dal DHCP. Ci sono 2 strade: o vi compilate etherboot per creare le vostre immagini di avvio, oppure usate l'interfaccia online http://www.rom-o-matic.net/ che vi permette di creare in pochi passi le immagini da usare. Dopo aver preso l'immagine per il supporto che userete (floppy, disco fisso, cd) e dopo averla scritta mettete il supporto dentro il lettore e avviate. Controllate se nel BIOS è abilitata la partenza dal suddetto supporto. Salvando e uscendo dovrebbe partire l'immagine scritta in precedenza che va a prendersi i parametri (ip, subnet, gateway, root path tftp e root path nfs) dal nostro server. Se questo è vero, molto probabilmente partirà il client X grafico (se non avete specificato altro) oppure dirà che non riesce a partire perché non rileva scheda/monitor/cose varie. Nel secondo caso vi dovete armare di santa pazienza e modificare il file /opt/ltsp/i386/etc/lts.conf e, aggiungendo il nome host del PC (che prima avete inserito nel config del DHCP) inserite i parametri di una configurazione "ad occhio" della grafica (risoluzione, refresh, colori), abbassando i valori se non funziona oppure inserendo quelli personalizzati (trovati magari su internet).

Quelli invece che hanno già il chip integrato, come ad esempio: tutti i portatili, quasi tutti i pc di nuova generazione con scheda di rete integrata, raramente i pc vecchi con scheda integrata, o le stesse schede se contengono il chip per l'avvio di rete. In questi casi bisogna riconoscere se il sistema è PXE: in questo caso _sicuramente_ bisogna usare il mini kernel /tftpboot/lts//pxeboot.0 e non quello standard. Questo perché il sistema PXE non riesce a scaricare i file di una dimensione troppo grande. Se siete insicuri e non riuscite a capirlo, usare pxeboot.0 nel caso fallisse a scaricare il kernel normale è buona cosa.

Dopo aver smanettato con lts.conf per tutte le config di base (video, audio, tastiera e mouse) il nostro client dovrebbe funzionare alla perfezione.


LTSP Bootsplash patch

Ovvero come visualizzare un'immagine per il caricamento al posto delle scritte.

Creazione ambiente

Avete bisogno solo degli strumenti per compilare il kernel, quindi gcc e librerie varie. Nel caso di ubuntu c'è un pacchetto i programmi base (si chiama build-essential).

Serviranno inoltre:

  • Splash ([Download diretto versione 3.0.7])
  • ltsp_kernel_kit, incluso nel pacchetto [LBE] di LTSP (include le configurazioni del kernel per LTSP e il tool per creare il ramdisk iniziale)

Installazione di Splash

Decompattato il pacchetto (con bunzip e gzip), si passa alla compilazione. Cosa bisogna compilare? Semplice, __solo__ il programma (il resto dei tools pare non funzioni o non serva ad un gran ché). Diamo quindi (nella cartella decompattata):

make splash
cp splash /sbin/

Finito. E' stato complicato?

Patch e compilazione del kernel

Per prima cosa prendiamo le sorgenti del kernel "originali" (poiché quelle che forniscono insieme alla distribuzione sono modificate e ottimizzate, ma a noi questo non interessa) da ftp.kernel.org. In questo caso abbiamo scelto la versione 2.6.15 (l'ultima supportata ufficialmente dal bootsplash). Per cominciare diamo:

su -

inseriamo la password di root e poi diamo:

cd /usr/src/

qui poi scarichiamo il kernel. Io l'ho scaricato (con wget) e scompattato dando:

wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.15.tar.gz


bunzip2 linux-2.6.15.tar.gz
tar -xf linux-2.6.15.tar
cd linux-2.6.15/

Scarichiamo e applichiamo quindi la patch: scaricate la versione per il vostro kernel qui: [http://www.bootsplash.de/] e poi applicatela dando:

patch -p1 < nome_file_di_patch.diff

Ora dobbiamo creare il file di configurazione: io ho preso quello del LBE (sorgenti) di LTSP (incluso nel pacchetto per la ramdisk) così: ho copiato il file config-2.6.xyz nella cartella /usr/src/linux-2.6.xyz , rinominandolo .config (come da standard) e ho aggiunto la riga

CONFIG_BOOTSPLASH=y

togliendo quella relativa al pinguino piccolo (logo) visto che non vanno molto d'accordo:

CONFIG_LOGO=N

a questo punto ho fatto la configurazione e compilato con:

 
make config
make
make modules_install

ora ho copiato il kernel compilato nella cartella /tftpboot/lts/ usata da LTSP

cp arch/i386/boot/bzImage /tftpboot/lts/vmlinuz-2.6.15

Il kernel ora è pronto per utilizzare la/le bootsplash che troverà nel ramdisk (possono essere più di una, basta che non ci siano doppioni per risoluzioni video: insomma una per ogni risoluzione video).

Creare la Initrd di LTSP

Nel pacchetto ltsp_kernel_kit di [http://wiki.ltsp.org/twiki/bin/view/Ltsp/LBE], possiamo trovare, oltre alle configurazioni di default per il kernel, anche il tool "build_initramfs", che serve per creare un disco iniziale RAM. Se volete aprirlo e capire come funziona fate pure, ma non è lo scopo di questo howto. Nella sottocartella initramfs possiamo trovare le "sorgenti" del ramdisk, che andremo a modificare per animare la barra di caricamento.

Subito nella cartella è presente un file chiamato init. Modificatelo con il vostro editor preferito, inserendo delle righe simili a queste (le parti in italico posso essere cambiate, le altre no):

[ -w /proc/splash ] && echo "show 10000" > /proc/splash
[ -w /proc/progress ] && echo 40 "Montaggio /proc" > /proc/progress

Cosa significano questi "comandi"? In pratica vanno a modificare dei files: il primo serve per far avanzare la barra (i numero vanno da 0 a 65535), il secondo invece serve per visualizzare nel box di testo (qualora sia presente) una mini descrizione.

A questo punto tornate alla directory superiore (cd ..) e date ./build_initramfs.

Vi chiederà le sorgenti del kernel e il percorso dove andare a ficcare tutta la robaccia per far caricare pxeboot.0 e initrd.gz

Patchare initrd.gz per inserire la bootsplash

Ok ora che abbiamo il kernel e initrd passiamo alla fase di patch di initrd.gz

Piazziamoci nella cartella tftpboot/lts (delle volte presente in / delle volte in /var/lib/) ed entriamo nella cartella con la versione del kernel prodotto da noi. Dentro troveremo i file: pxeboot.0, initramfs.gz, bzImage-xyz e la cartella pxeboot.cfg contenente un file chiamato default. Copiamo initramfs.gz rinominandolo initramfs-bootsplash.gz. A questo punto applichiamo la patch con:

cp initramfs.gz initramfs-splash.gz
splash -s -f /etc/bootsplash/themes/Linux/config/bootsplash-1024x768.cfg >> bootsplash


echo bootsplash | cpio -o -H newc | gzip >> initramfs-splash.gz

Naturalmente il percorso del file di config è quello dello splash che avete scaricato. E poi modificate il file pxeboot.cfg/default in questi modi:

  • O create una nuova voce di boot (mettendola come default) contenente tutti i parametri identici alla prima con la modifica del secondo punto
  • O modificate la linea esistente facendo puntare non a initramfs.gz ma a initramfs-bootsplash.gz

Da notare come il secondo punto vada applicato pure al primo, dopo aver creato una nuova voce. A questo punto puntate dentro dhcpd.conf verso pxeboot.0 come kernel in modo che carichi questo "mini-bootloader", che a sua volta caricherà il kernel con la bootsplash.