You are on page 1of 12

INTRODUCCIÓN

A medida que avanza la tecnología nosotros queremos avanzar con ella y dejar a
un lado esos aparatos viejos que consideramos ya “Pasados de moda”. Pero si
nos detenemos a pensar que uso podríamos dar a estos aparatos que ocupan un
espacio en nuestro lugar destinado a lo que nos estorba seria una reutilización que
quizá podrá servir a otros y para esto existen proyectos súper interesantes y uno
de ellos es LTSP, pero veamos que es esto.
LTSP “Linux Terminal Server Project”

Es un conjunto de herramientas de tipo servidor que provee una manera simple de


utilizar maquinas de bajo costo como estaciones de trabajo en modo gráfico o en
modo de caracteres.
Principalmente fue utilizado para proyectos escolares, pero debido a sus altas
prestaciones es hoy en día una solución muy rentable para negocios y
organizaciones.

Esquema del entorno de clientes livianos “Thinclient”

Funcionamiento del Servidor LTSP

El cliente arranca ("bootea") mediante un protocolo llamado PXE (Pre-eXecution


Environment).
PXE realiza una petición de dirección IP al servidor DHCP local.
El servidor DHCP envía los parámetros adicionales al cliente y baja una imagen
del sistema de archivos Linux vía TFTP a un disco RAM dentro del cliente.
El cliente arranca la imagen bajada de Linux, detecta el hardware y se conecta a
una sesión X del servidor LTSP (normalmente administrada con LDM).

Proceso de Arranque del Cliente Liviano ThinClient

Cargar el kernel de Linux en la memoria RAM del cliente. Esto se hace mediante
PXE.
Una vez que el kernel ha sido cargado en la memoria, comenzará la ejecución.
El núcleo inicializa todo el sistema y los periféricos que reconozca.
Aquí es donde lo realmente interesante comienza. Durante el proceso de carga del
núcleo, una imagen initramfs también será cargada en la memoria.
Normalmente, cuando el núcleo ha terminado de arrancar, se pondrá en marcha el
nuevo task launcher upstart, que se encargará de la puesta en marcha de un
servidor o una estación de trabajo. Pero, en este caso, se ha instruido al kernel
para que cargue un pequeño shell script en su lugar. Este script se llama /init, y
reside en la raíz de initramfs.
El script /init empieza por montar /proc y /sys, arranca udev para descubrir e
inicializar el hardware, especialmente la tarjeta de red, que es necesaria en todo
aspecto para arrancar de aquí en adelante. También, crea un pequeño disco en
RAM, donde se puede guardar cualquier cosa que se necesite, por ejemplo, para
configurar el archivo xorg.conf.
Se configura la interfaz de loopback de la red. Esta la que tiene 127.0.0.1 como
dirección IP.
Se corre un cliente DHCP llamado ipconfig para hacer otra consulta al servidor
DHCP Esta nueva consulta obtiene información tal como el nfs root server, el
default gateway y otros parámetros importantes del sistema del archivo
dhcp.conf
Cuando ipconfig obtiene una respuesta del servidor, la información que se recibe
se usa para configurar la interfaz Ethernet y para determinar desde que servidor
se va a montar el root.
Hasta este momento el sistema de directorio ha sido un disco ram. Ahora el script
/init montará un nuevo sistema de directorio vía NFS. En el caso que sea vía
NBD, la imagen que será cargada será generalmente /opt/ltsp/images/i386.img.
Si la raíz es montada vía NFS, entonces el directorio que será exportado desde el
servidor es típicamente /opt/ltsp/i386. No es posible montar el nuevo sistema de
directorio como /, primero debe ser montado a un directorio separado. Luego hará
un run-init, que cambiará el sistema de directorio raíz actual por un nuevo sistema
de directorio. Cuando esta etapa se completa, el sistema de directorio quedará
montado en /. A esta altura, cualquier directorio que necesite ser creado o escrito
para un arranque normal , como por ejemplo /tmp, o /var, serán montados en este
momento.
Una vez que el proceso de montaje del nuevo sistema de directorios es finalizado,
el sistema ya no utiliza mas el script /init y se pasa a utilizar el verdadero programa
/sbin/init.
El programa init va a leer el directorio /etc/event.d y comenzará a configurar el
ambiente del cliente. A partir de aquí en el cliente se comienza a ejecutar el primer
comando de /etc/rcS.d.
Se ejecutará el comando S32ltsp-client-setup que configurará muchos aspectos
del ambiente del cliente, como por ejemplo chequear si los dispositivos locales
necesitan arranque, cargar algún módulo específico, etc.
A continuación el programa init va a comenzar a ejecutar comandos en el
directorio /etc/rc2.d
Uno de los items en el directorio /etc/rc2.d es el comando S20ltsp-client-core que
estará ejecutándose mientras que el cliente está arrancando.
El archivo lts.conf será parseado (analizado), y todos los parámetros en ese
archivo que correspondan con ese cliente fino serán definidos como variables de
ambiente para ser usadas por el script S20ltsp-client-core.
Si el sonido está configurado, el demonio pulseaudio será arrancado para permitir
conexiones remotas de audio desde el servidor para sonar en el cliente.
Si el cliente soporta dispositivos locales, el programa ltspfsd es ejecutado
permitiendo al servidor leer dispositivos como "memory sticks" o CDs mapeados
con el cliente.
En este momento alguna de las sesiones definidas en el archivo lts.conf será
ejecutada. Las sesiones por pantalla son lo que se va a ver en todas las pantallas
de sus terminales virtuales. Estas son las pantallas virtuales estándares que tienen
las distribuciones de GNU/Linux por ejemplo de Alt-F1, hasta Alt-F9. Por defecto
un "getty" estándar basado en caracteres va a correr en la pantalla 1
(SCREEN_01 en el archivo lts.conf ). También, si no se especifica nada en el
archivo lts.conf , una script de pantalla ldm va a ser ejecutado en SCREEN_07. El
LTSP Display Manager (ldm) es el administrador de login por defecto para LTSP.
Si SCREEN_07 (que es la terminal que corresponde al entorno grafico) esta
cargada con un valor ldm, o startx, entonces el sistema X Windows será
ejecutado, brindándole una interfaz gráfica de usuario. Por defecto el servidor
Xorg va a testear la tarjeta, va a crear un archivo /etc/X11/xorg.conf con valores
por defecto en el disco ram de la terminal y va a comenzar xorg con esa
configuración.
El servidor X va a crear un túnel cifrado ssh hacia el servidor, en caso de ldm, o
una consulta XDMCP al servidor LTSP, en el caso de startx. Para cualquiera de
los casos se va a ver una caja de login en la terminal.

