Cuinant LTSP a l’IES Politècnic de Palma



Castellano
(1)

Quan vaig arribar, com a professor, a l’IES Politècnic de Palma(2), la meva aula comptava amb un grapat d’ordinadors antics (Pentium 100MHz) i un parell d’ordinadors potents (Pentium IV), tots ells connectats en xarxa. Aquest escenari donava molts problemes degut principalment als seus ingredients:

  • Un Hardware molt antic,
  • Molts usuaris per a un Sistema Operatiu monousuari (win98).

El primer que vaig pensar va ser afegir un nou ingredient: GNU/Linux(3), però vaig suposar que no tots els usuaris estarien contents del canvi. Com podria introduir GNU/Linux a la taula sense molestar a ningú? Semblava una tasca impossible…

Un any i mig després he aconseguit fer correr tots els ordinadors amb Debian(4) GNU/Linux (Sarge) i win2000 simultàniament, amb més potència, menys manteniment, i tot això per un cost pràcticament nul. Idò!.

1. El secret de la recepta
El secret de la recepta consisteix en aprofitar la xarxa existent per a construir un sistema basat en Servidor de Terminals: els ordinadors de poca potència (terminals) es connecten a un ordinador potent (servidor) per a aprofitar-ne els recursos. El més sorprenent és que aquests terminals no necessiten disc dur donat que es descarreguen el nucli per xarxa, i aquest fa la resta.
Realment, això dels terminals no és nou a GNU/Linux, però existeix un projecte (entre d’altres) de software lliure anomenat LTSP(5) que ens facilita enormement tot el procés d’instal·lació.
Aquest article narra la meva experiència personal amb LTSP a l’IES Politècnic de Palma, i no preten substituir la documentació de LTSP. Així doncs, vos convit a donar ullada a la seva web(5) per completar la informació d’aquest article.

2. Avantatges d’un sistema basat en Servidor de Terminals (LTSP)
Econòmic

  • Com a terminal, es pot reciclar (o millor dit reutilitzar) qualsevol PC antic (desde 486 a 66MHz i 16MB de RAM),
  • LTSP i GNU/Linux són software lliure, per tant el software representa cost zero.
  • Els ordinadors, al no utilitzar disc dur, consumeixen menys.

Simple
Només s’ha de mantenir un sol Sistema Operatiu: el del servidor. Per exemple:

  • Si instal·lam una nova aplicació al servidor, aquesta estarà disponible a tots els terminals,
  • si feim una copia de seguretat del servidor, esteim salvant tot el sistema,
  • etc.

Potent
La potència dels terminals es multiplica, donat que utilitzen els recursos del servidor.
Robust

  • Els ordinadors (terminals) s’espatllen menys al no tenir disc dur (els terminals es poden apagar en calent).
  • L’accés a les dades i a la configuració dels ordinadors estan restringits per tractar-se d’un S.O. multiusuari.

Flexible

  • El sistema permet que l’usuari pugui utilitzar GNU/Linux i win2000 simultàniament, o fins i tot arrencar des de disc dur (per exemple amb win98).
  • Afegir un nou terminal és tan simple com connectar-lo a la xarxa sense necessitat d’instal·lar el sistema operatiu.

Fàcil
Els equips antics no s’han de modificar, per tant la instal·lació del sistema no comporta interrompre el funcionament actual de les aules.
Innovador
Els usuaris tenen l’oportunitat de tenir contacte amb GNU/Linux, un S.O. de qualitat i cada vegada més emprat.
Silenciós
Si utilitzam Thin Clients com a terminals, la xarxa serà més silenciosa. Els Thin Clients són ordinadors sense unitats locals i que, per tant, tenen un consum molt baix, s’escalfen menys, i poden prescindir dels sorollosos ventiladors.

