Thin Client Debian Etch
Da WikiOte, il sito wiki dell'Osservatorio Tecnologico.
Rete di terminali realizzata con LTSP
Contents
|
Introduzione
Un vecchio concetto attuale: un server piuttosto potente ed un certo numero di terminali ricavati da PC obsoleti. Provate a cercare con un motore di ricerca (ad es. Google) “terminal server linux”, non stupitevi se il risultato indicherà la presenza di alcuni milioni di pagine web; tra le più importanti noterete la presenza di applicazioni realizzate in ambito scolastico (http://www.k12ltsp.org/contents.html).
Scopo
In questo articolo descriveremo come realizzare un terminal server che ci permetterà di semplificare i problemi di manutenzione del laboratorio e riutilizzare i PC con le seguenti caratteristiche: CPU: i486 / Pentium RAM: 16 / 32 MB Hard Disk: nessuno Adattatore di rete: 10 Mbps CD: nessuno Floppy: funzionante
Server
Deve essere un PC con buone caratteristiche, in particolare per 10 utenti consigliamo: CPU: PIV o analogo RAM: 1GB Hard Disk: adatto al numero di utenti (100 – 200 GB) Adattatore di rete: 1000 Mbps Switch: meglio se con una porta a 1000 Mbps (quella per il server).
Ipotesi
I principi che ci hanno guidato nella configurazione della rete di terminali sono i seguenti:
• Esiste una rete locale per la didattica, anche se limitata ad un sola aula/laboratorio, dotata di un sistema per l’assegnazione dinamica degli indirizzi IP (DHCP).
• La rete dei terminali deve essere distinta da quella della didattica allo scopo di non creare conflitti, ovvero dal punto di vista prettamente tecnico l’assegnazione degli indirizzi IP ai terminali è indipendente e diversa da quella della rete didattica.
Software
Linux Debian Etch ed in particolare ltsp 4.2
Prerequisiti
Le operazioni che seguono richiedono una certa conoscenza del sistema operativo Linux e dei principi di networking.
Diagramma
Il server LTSP ha due adattatori di rete configurati con IP fisso, 192.168.1.100 verso la rete locale, e 192.168.100.100 verso i terminali.
Precisiamo che l'adattatore verso verso la rete locale potrebbe anche essere configurato in DHCP.
Installazione server
Faremo riferimento al Linux Terminal Server Project (http://www.ltsp.org), in particolare alla documentazione http://wiki.ltsp.org/twiki/bin/view/Ltsp/LTSP-42 e ci limiteremo a evidenziare le particolarità dell’installazione con la distribuzione Debian Etch e con la versione 4.2 del software ltsp.
Completare l'installazione
Supponiamo che abbiate già installato Debian Etch con l'ambiente grafico selezionabile come task durante l'installazione
Al termine dell'installazione è tuttavia necessario installare alcuni pacchetti aggiuntivi:
apt-get install dhcp3-server tftpd-hpa nfs-kernel-server libwww-perl
Installare il software per il terminal server
Dalla pagina http://wiki.ltsp.org/twiki/bin/view/Ltsp/LTSP-42#Installation_of_LTSP_4_2 scaricate il pacchetto ltsp-utils al link Debian – Download deb
Installare il pacchetto scaricato per mezzo del comando
dpkg -i ltsp-utils_0.25_all.deb
Come utente root eseguite:
ltspadmin
(1) Selezionate "Configure the installer options".
(2) Alla richiesta "Where to retrieve packages from?", accettate il sito web suggerito di default.
(3) Accetate la directory di installazione [/opt/ltsp].
(4) Se non avete proxy HTTP and FTP confermate [Enter].
(5) Rispondete [Y] per continuar e retornare al menu principale.
(6) Selezionate "Install/Update LTSP Packages".
(7) Nella successiva schermata i pacchetti LTSP disponibili saranno scaricati da internet.
_1 Selezionate [A] per installare tutti i pacchetti.
_2 Al termine selezionate [Q] per chiudere il menu.
(8) Rispondete [Y] per installare e iniziare lo scaricamento e l'installazione.
(9) Selezionate "Configure LTSP" dal menu principale. Ltspadmin controllerà se tutti i file necessari sono installati. Confermate [Enter].
(10) In seguito, _1 "Show the status of all services" digitando [S]. Alcuni di questi servizi saranno avviati nei prossimi passi.
_2 Confermate [Enter] per ritornare al menu principale.
(11) Scegliete "Configure services manually" digitando [C].
(12) Selezionate in sequenza tutte le categorie. Confermare Enter [Y] a tutte le opzioni suggerite.
_1) Accettate runlevel=2 .
_2) Scegliete l'interfaccia di rete verso i terminali (nel nostro caso "eth1").
_3) Durante l'installazione di xdmcp, rispondete [N] a "disable graphical logon on server" se desiderate continuare a utilizzare l'ambiente grafico sul server (quello che state utilizzando adesso).
(13) Infine digitate [Q] per uscire da ltspadmin.
Rieseguendo il punto _1 del passo 10) dovete ottenere:
in cui si evidenziano tutti i servizi installati ed attivi.
Ulteriori personalizzazioni dell'installazione
Abilitare il mouse seriale nel file /opt/ltsp/i386/etc/modules.devfs
# Serial ports alias /dev/ttyS* serial #alias /dev/tts* serial ##alias /dev/ttyS* /dev/tts #alias /dev/cua* /dev/tts </code>
Controllare che il servizio DHCP sia attivo solo sull'adattatore di rete verso i terminali nel file /etc/default/dhcp3-server specificare l'interfaccia su cui il server dhcp deve assegnare gli indirizzi:
INTERFACES = “eth1”
dove eth1 è l'adattatore di rete verso la rete locale dei terminali (eth0 in caso contrario)
Se in fase di avvio compare “nfs warning: server not responding” mettere nel file /etc/dhcp3/dhcp.conf le linee:
option option-128 e4:45:74:68:00:00; option option-129 “MOPTS=nolock,ro,wsize=2048,rsize=2048";
http://wiki.ltsp.org/twiki/bin/view/Ltsp/NFS#NFS_Server_not_responding
Dispositivi locali
Per consentire all'utente di utilizzare i dispositivi locali quali Floppy,CD, usb-disk, seguire le indicazioni fornite al link http://wiki.ltsp.org/twiki/bin/view/Ltsp/LTSP-42-LocalDev riassunte di seguito: Verificare che nel file /etc/dhcp3/dhcp.conf sia presente l'opzione
get-lease-hostnames true;
nel caso di assegnazione dinamica dell'host, oppure l'opzione
use-host-decl-names on;
in caso contrario, ovvero quando nel file di configurazione sono presenti le sezioni host {}.
Installare il supporto per il file system nello userspace:
apt-get install fuse-utils libfuse2 modprobe fuse
Creare gli utenti autorizzati ad utilizzare risorse locali facendoli appartenere al gruppo fuse:
adduser nome_utente fuse
Installare le librerie X11 di supporto per il perl:
aptitude install libx11-protocol-perl
Scaricare il supporto per i dispositivi locali al link http://wiki.ltsp.org/twiki/bin/view/Ltsp/LTSP-42-LocalDev-DebianEtch (riferimento Download Sarge deb). Scompattare il file scaricato con il comando:
dpkg -x ltsp-server-pkg-debian_0.1_i386.deb tempdir cd tempdir
Copiare le seguenti parti dal pacchetto scompattato al sistema:
cp ./etc/X11/Xsession.d/51lbus-start /etc/X11/Xsession.d/ cp ./usr/sbin/lbus_event_handler.sh /usr/sbin/ cp ./usr/sbin/ltspfs /usr/sbin/ cp ./usr/sbin/lbussd /usr/sbin/ cp ./etc/ltsp-localdev.conf /etc/
Nel file /opt/lts/i386/etc/lts.conf inserire nella sezione [Default] la linea:
LOCAL_STORAGE = Y
Se si avvia da floppy il terminale è opportuno non permetterne l'accesso all'utente commentando la linea:
KERNEL=="fd[0-9]*", RUN+="/etc/udev/scripts/ltsp-device.sh"
nel file /opt/ltsp/i386/etc/udev/rules.d/15-ltsp-block.rules
Non esiste il supporto ufficale per gli Audio CD. Per discutere possibili soluzioni ed eventuali sviluppi consultate LtspAudioCd.
Avviare i terminali
PXE
Le schede di rete recenti hanno il supporto PXE, ovvero permettono l'avvio del computer direttamente dalla rete; per attivare questa opzione è necessario impostare il BIOS in modo tale che la prima modalità di avvio sia “Boot from LAN”. Nel file di configurazione del dhcp fare riferimento al kernel di avvio pxelinux.0 (vedere in seguito il file dhcpd.conf).
Creare un floppy di avvio
Per le schede di rete che non hanno il supporto PXE possiamo preparare un floppy di avvio. Prima di effettuare questa operazione è necessario conoscere, per ogni terminale, il tipo di scheda di rete disponibile; spesso è sufficiente rilevare le scritte sul chip principale per ricavare questa informazione (ad. Esempio RTL8139B)
Collegatevi al sito: http://www.rom-o-matic.net/ selezionate l'ultima release di produzione selezionate il tipo di adattatore di rete desiderato e scaricatelo copiate l'immagine scaricata su un floppy formattato e privo di errori
Esempi:
per un adattatore del tipo RTL8139B è necessario scaricare l'immagine “rtl8139:rtl8139b”
per un adattatore del tipo RTL8029 è necessario scaricare l'immagine “ns8390:rtl8029”
ed eseguire il comando:
dd if=eb-5.4.1-rtl8139.zdsk of=/dev/fd0
oppure:
dd if=eb-5.4.1-ns8390.zdsk of=/dev/fd0
per creare il floppy di avvio, dove eb-5.4.1-rtl8139.zdsk e eb-5.4.1-ns8390.zdsk sono i file immagine scaricati nei due esempi.
Se avete un adattatore di rete di tipo ISA (ad.es. NE2000) consigliamo di scaricare l'immagine floppy di avvio che si trova nella versione ltsp 5.3.2 ed in particolare "ne - drivers/net/ns8390" (eb-5.3.2-ne.zdsk).
Come riconoscere il MAC Address dell'adattatore di rete
Nel file di configurazione dhcpd.conf compare il MAC address della scheda di rete del terminale, per ottenere questa informazione è sufficiente procedere come segue: avviare, con il floppy di avvio o con PXE, il terminale; rilevare il MAC address visualizzato sul monitor (è un numero del tipo 00:0F:FE:18:50:65) completare il file dhcpd.conf come indicato in seguito.
Swap
Se si utilizzeranno terminali forniti di poca memoria è opportuno prevedere lo spazio di swap (memoria virtuale). Con ltsp 4.2 è fornito il kernel 2.6 ed è necessario configurare il meccanismo Swap over NBD (Network Block Device) eseguendo i comandi:
echo ARGS=\"-z 128mb -s /var/spool/ltspswap\" >> /etc/default/ltspswapd mkdir /var/spool/ltspswap
dove 128 rappresenta la dimensione dello spazio di swap (in MB) riservato. È necessario quindi predisporre il sistema per avviare il servizio al boot con il seguente comando:
update_rc.d -f ltspswapd defaults
Infine per configurare il client per l'uso dello swap over NBD aggiungere la linea
USE_NBD_SWAP = Y
nella sezione [Default] del file /opt/ltsp/i386/etc/lts.conf sul server per abilitarlo su tutti i client, oppure nelle sezioni relative ai client che utilizzano lo swap. Al riavvio del teminale è creato un file di swap nella directory /var/spool/ltspswap della dimensione specificata nel file /etc/default/ltspswapd.
Facciamo notare che per il supporto ltspswapd devono essere installati i dispositivi locali di cui sopra.
File di configurazione utilizzati
File /opt/lts/i386/etc/lts.conf
# # Copyright (c) 2003 by James A. McQuillan (McQuillan Systems, LLC) # # This software is licensed under the Gnu General Public License. # The full text of which can be found at http://www.LTSP.org/license.txt # # # Config file for the Linux Terminal Server Project (www.ltsp.org) # [Default] SERVER = 192.168.100.100 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 USE_NBD_SWAP = Y LOCAL_STORAGE = Y # [ws001] XSERVER = vesa X_MODE_0 = 800x600 X_COLOR_DEPTH = 16 XkbModel = "pc105" XkbLayout = "it" SCREEN_01 = startx SCREEN_02 = shell SCREEN_03 = rdesktop -f 192.168.100.150 # [ws002] XkbModel = "pc105" XkbLayout = "it" SCREEN_01 = startx SCREEN_02 = shell SCREEN_03 = rdesktop -f 192.168.100.150 # [ws003] XkbModel = "pc105" XkbLayout = "it" # # esempio di utilizzo mouse seriale [ws004] X_MOUSE_PROTOCOL = "Microsoft" X_MOUSE_DEVICE = "/dev/ttyS1" X_MOUSE_RESOLUTION = 50 X_MOUSE_EMULATE3BTN = Y XkbModel = "pc105" XkbLayout = "it"
La linea SCREEN_01 = STARTX permette di avviare una sessione Gnome
La linea SCREEN_02 = shell permette di avviare uno shell testuale.
La linea SCREEN_03 = rdesktop -f 192.168.100.150 permette di avviare una sessione terminal-server con un sistema Windows avente indirizzo IP 192.168.100.150 (si ricorda che in questo caso è necessario disporre delle CAL (Client Access License) per l'accesso al server Windows).
Una volta avviato il terminale si commuta da una sessione all'altra premendo le composizioni di tasti Ctrl+Alt+F1...F3.
File /etc/dhcp3/dhcpd.conf
#########
# dhcp dinamico dodo 20/01/2007
#
## Inizio
#
next-server 192.168.100.100; # <--Change IP
ddns-update-style none;
default-lease-time 21600;
max-lease-time 21600;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.100.255; # <--Change IP
option routers 192.168.100.100; # <--Change IP
option domain-name-servers 192.168.100.100; # <--Change IP
option domain-name "ltsp"; # <--Accept/Change
option root-path "192.168.100.100:/opt/ltsp/i386"; # <--Change IP
option option-128 code 128 = string;
option option-129 code 129 = text;
#
shared-network WORKSTATIONS {
subnet 192.168.100.0 netmask 255.255.255.0 { # <--Change IP
range dynamic-bootp 192.168.100.101 192.168.100.110; # <--Change 2 IP's
get-lease-hostnames true;
option log-servers 192.168.100.100; # <--Change IP
if substring (option vendor-class-identifier, 0, 9) = "PXEClient"
{
filename "/lts/2.6.16.1-ltsp-2/pxelinux.0"; #<--Check version
}
else
{
filename "/lts/vmlinuz-2.6.16.1-ltsp-2"; #<--Check version
option option-128 e4:45:74:68:00:00;
option option-129 "MOPTS=nolock,ro,wsize=2048,rsize=2048";
}
}
}
### Fine
File /etc/exports
# # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). ## LTSP-inizio ## # # The lines between 'LTSP-begin' and 'LTSP-end' were added # on: Fri Sep 30 13:03:35 2005, by the ltspcfg configuration tool. # For more information, visit the LTSP homepage # at http://www.LTSP.org # /opt/ltsp-4 192.168.100.0/255.255.255.0(ro,no_root_squash,sync) /var/opt/ltsp/swapfiles 192.168.100.0/255.255.255.0(rw,no_root_squash,async) ## LTSP-Fine ##
File /etc/hosts
127.0.0.1 localhost 192.168.100.100 ltsp-server # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts ## LTSP-begin ## # # The lines between 'LTSP-begin' and 'LTSP-end' were added # on: Fri Sep 30 13:03:23 2005, by the ltspcfg configuration tool. # For more information, visit the LTSP homepage # at http://www.LTSP.org # 192.168.100.101 ws001.ltsp ws001 192.168.100.102 ws002.ltsp ws002 192.168.100.103 ws003.ltsp ws003 192.168.100.104 ws004.ltsp ws004 192.168.100.105 ws005.ltsp ws005 192.168.100.106 ws006.ltsp ws006 192.168.100.107 ws007.ltsp ws007 192.168.100.108 ws008.ltsp ws008 192.168.100.109 ws009.ltsp ws009 192.168.100.110 ws010.ltsp ws010 ## LTSP-end ##
File /etc/host.allow
# /etc/hosts.allow # ## LTSP-begin ## # # The lines between 'LTSP-begin' and 'LTSP-end' were added # on: Fri Sep 30 13:03:29 2005, by the ltspcfg configuration tool. # For more information, visit the LTSP homepage # at http://www.LTSP.org # bootpd: 0.0.0.0 in.tftpd: 192.168.100. portmap: 192.168.100. ## LTSP-end ##
Riferimenti
http://wiki.ltsp.org/twiki/bin/view/Ltsp/Debian
http://wiki.ltsp.org/twiki/bin/view/Ltsp/LTSP-42-LocalDev
http://wiki.ltsp.org/twiki/bin/view/Ltsp/LTSP-42-LocalDev-DebianEtch