Herramienta de Trabajo
Para este laboratorio se utilizo un equipo con sistema operativo Ubuntu 9.04, este
funcionara como servidor LTSP, además tiene dos interfaces de red (una cableada
y otra inalámbrica).
Por la interfaz cableada se conectan los clientes LTSP.
Por la interfaz inalámbrica se dará salida a internet a los clientes
Para los clientes se utilizaron maquinas que se tenían en el área de sistemas
donde laboro.
Paquetes Necesarios
Para implementar LTSP se necesita una serie de paquetes, pero como en Linux
esto de la descarga es tan fácil utilizando APT, lo haremos de la siguiente forma.
sudo apt-get update
Actualizamos la lista de paquetes, luego.
sudo apt-get install ltsp-server ltsp-server-standalone
ltsp-server: Este paquete contiene las herramientas para trabajar con el servidor
LTSP.
ltsp-server-standalone: Este paquete contiene las herramientas para construir el
entorno de los clientes livianos “Thinclients”.
nfs-kernel-server: El cliente lo utilizara para montar su propio sistema de archivos.
Los demas paquetes mencionados como tftp, dhcp, etc son descargados con el
paquetes ltsp-server-standalone
Cuando la descarga haya finalizado, las carpetas que nos ocuparan son
/var/lib/tftpboot/ltsp y /opt/ltsp.
La primera contiene la imagen del kernel que sera enviada por tftp a los clientes y
la segunda el sistema de archivos que sera montado en los clientes.

Empecemos!!!
Vamos a empezar por activar el demonio del servidor tftp de la siguiente forma,
con nuestro editor de texto vamos al archivo sudo vim /etc/default/tftpd-hpa. El
archivo sera igual o parecido a este.

#Defaults for tftpd-hpa


RUN_DAEMON="no"
OPTIONS="-l -s /var/lib/tftpboot"
y cambiamos el valor de RUN_DAEMOS=“no” a RUN_DAEMON=”yes”,
guardamos y reiniciamos el servidor tftp /etc/init.d/tftpd-hpa restart.
Continuamos ahora creando la imagen del kernel que sera enviada a los clientes
por medio de tftp. Ejecutamos el siguiente comando ltsp-build-client --arch i386,
el --arch es para especificar la arquitectura del kernel que se va a crear.

Nota: En este paso dependemos de nuestra conexión a internet (ancho de banda)