3. Funcionament
Tinguent com a punt de partida un conjunt terminals i un servidor, tots ells connectats en xarxa, el procés que segueix un terminal per engegar és el següent:
D’on venim?
El primer que necessita un terminal per engegar és un nucli que pot aconseguir de diferents formes. Una d’elles és un petit programa anomenat etherboot(6), gravat a un disquet o a una E2PROM insertada a la targeta de xarxa (existeixen altres mètodes que podeu consultar a la documentació de LTSP). Així doncs:

  • El terminal, abans de saltar al disc dur, executa el programa etherboot, i aquest cerca un servidor DHCP per aconseguir una IP i la ruta a un nucli,
  • El mateix etherboot es baixa el nucli des de la ruta indicada mitjançant el protocol TFTP, el carrega a la memòria i l’executa.

Qui soc?
Efectivament. Ara, el terminal necessita una identitat per poder interactuar dins de la xarxa. Per tant, un cop engegat el nucli, el terminal torna a sol·licitar una IP i un hostname a un servidor DHCP (donat que etherboot ja no corre a la màquina).
On és casa meva?
El terminal també necessita una sistema de fitxers. Això ho aconsegueix muntant, a la seva arrel de sistema (/), un sistema de fitxers ubicat en un servidor NFS.
Que puc oferir?
A partir d’aquest moment, el terminal pot oferir quatre tipus de sessió diferents:
Shell
Consisteix en una consola local (en el terminal) com a administrador. És útil per fer manteniment i proves. La potència està limitada a la del terminal.
Telnet
El terminal es connecta a un servidor TELNET de la xarxa per obtenir una consola a aquesta màquina.
Startx
El terminal es connecta a un servidor XDMCP de la xarxa per obtenir una sessió gràfica a aquesta màquina (GNU/Linux).
Rdesktop
El terminal es connecta a un servidor RDP de la xarxa per obtenir una sessió gràfica a aquesta màquina (win2000).
En tots els casos, s’enten que l’usuari s’haurà d’autentificar a la màquina remota (servidor). A partir d’aquest moment l’usuari del terminal utilitzara directament els recursos del servidor, com si fos al mateix servidor. En poques paràules, el terminal serà com un monitor, un teclat i un ratolí més del servidor. Això implica que els terminals augmenten el seu potencial considerablement
El més interessant és que l’usuari del terminal pot canviar entre sessions sense necessitat de reiniciar, sencillament polsant una combinació de tecles.
Els servidors
Cal notar que tots aquests servidors (DHCP, TFTP, NFS, XDMCP, TELNET) poden estar concentrats en una mateixa màquina, o distribuits. Personalment, pens que el més sencill és que estiguin concentrats, però dependrà de l’aplicació que cerquem. D’altra banda, si volem que el terminal es connecti a una màquina win2000, la nostra xarxa també haurà de tenir un d’aquests servidors.

4. Ingredients
Aquest és l’equipament que vaig utilitzar a l’IES Politècnic. Si voleu saber l’equipament mínim necessari, podeu consultar la documentació de LTSP(5). La lletra negreta indica material que s’ha comprat; la resta ja es tenia.
Hardware

  • 10 Pentium 100MHz, amb 32MB de RAM.
  • 1 Pentium IV 1800MHz, amb 1GB de RAM, 40GB de disc dur i targeta de xarxa 100Mbps(servidor GNU/Linux).
  • 1 Pentium IV 1800MHz, amb 1GB de RAM, 40GB de disc dur i targeta de xarxa 100Mbps(servidor win2000).
  • 10 Targetes de xarxa a 100Mbps, un switch a 100Mbps i cablejat de xarxa (UTP).
  • 10 E2PROM

Software

  • Debian GNU/Linux (Sarge) amb el sistema base i els següents servidors instal·lats: DHCP, TFTP, NFS, X i XDMCP.
  • Software de LTSP-4.1
  • Etherboot

