ltsp linux terminal server project-

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.

Upload: jeysonh

Post on 07-Jul-2015

474 views

Category:

Software


4 download

DESCRIPTION

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 re-utilización que quizá podrá servir a otros y para esto existen proyectos super interesantes y uno de ellos es LTSP, pero veamos que es esto.

TRANSCRIPT

Page 1: Ltsp  linux terminal server project-

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.

Page 2: Ltsp  linux terminal server project-

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.

Page 3: Ltsp  linux terminal server project-

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

Page 4: Ltsp  linux terminal server project-

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.

Page 5: Ltsp  linux terminal server project-

Paquetes NecesariosPara 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”

Page 6: Ltsp  linux terminal server project-

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.

Page 7: Ltsp  linux terminal server project-

#

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

Page 8: Ltsp  linux terminal server project-

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

Page 9: Ltsp  linux terminal server project-

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

Page 10: Ltsp  linux terminal server project-

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.

Page 11: Ltsp  linux terminal server project-

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

Page 12: Ltsp  linux terminal server project-

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