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. Immagine:Ltsp1.png

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

Immagine:Task.JPG

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].

Immagine:ltsp_configure0.JPG

(10) In seguito, _1 "Show the status of all services" digitando [S]. Alcuni di questi servizi saranno avviati nei prossimi passi.

Immagine:ltsp_configure1.JPG

_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.

Immagine:ltsp_configure2.JPG

_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:

Immagine:ltsp_configure3.JPG

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://www.ltsp.org

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

http://www.osservatoriotecnologico.net/reti/howto.htm

Personal tools