ya que descargara todos los componentes necesarios desde los repositorios que
estén en internet.
Si todo ha salido bien tendremos un mensaje como este “información: la
instalación del cliente LTSP se completó satisfactoriamente”
Ya con este paso finalizado, ahora podemos ver que en la carpeta /opt/ltsp/i386
hay un sistema de archivos creado el cual sera usado por nuestros clientes.
Ahora pasaremos a la configuración del servidor NFS para que los clientes puedan
acceder a los archivos y monten el sistema de archivos, con nuestro editor de
texto favorito editamos el archivo sudo vim /etc/exports. El archivo exports sera
igual o similar a este.

# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check)
hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
y agregamos la siguiente linea justo debajo del ultimo comentario
/opt/ltsp/i386 (ro,no_root_squash,async,no_subtree_check), a continuación
ejecutamos este comando sudo exportfs -ra, para que nfs vuelva a leer el archivo
exports y toma los cambios que hemos realizado.

Hasta el momento tenemos configurado el servidor tftp, creamos el ambiente del


cliente con ltsp-build-client y configuramos nuestro servidor nfs, ahora pasamos
a la configuración del que hará posible que el cliente arranque por medio de la red
y es nuestro servidor dhcp. Cuando descargamos el paquete ltsp-server-
standalone este descarga el servidor dhcp (dhcp3-server) a su vez descarga
un segundo archivo de configuración dhcpd.conf que es el ejemplo para
configuración de los clientes livianos, este archivo se encuentra en
/etc/ltsp/dhcpd.conf y sera igual o similar a este.
#
# Default LTSP dhcpd.conf config file.
#

authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {


range 192.168.0.20 192.168.0.250;
option domain-name "example.com";
option domain-name-servers 192.168.0.1;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
# next-server 192.168.0.1;
# get-lease-hostnames true;
option subnet-mask 255.255.255.0;
option root-path "/opt/ltsp/i386";
if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
filename "/ltsp/i386/pxelinux.0";
} else {
filename "/ltsp/i386/nbi.img";
}
}

Descomentamos las dos lineas resaltadas y empezamos a definir los parámetros


según sea nuestro criterio.
Nota: el parámetro next-server indica cual es el servidor tftp, si tuvieras este
servidor en otra maquina, coloca aquí su ip. Reemplazo el archivo original de
configuración del servidor dhcp por el que acabe de editar y reinicio el servidor
/etc/init/dhcp3 restart.
Ahora pasamos a la configuración de los clientes, el archivo lts.conf que se
encuentra en /opt/ltsp/i386/usr/share/doc/ltsp-client-core/examples es el que
contiene las opciones y características que tendrán los clientes, así que movemos
o copiamos este archivo a la carpeta /var/lib/tftboot/ltsp/i386/ y comenzamos a
adaptarlo según nuestra necesidad. Para el caso nuestro se realizaron las
siguientes adaptaciones para nuestros clientes.

[default]
X_COLOR_DEPTH=16
#XSERVER = vesa
#X_MODE_0 = 1024x768
LOCALDEV=True
SOUND=True
SYSLOG_HOST=server
XKBLAYOUT=es
SCREEN_07=ldm
SERVER =192.168.2.25
ALLOW_SHUTDOWN=true

[00:d0:b7:c0:06:71]
LDM_USERNAME=usuario1
LDM_PASSWORD=museo1
SCREEN_02 = shell
X_RAMPERC = 80
SOUND=TRUE
LOCALDEV=TRUE

[00:d0:b7:e5:98:59]
LDM_USERNAME=usuario2
LDM_PASSWORD=museo1
SCREEN_02 = shell
X_RAMPERC = 80
SOUND=TRUE
LOCALDEV=TRUE
[00:d0:b7:e5:9d:c8]
LDM_USERNAME=usuario3
LDM_PASSWORD=museo1
SCREEN_02 = shell
X_RAMPERC = 80
SOUND=TRUE
LOCALDEV=TRUE
Bueno vamos a explicar las opciones aquí utilizadas, además en la pagina oficial
del proyecto están estas y otras muy bien documentadas.
Las direcciones MAC se pueden utilizar para instruir a ltsp para que entregue una
configuración especifica a dicha maquina con esa mac (súper interesante... no!)
La opción [Default] aplicara para todos los clientes en general.
X_COLOR_DEPTH=16: Numero de bits para la profundidad de color, el valor puede
ser 8,15,16,24,32.
SERVER: Define quien es el servidor LTSP
XSERVER: Define el servidor X que correrá en el cliente.
X_MODE_0: La resolución por defecto que tendrá el cliente.
LOCALDEV: Que el cliente pueda utilizar los dispositivos de almacenamiento
local.
SOUND: Habilita el demonio de sonido en el cliente.
SYSLOG_HOST: Si el valor este es “true” enviara los logs de los clientes a la
maquina que este especificada en la variable “SERVER”.
XKBLAYOUT: Diseño del teclado, elegimos el idioma de nuestro teclado. Para
mayor información consulte su XORG.
Con estas opciones los clientes funcionaron perfecto y sin problemas, en la pagina
del proyecto se encuentran muchas mas opciones interesantes, así que solo
queda es leer y probar.