5. Preparació
Servidor (GNU/Linux)
Punt de partida: sistema base de Debian GNU/Linux Sarge amb el servidor X instal·lat (apt-get install x-window-system).
DHCP (Dynamic Host Configuration Protocol)
Un servidor DHCP és aquell que s’encarrega d’assignar les adreces d’una xarxa TCP/IP de forma centralitzada, i sobre demanda. Té dues formes de fer-ho: dinàmica i estàtica.
Instal·lació
#apt-get install dhcp
Configuració
Per l’aplicació que desitgem, farem servir assignació estàtica: el servidor assigna una IP a cada màquina que la sol·licita segons la seva adreça física. Addicionalment, el servidor DHCP també pot indicar la ruta al nucli que s’ha de descarregar el sol·licitant. Així, el fitxer de configuració del servidor DHCP (/etc/dhcpd.conf) contindrà tants parells adreça_física/adreça_IP com terminals tingui la xarxa:

.
.
.
group {                                                   # grup d’ordinadors
    filename    “/tftpboot/lts/vmlinuz-2.4.26-ltsp-2”;    # ruta al nucli

    host pc01 {                                           # nom del terminal
        hardware ethernet   00:80:5A:23:D9:67;            # adreça física
        fixed-address      192.168.1.11;                  # adreça IP
    }
    .
    .
    .
    host pc09 {
        hardware ethernet    00:80:5A:23:59:B2;
        fixed-address        192.168.1.19;
    }
}
.
.
.

Finalment, reiniciam el servidor DHCP:
#/etc/init.d/dhcp restart
Per més informació podeu consultar un exemple del fitxer /etc/dhcpd.conf, al final d’aquest article.
TFTP (Trivial File Transfer Protocol)
Un servidor TFTP és aquell que serveix fitxers a través d’un xarxa TCP/IP a l’estil d’un servidor FTP, però sense autentificació.
Instal·lació
#apt-get install tftp
Configuració
L’únic que hem de configurar és l’arrel del servidor. És a dir, la ruta des d’on servirà els fitxers (/tftpboot en el cas de LTSP). Aquest servei s’engega des del inet superserver, per tant hem de modificar el fitxer /etc/inetd.conf per que contengui la següent línia (l’opció -s indica que les peticions dels terminals seran relatives a aquest directori):
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd -s /tftpboot
Finalment, reiniciam el Internet superserver:
#/etc/init.d/inetd restart
NFS (Network File System)
Un servidor NFS és aquell que exporta un determinat directori local a altres màquines de la xarxa.
Instal·lació
#apt-get install nfs-kernel-server
Configuració
En el cas que ens ocupa, volem exportar el que serà l’arrel del sistema de fitxers dels terminals. Per tant, hem de modificar el fitxer /etc/exports per que contengui la següent línia:
/opt/ltsp    192.168.1.0/255.255.255.0(ro,no_root_squash,sync)
A més, hem d’actualitzar la base de dades de resolució de noms (/etc/hosts) segons els hosts llistats al servidor DHCP (el servidor NFS no confia en peticions de IP’s sense resoldre):

.
.
.
PC01 192.168.1.11
.
.
.
PC09 192.168.1.19
.
.
.

Finalment, reiniciam el servidor NFS:
#/etc/init.d/nfs-kernel-server restart
XDMCP (X Display Manager Control Protocol)
XDMCP és un protocol que permet a un usuari establir una connexió gràfica remota (és a dir, connexions des de terminals X). L’usuari que s’autentifiqui al terminal X, entrarà directament a utilitzar els recursos del servidor, com si fos al mateix servidor.
Instal·lació
Existeixen diferents dimonis que implementen el protocol XDMCP: l’estandard del x-window-system (xdm), o els seus homòlegs amb les llibreries GTK i QT (gdm i kdm). Qualsevol d’ells ens serveix.
#apt-get install gdm
Configuració
Editar el fitxer /etc/gdm/gdm.conf i activar XDMCP:

.
.
.
[xdmcp]
Enable = true
.
.
.