Nota: Cada vez que modifiquemos este archivo se debe actualizar la imagen que
se creo con lts-build-client para que los cambios apliquen y no surjan problemas,
esto lo hacemos de la siguiente manera sudo ltsp-update-image
Con esto ya solo queda guardar el archivo y encender uno de los clientes para
empezar a depurar errores.
PROBLEMAS DURANTE LA IMPLEMENTACIÓN
– Cuando se inicio pro primera vez el cliente presento un problema con la
memoria RAM (no se copiaban los archivos en ella) y esto se debió a que el
cliente tenia dos módulos de ram con diferente bus y esto ocasionada por
decirlo de alguna manera diferentes velocidades de procesamiento.
Entonces la solución es quitar un modulo y funcionar con el otro o colocar el
otro modulo con el mismo bus.
– Las opciones que se encuentran comentadas en el archivo lts.conf en la
sección Default se deben a que cuando inicia la terminal no tomaba la
resolución 1024x768 y solo nos daba un máximo de resolución de 800x600
pero no era suficiente para lo que queríamos mostrar, entonces el
compañero Fernando Castro a.k.a Kleper me dijo que comentara las
lineas que ubuntu siempre se configuraba “solo” y que con estos
parámetros lo estaríamos confundiendo, procedí a comentarlas y perfecto
nos tomaba una resolución máxima de 1440x900.
CONCLUSIONES
En el mundo de GNU/LINUX muchas son las soluciones que se pueden encontrar
para la reutilización de maquinas con pocas prestaciones y recursos limitados para
un fin especifico. Con la implementación de LTSP me doy cuenta que esta
comunidad de desarrolladores de software libre realizan un estupendo trabajo,
desinteresadamente y con una calidad de producto final impresionante.
En la pagina oficial del proyecto podemos encontrar cada uno de los detalles de
como funciona, que podemos hacer con este software, una wiki con excelente
documentación y un sin fin de ayuda para la implementación.

La implementación es sencilla y altamente personalizable, además de que cuenta


con muy pocos archivos de configuración y hace muy fácil de trabajar tanto la
configuración del servidor como la de los clientes. También sus opciones para
utilizar en los archivos de configuración son fáciles de entender y así poder ajustar
un cliente para un buen funcionamiento y aprovechamiento del recurso.

Para negocios y empresas es una solución muy rentable ya que con muy poco
pueden implementar soluciones por ejemplo para sus clientes, seria muy
agradable poder consultar el catalogo de productos con los cuales usted cuenta o
no cuenta y esto lo puede lograr con una maquina de pocos recursos y ltsp.
ENLACES RELACIONADOS

Oficiales
Pagina Oficial del Proyecto
http://www.ltsp.org/
Wiki del Proyecto
http://wiki.ltsp.org/twiki/bin/view/Ltsp/WebHome
Documentación Oficial
http://wiki.ltsp.org/twiki/bin/view/Ltsp/Documentation
Soporte del proyecto en Español
http://groups.yahoo.com/group/ltsp-es-reloaded

No Oficiales
http://es.wikibooks.org/wiki/Servidor_Terminal_Linux
http://tuxpuc.pucp.edu.pe/content/view/451/12/
http://el64.blogspot.com/2007/08/cmo-instalar-ltsp-en-feisty-terminales.html
http://doc.ubuntu.com/edubuntu/edubuntu/handbook/C/customizing-thin-
client.html

Opciones para el Archivo LTS.CONF


http://wiki.ltsp.org/twiki/bin/view/Ltsp/LtsConf#XkbLayout
http://www.ltsp.org/~sbalneav/LTSPManual.html#ldm-variables

Otros
DHCPD
http://es.wikipedia.org/wiki/DHCP
NFS
http://es.wikipedia.org/wiki/NFS
TFTP
http://es.wikipedia.org/wiki/TFTP

You might also like