Finalment, reiniciar el servidor XDMCP:
#/etc/init.d/gdm restart
Terminals
Curiosament el software dels terminals s’instal·la i es configura al servidor. No pot esser d’altra manera, donat que els terminals no tenen disc dur. L’única peça de software que s’instal·la als terminals és aquell petit programa del que hem parlat: etherboot. La resta, és a dir, el nucli i el sistema de fitxers dels terminals s’instal·len al servidor.
LTSP (versio 4.1)
El software de LTSP precisament ens proporciona el nucli i el sistema de fitxers dels terminals.
Instal·lació
Existeixen dues formes de instal·lar LTSP: internet i cdrom. En aquest article s’utilitza internet, si vols més informació consulta la documentació de LTSP(5).
T’has de baixar els ltsp-utils de la web de LTSP(5) i descomprimir-los (tar -xzf ltsp-utils-0.11.tgz). Després executar l’administrador de LTSP (./ltsp-utils/ltsp-admin) com a root (su -). Obtindrás el següent menu:

  • Instal·lar LTSP
  • Configurar instal·lador
  • Configurar LTSP
  • Si no tenim cap versió de LTSP ja instal·lada al servidor, no serà necessari seguir el pas 2. Així, sel·lecciona el pas 1 i, per curar-te en salut, instal·la-ho tot. El pas 3 ens el saltam donat que aquesta eina no està acabada i és millor fer les coses manualment.
    Una vegada instal·lat, podrem comprovar que el sistema de fitxers dels terminals ha quedat a /opt/ltsp/i386/ i que el nucli del sistema a /tftpboot/ltsp/.
    Configuració
    La configuració dels terminals (/opt/ltsp/i386/etc/lts.conf) consisteix en assignar a cada terminal diferents paràmetres com el driver de la targeta gràfica, el port del ratolí, el mapa de teclat, etc. Però potser el paràmatre més interessant és l’assignació de les sessions que els terminals iniciaran al estar engegats. Com hem dit, existeixen quatre tipus de sessió:

    • shell
    • telnet
    • startx
    • rdesktop

    Un terminal pot tenir tantes sessions com vulgui dels tipus anteriors. Sencillament podrà canviar d’una sessió a una altra polsant un conjunt de tecles. La forma d’indicar les sesions desitjades al fitxer de configuració és la següent:

    SCREEN_01 = startx “IP servidor XDMCP”
    SCREEN_02 = rdesktop -k es “IP servidor RDP”
    SCREEN_03 = shell
    SCREEN_04 = telnet “IP servidor TELNET”

    Així, per canviar entre sessions polsarem les tecles CTRL-ALT-Fn, on n és el nombre de SCREEN corrensponent.
    També s’ha de dir que el fitxer lts.conf s’organitza per seccions: la secció [default] que afecta a tots els terminals i una secció (opcional) per cada terminal que tindrà per nom el hostname del terminal en questió.
    Per més informació consultar l’exemple del fitxer de configuració de /opt/ltsp/i386/etc/lts.conf, al final d’aquest article.
    Etherboot
    Recordem que l’unic software que necessiten els clients és el petit programa (etherboot + drivers targeta de xarxa)que podem emmagatzemar-lo de varies formes, entre elles tenim un disquet o un xip E2PROM. A la web www.rom-o-matic.net(7) trobareu una eina que automatitza la compilació de etherboot per diferents drivers de targeta de xarxa. Per tant:
    Disquet
    Ideal mentre el sistema està en fase de proves, donat que és molt fàcil de gravar. Has d’anar a www.rom-o-matic.net(7) i baixar-te una imatge del programa etherboot amb el teu driver de targeta de xarxa (imatge per a floppy). Inserta un disquet de 3.5 i volca-hi la imatge (com a root):
    #cat nom-fitxer.zrom > /dev/fd0
    Xip E2PROM (o FLASH)
    Recomenable quan el sistema s’ha acabat d’instal·lar, ja que s’evita tenir que distribuir els disquets abans de cada sessió, recollir-los quan s’acaba i conservar-los entre sessions (i de vegades trobar-los). En aquest cas és necessari un gravador de E2PROM que podràs trobar a una tenda d’electrònica (i un borrador si t’equivocas i no vols tirar la E2PROM). Personalment, vaig tenir molts problemes amb diferents targetes de xarxa. Finalment, a base de fer proves, vaig trobar unes targestes de xarxa i unes E2PROM que funcionen segur (i no hi tenc comissió):

    • Targeta:    RTL8139 de conceptronics
    • E2PROM:     27C512

    Es tracta doncs, de que et baixis una imatge del programa etherboot amb al teu driver de targeta de xarxa (imatge per a eprom) de la web www.rom-o-matic.net(7), i el “cremis” a la E2PROM.
    Servidor win2000
    En aquest article no explicarem com instal·lar un servidor win2000. Només comentar que és necessari un win2000/2003 server amb el component Terminal Server instal·lat.
    Altres aplicacions
    Als servidors també se’ls hi pot afagir software o hardware. De fet, hem d’afagir tot el software o hardware que desitjam disponible als terminals. En el meu cas, tinc:

    • Software d’escriptori (GNOME) i cents d’aplicions, al servidor GNU/Linux.
    • Impressora connectada al servidor GNU/Linux disponible als seus usuaris, també disponible als usuaris de la màquina Win2000 mitjançant Samba.

    6. Proves
    Un cop tots els servidors estan configurats i reiniciats, engega un dels terminals amb el disquet insertat. La sequencia es la seguent:

    • Càrrega del programa etherboot a la RAM i execució. Aquí el programa et demana si vols arrencar per xarxa (N) o continuar amb l’engegada normal (Q). Pulsa N.
    • Si tot està ben configurat el terminal rebrà una IP, es començarà a descarregar el nucli i l’executarà.
    • Muntarà el sistema de fitxers.
    • Engegarà les X i connectarà al servidor Telnet, XDMCP, o RDP (win2000); o es quedarà en consola local, depenent de la configuració del terminal (lts.conf).
    • Cal recordar, que per canviar de connexió només haurem de pulsar la combinació de tecles CTRL-ALT-Fn, on n és el nombre de SCREEN indicat al fitxer lts.conf.

    A la documentació de LTSP(5) trobareu una bona guia de solució de problemes.

    7. Línies futures
    Com hem vist, LTSP ens ajuda a augmentar la potència dels ordinadors vells i a reduir el manteniment del conjunt. També hem comprovat que podem aconseguir una bona integració GNU/Linux-win mitjançant Samba. Però aquesta integraciò encara es pot millorar, donat que els usuaris d’aquesta xarxa s’han de crear dues vegades: una a cada sistema (o servidor). Una forma de solucionar-ho és instal·lant un servidor LDAP (OpenLDAP(8)). D’aquesta forma, un usuari creat al servidor LDAP tindrà accés als dos sistemes operatius automàticament. Però això és una altra recepta…
    Altres Receptes

    • Projecte Terminales(9). Hi ha bona documentació i exemples sobre LTSP i PXES.
    • Clients lleugers a l’escola(10). Un article similar a badopi, pero fent servir PXES en comptes de LTSP.
    • Projecte PXES(11). La pàgina oficial.
    • Skolelinux(12). Projecte noruec que ofereix una distribució basada en debian, orientada a les escoles.

    Apèndix
    Bugs (LTSP-4.1)
    Aquests són els bugs que em vaig trobar en aquesta versió, i que probablement seran solucionats en versions posteriors.
    XKB Error
    LTSP 4.1 corre Xorg, mentre que Debian Sarge corre XFree. Això provoca el següent error, quan un usuari inicia una sessió via XDMCP:

    Error activating XKB configuration.
    Probably internal X server proublem.
    X server version data:
    The X.Org Foundation
    60801099
    If you report this situation as a bug, please include:
    – The result of xprop -root | grep XKB
    – The result of gconftool-2 -R /desktop/gnome/peripherals/keyboard/xkb

    Això, es pot solucionar creant dos enllaços simbòlics:

    #ln -s /etc/X11/xkb/rules/xfree86 /etc/X11/xkb/rules/xorg
    #ln -s /etc/X11/xkb/rules/xfree86.lst /etc/X11/xkb/rules/xorg.lst

    Problemes amb el teclat en español
    La aplicació rdesktop de LTSP està compilada amb un ruta als mapes de teclat que no concorda amb la real (ruta compilada: /opt/ltsp/i386/usr/local/ …, ruta real: /opt/ltsp/i386/usr/ …). Això provoca que la opció “-k es” de rdesktop sigui ignorada, i per tant els terminals que es connecten a una màquina win2000 són forçats a utilitzar el teclat en anglés. Una solució consisteix en crear un enllaç simbòlic en el directori /opt/ltsp/i386/usr/:
    #ln -s . ./local
    Exemples de fitxers de configuració
    /etc/dhcpd.conf

    default-lease-time 21600;
    max-lease-time 21600;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.1.255;
    option routers 192.168.1.1;
    option domain-name-servers 195.235.113.3, 194.175.1.100;
    option domain-name “dominio”;
    option root-path “192.168.1.10:/opt/ltsp/i386”;
    subnet 192.168.1.0 netmask 255.255.255.0 {
        use-host-decl-names on;
        option log-servers 192.168.1.10;
        group {                                                   # grup d’ordinadors
            filename    “/tftpboot/lts/vmlinuz-2.4.26-ltsp-2”;    # ruta al nucli
        
            host pc01 {                                           # nom del terminal
                hardware ethernet   00:80:5A:23:D9:67;            # adreça física
                fixed-address      192.168.1.11;                  # adreça IP
            }
            .
            .
            .
            host pc09 {
                hardware ethernet    00:80:5A:23:59:B2;
                fixed-address        192.168.1.19;
            }
        }
    }

    /opt/ltsp/i386/etc/lts.conf

    [Default]
      SERVER = 192.168.1.180
      XSERVER = auto
      X_HORZSYNC = “31-40”
      X_VERTREFRESH = “55-65”
      XkbLayout = “es”
      XkbSymbols = “es(pc105)”
      X_MOUSE_PROTOCOL = “microsoft”
      X_MOUSE_DEVICE = “/dev/ttyS0”
      X_MOUSE_RESOLUTION = 400
      X_MOUSE_BUTTONS = 2
      USE_XFS = N
      SCREEN_01 = startx
      SCREEN_02 = rdesktop -k es 192.168.1.200
      #SCREEN_03 = shell

    [pc01]
      X_MOUSE_DEVICE = “/dev/psaux”
      X_MOUSE_PROTOCOL = “PS/2”

    [pc03]
      X_MOUSE_DEVICE = “/dev/psaux”
      X_MOUSE_PROTOCOL = “PS/2”

    [pc10]
      X_MOUSE_DEVICE = “/dev/psaux”
      X_MOUSE_PROTOCOL = “PS/2”

    Bon Profit!Lista de enlaces de este artículo:

  • http://internostrum.com/navegar.php?direccio=ca-es
  • http://www.iespolitecnic.com
  • http://www.gnu.org
  • http://www.debian.org
  • http://www.ltsp.org
  • http://etherboot.sourceforge.net/
  • http://www.rom-o-matic.net
  • http://www.openldap.org
  • http://terminales.hispalinux.es/tiki-index.php
  • http://badopi.org/clients-lleugers-escola
  • http://pxes.sourceforge.net/
  • http://www.skolelinux.no/
  • Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=2195 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.


    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.