Lihuen
RSSRSS AtomAtom

Diferencia entre revisiones de «Clientes livianos con LTSP4»

(Motivación)
(Lihuen GNU/Linux como distribución orientada al uso escolar)
Línea 1: Línea 1:
 
=Motivación=
 
=Motivación=
  
=Lihuen GNU/Linux como distribución orientada al uso escolar=
+
==Lihuen GNU/Linux como distribución orientada al uso escolar==
  
 
Uno de los objetivos perseguidos en la creación de Lihuen GNU/Linux como distribución, junto con la migración de sistemas de oficina, fue la introducción del software libre dentro del ámbito escolar, para poder lograr una temprana apertura de los futuros profesionales de tecnología hacia esta filosofía que poco a poco va mostrando sus beneficios dentro del ámbito de la informática.
 
Uno de los objetivos perseguidos en la creación de Lihuen GNU/Linux como distribución, junto con la migración de sistemas de oficina, fue la introducción del software libre dentro del ámbito escolar, para poder lograr una temprana apertura de los futuros profesionales de tecnología hacia esta filosofía que poco a poco va mostrando sus beneficios dentro del ámbito de la informática.

Revisión de 20:41 25 sep 2007

Motivación

Lihuen GNU/Linux como distribución orientada al uso escolar

Uno de los objetivos perseguidos en la creación de Lihuen GNU/Linux como distribución, junto con la migración de sistemas de oficina, fue la introducción del software libre dentro del ámbito escolar, para poder lograr una temprana apertura de los futuros profesionales de tecnología hacia esta filosofía que poco a poco va mostrando sus beneficios dentro del ámbito de la informática.

La realización de este objetivo presenta dificultades tanto culturales como económicas. Culturales, porque existe una tendencia generalizada de usar software privativo ya sea dentro del hogar como en ámbitos comerciales y educativos, lo que dificulta la migración debido a la falta de capacitación, entre otras cosas. Económicas porque no es común contar con el capital necesario para equipar aulas con computadoras que sean capaces de correr software actual a velocidades aceptables. La primera de estas dificultades se puede sortear al trabajar con interfaces de usuario amigables, haciendo de la migración un proceso menos traumático para el usuario novato. Para resolver el problema restante, la solución se encuentra presente desde hace muchos años ya, reusando equipos viejos que actúan como terminales ?bobas? que aprovechan la capacidad de procesamiento de un servidor.

El siguiente documento pretende ser un punto de partida para comenzar a comprender de qué manera se piensa incorporar la solución (en lo que sigue del texto, clientes livianos o terminales livianas) a la distribución base ya existente de Lihuen GNU/Linux. En esta primera entrega se describirá el trabajo de investigación realizado por los autores basado en aspectos técnicos de la instalación de una red basada en esta tecnología.

Teoría de operación

Antes de empezar, es conveniente tener una idea general del funcionamiento de una red de clientes livianos.

La idea es tener una máquina servidor que posea hardware actual y que corra perfectamente las aplicaciones que se quieren usar. Por otro lado, se encuentran los clientes livianos, máquinas que cuentan con hardware obsoleto pero que a su vez permiten realizar una conexión al servidor y utilizar sus recursos. De esta manera se puede tener una red de máquinas viejas que funcionan a la velocidad del servidor.

Para que esto funcione, es necesario contar con algunos servicios :

  • DHCP
  • TFTP
  • NFS
  • XDMCP

El servidor DHCP se encargará de identificar cada terminal y enviarle información que éstas necesiten. TFTP es un protocolo FTP antiguo que no necesita validación. Se usa para descargar el kernel al terminal. NFS se usa para montar el sistema de archivos del terminal en el disco rígido del servidor. XDMCP (X Display Manager Control Protocol) es un protocolo para ejecutar entornos gráficos a través de la red de forma remota. Al ingresar al servidor nuestro cliente da la llamada, lo cual nuestro Servidor de XDMCP le envía el prompt de Login ( un display de KDM,GDM ) de respuesta, donde nuestro "cliente o usuario", ingresa su cuenta + su contraseña, tal cual si estuviera en la misma máquina validando en su Gestor de Escritorio.


En el cliente es necesario cargar una imagen de arranque a través de la placa de red. Éstas imágenes se pueden conseguir en el sitio http://rom-o-matic.net, y se consiguen para arrancar desde el disco rígido, disquete y la misma placa de red. En nuestro caso, debido a que es probable que el hardware que poseen las terminales sea demasiado viejo, descartaremos el arranque directo desde la placa de red (es necesario tener una BIOS relativamente nueva que lo permita). Ya sea desde el disco rígido o desde un disquete, la imagen se encarga de iniciar con todo el proceso de arranque del cliente liviano.

En primer lugar, la imagen se encarga de reconocer la placa de red que posee el cliente. Una vez hecho esto, se procede a buscar un servidor dhcp presente en la red. Si lo encuentra, en una primera etapa, el terminal solicita que se le asigne una dirección IP. Ésta dirección se puede especificar desde el mismo servidor haciendo un mapeo en el archivo dhcpd.conf que utiliza la MAC de la placa de red, como veremos más adelante. Si no se especifica una dirección en este archivo, el servidor se encargará de asignarle una. Una vez obtenida la IP, el cliente liviano descarga la imagen del kernel especificada en dhcpd.conf a través de TFTP. Cuando se obtiene la imagen, ésta se carga en memoria, inicializando todos los periféricos que encuentra. Durante la carga del kernel, también se carga una imagen ramdisk en memoria, que actúa como el sistema de ficheros raíz. Normalmente una vez que finaliza la carga del kernel, se llama al programa init, pero en este caso, se corre un shell script que se encuentra en la ramdisk llamado linuxrc. Este script escanea el bus pci buscando una placa de red cuyo NIC coincida con alguno de /etc/niclist para obtener el módulo que debe cargar y así poder operar correctamente la placa de red. Si la placa de red es ISA, es necesario especificar el módulo manualmente mediante unas líneas en dhcpd.conf (en la sección de configuración se amplía este tema).

Una vez hecho esto, se corre dhclient, en otra etapa que usa el servidor dhcp, ya que se necesita más información de la que se obtuvo en la primera etapa. Una vez obtenida una respuesta del servidor, dhclient correrá el archivo /etc/dhclient-script que obtiene la información necesaria para configurar la interfaz eth0. Una vez hecho esto ya es posible montar el sistema de ficheros via NFS. Recordemos que hasta este punto el sistema de archivos se encontraba en memoria RAM. Éste es el último paso que realiza linuxrc, montando el sistema de archivos en /opt/lts/i386/mnt (en la máquina servidor) y luego haciendo un pivot_root para pasar el /mnt a /.

Ya es posible correr el programa init. Init necesitará algunas variables de entorno que se obtendrán parseando el archivo lts.conf. El script /etc/build_x3_cfg (dentro del sistema de ficheros creado via NFS) se encarga de crear el archivo XF86Config basado también en entradas del archivo lts.conf. Una vez hecho esto ya es posible correr startx, con lo que ya estaremos en condiciones de ver una pantalla de login en nuestro cliente liviano. Es importante notar que si bien vemos la pantalla de login en el cliente, en realidad nos estamos logueando en el servidor usando los recursos de memoria, procesador y disco rígido de este último.



Hay más archivos que intervienen en la configuración y operación de la red, pero estos se describirán con detalle en las secciones correspondientes sobre la instalación y configuración.

Requerimientos

Hardware

Los requerimientos de hardware se pueden describir en función de los distintos roles que cumplen los equipos en la topología de la red, servidor y terminal.

Servidor:

  • Procesador Sempron 1,5 GHz o mayor
  • 1 Gbyte de RAM
  • Placa de red de 1Gbps
  • Disco Rígido 80 Gbyte
  • Sistema Operativo Lihuen GNU/Linux 0.8 o más reciente

Terminales:

  • Procesador Pentium 66 MHz o mayor
  • 16 MB RAM (32 MB recomendado)
  • Placa de red 10 Mbps (PCI recomendado)
  • Monitor
  • Teclado
  • Mouse

Los requerimientos listados son los mínimos indispensables para correr aplicaciones de oficina y educativos a una velocidad razonable. Se recomienda que las placas de red de los clientes sean de la mejor calidad posible, ya que eso incidirá directamente en la perfomance.

Aunque para el servidor no es necesario tener un monitor, teclado y mouse, se recomienda tenerlos para realizar tareas de mantenimiento y soporte de la manera más fácil posible. Opcionalmente se puede disponer de una impresora y demás periféricos extra.

Software

Así como requerimientos de hardware, también los hay de software. Es importante destacar que la instalación del software se realiza directamente en el servidor, ya que todo el procesamiento y el manejo de recursos se maneja en el mismo como veremos más adelante.

Los dos paquetes de software más importantes que se pueden usar para implementar una solución de clientes livianos son LTSP y PXES. Si bien hay diferencias sutiles entre los dos paquetes (en realidad son mini-distribuciones que se instalan sobre distribuciones base) hay un aspecto de LTSP que inclina la balanza a su favor: es software libre.

En el sitio oficial de LTSP se encuentra disponible una ISO que contiene los paquetes necesarios para la instalación.


LTSP necesita además ciertos servicios corriendo en el servidor. Estos son: Servidor DHCP, servidor TFTP, servidor NFS y XDMCP. Debido a que Lihuen es un sistema basado en Debian, se puede realizar la instalación de los paquetes necesarios mediante la herramienta apt-get mediante los siguientes comandos.

lihuen-:# apt-get install tftpd-hpa
lihuen-:# apt-get install dhcp3-server
lihuen-:# apt-get install nfs-common
lihuen-:# apt-get install nfs-kernel-server

No es necesario instalar nada para tener XDMCP; si será necesario hacer algunas modificaciones de configuración que se detallarán más adelante. Una vez que contamos con el software requerido, se puede comenzar con la instalación.

Instalación

Servidor

Hay dos formas de proceder con la instalación, una es a través de un instalador que conecta con un servidor FTP para obtener los archivos de LTSP, y la otra es bajando una imagen que ya contiene los archivos en ella. Optamos por la última opción ya que es nuestra intención redistribuir el paquete.

Para poder usar la imagen es necesario montarla. Asumiendo que se bajó el archivo al directorio /tmp y que el nombre de la imagen es ltsp-4.1.1-1.iso:

lihuen-:# mount -o loop /tmp/ltsp-4.1.1-1.iso /mnt

Una vez montada la imagen se procede a hacer la instalación del paquete

lihuen-:# cp /mnt/ltsp-utils-0.11.tgz /tmp
lihuen-:# cd /tmp
lihuen-:# tar xvzf ltsp-utils-0.11.tgz
lihuen-:# cd ltsp-utils
lihuen-:# ./install.sh

Ya estamos en condiciones de correr el programa ltspadmin para finalizar la instalación y comenzar la instalación. Es necesario contar con permisos de root para hacerlo.

En el menú que aparece al ejecutar el comando elegimos la segunda opción: ?Configure the installer options? donde podremos seleccionar la fuente de los archivos necesarios. Tipeamos la ruta donde se encuentran los archivos que fueron montados de la imagen: file:///mnt. La ruta que especificamos debe estar con formato de URL. Las demás opciones de dejan como están (apretamos ENTER hasta volver al primer menú).

Ahora es posible terminar con la instalación. Elegimos la primera opción del menú principal (?Install/Update LTSP Packages?) y cuando nos dirige a la pantalla siguiente presionamos la tecla A, que selecciona todos los paquetes disponibles. Apretamos Q para salir, y antes de redirigirnos al menú principal, se instalarán los paquetes.

De vuelta en el menú, hay una opción ?Configure LTSP? que corre el programa ltscfg. Este programa es útil para generar archivos de configuración genéricos que luego podremos modificar para adaptarlos a nuestras necesidades. Es importante adoptar ciertas convenciones de nombrado que observaremos al editar dichos archivos (como por ejemplo usar wsnnn para referirse a las terminales, donde nnn es un número en el rango 001-255).

Terminales

La instalación en las terminales se reduce a lograr que carguen una imagen de booteo a través de la red. Hay tres maneras de hacer esto, bootear desde un floppy, desde el disco rígido, y desde la placa de red. Para bootear desde la placa de red es necesario contar con un BIOS relativamente nuevo que permita hacerlo. Por otro lado hay que programar la memoria de la placa de red para que contenga la imagen. Como es probable que las BIOS que tengan las terminales sean bastante viejas, y teniendo en cuenta que programar la memoria de las placas de red puede costar dinero extra, se descarta esta opción. El booteo a través de un floppy es la forma más fácil de las tres, pero debido a la fragilidad de estos, también se descarta esta opción. Es muy probable que las terminales ya cuenten con un disco rígido, con lo cual el único problema que puede surgir al elegir esta opción (la falta del medio) ya está solucionado.

Ahora se debe pensar el la forma en la que el sistema cargará la imagen. Supondremos como caso representativo aquel en el cual la terminal cuenta con un sistema operativo Windows 98 instalado en su disco rígido, y que se quiere conservar dicho sistema. En caso de que no se quiera conservarlo, simplemente se instala una distribución mínima de lihuen y se modifica el GRUB como se detalla más adelante.

Configuración

El paquete LTSP nos provee una herramienta para configurar todos los servicios en forma automática. En caso de que necesitemos verificar la configuración o personalizarla a continuación describimos como hacerlo.

Configuración del servidor DHCP

Una vez que tenemos instalado el servidor dhcp, el paquete crea un archivo de configuración por defecto en /etc/dhcp3/. El archivo dhcpd.conf establece las especificaciones para nuestro rango de terminales.

Ponemos como ejemplo un archivo de configuración

authoritative;

option ngrub-menu code 150 = text;
option root-path "192.168.1.1:/opt/ltsp/i386";


subnet 192.168.1.0 netmask 255.255.255.0{

       option routers          192.168.1.1;
       option subnet-mask      255.255.255.0;
       option nis-domain       "lihuen.org";

       range dynamic-bootp 192.168.1.2 192.168.1.250;
       default-lease-time 21600;
       max-lease-time 43200;
       next-server 192.168.1.1;
       filename "/vmlinuz-2.4.26-ltsp-3";

}

group{
       use-host-decl-names on;
       option log-servers 192.168.0.254;
       option option-128 E4:45:74:68:00:00;
              host ws001{
              hardware ethernet 00:C0:F0:6A:E0:BA;
              fixed-address 192.168.1.2;
       }

       host ws002{
              hardware ethernet 00:C0:DF:49:7E:A8;
              fixed-address 192.168.1.3;
              option option-129 "NIC=ne IO=0x300";
       }

       host ws003{
              hardware ethernet 00:C0:F0:6A:E0:9F;
              fixed-address 192.168.1.4;
       }                                                                    
 }
}

En este ejemplo,

option ngrub-menu code 150 = text;

nos permite arrancar desde el sistema de arranque de linux, el grub.

option root-path "192.168.1.1:/opt/ltsp/i386";

Especifica la ruta donde se monta el sistema de archivos del cliente liviano.

subnet 192.168.1.0 netmask 255.255.255.0{

En esta sección establecemos la subred en donde se encontrarán nuestras máquinas.

       option routers          192.168.1.1;
       option subnet-mask      255.255.255.0;
       option nis-domain       "lihuen.org";

Con estas opciones especificamos en el cliente la dirección de su servidor "192.168.1.1", la máscara que debe usar "255.255.255.0" y el dominio en donde se encuentra "lihuen.org".

       range dynamic-bootp 192.168.1.2 192.168.1.250;

Aquí especificamos el grupo de direcciones ip que se le asignarán en forma dinámica a las terminales. En este caso se establece el rango de 192.168.1.2 hasta la 192.168.1.250.

       default-lease-time 21600;
       max-lease-time 43200;

Se establece el tiempo, expresado en segundos, durante el cual el cliente mantendrá la dirección ip asignada hasta que se la renueve el servidor, "default-lease-time 21600" y el tiempo máximo antes de ser reasignada.

       filename "vmlinuz-2.4.26-ltsp-3";

Con esta línea le indicamos donde se encuentra y cuál es la imagen para arrancar.

En la siguiente sección podemos asignar en forma particular una dirección ip según la mac de la terminal. De esta forma le especificamos el nombre de la máquina y su ip, de manera que si debemos individualizar opciones para esa máquina, su ip no se asignará en forma dinámica cada vez que se inicie.

group{
       use-host-decl-names on;
       option log-servers 192.168.0.254;
       host ws001{
             hardware ethernet 00:C0:F0:6A:E0:BA;
             fixed-address 192.168.1.2;
       }
       host ws002{
             hardware ethernet 00:C0:F0:6A:E0:E1;
             fixed-address 192.168.1.3;
       }

Para casos particulares en que nos encontremos con placas de red isa, debemos agregar estas dos líneas en la sección general, antes de la sección subnet:

option option-128 code 128=string; option option-129 code 129=text;

En la sección del group la opción:

option option-128 E4:45:74:68:00:00;

y en la sección group dentro de las especificaciones propias de esa máquina agregamos

option option-129 "NIC=ne IO=0x300";

Para habilitar correctamente al servicio dhcp, debemos indicarle en que tarjeta de red funcionará el servicio, editando el archivo /etc/default/dhcp3-server. INTERFACES="eth0"

Configuración del servicio TFTP

Luego de instalar el paquete para que se inicie el servicio cada vez que arranque la máquina debemos modificar el archivo /etc/inetd.conf, el siguiente sector de archivo

#:BOOT: Tftp service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers."

agregrando la línea

tftp  dgram    udp    wait    root  /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot

Asegurarnos de cambiar en /etc/inetd.conf y cambiar, el parámetro de tftp, al final de la linea, el path correspondiente, en este caso "/tftpboot"

De por si, tftpd (hpa) trabaja en modo -s (seguro) y su directorio de booteo apunta exactamente a /var/lib/tftpboot, ahora bien, si queremos respetar el estandard de LTSP, este directorio en realidad se debe encontrar en "/" o sea que debera ser /tftpboot.

En caso de estar usando dhcp3-server en vez de modificar la linea en /etc/ined.conf, modificamos el archivo del demonio tftpd-hpa modificando el archivo /etc/default/tftpd-hpa y reemplazamos el path por el correspondiente sugerido por LTSP,(en nuestro caso quedaría OPTIONS="-l -s -v /tftpboot/lts") o de lo contrario, migramos todos los archivos que por defecto instaló ltspadmin al directorio por defecto de tftpd-hpa (/var/lib/tftpboot). Luego le decimos que queremos que corra el demonio con "yes" en RUN_DAEMON. Hay que recordar que en modo seguro, tftp, toma tal cual el parametro del path.

Un línea que es importante añadir en caso de que usemos dhcp3-server es la directiva next-server direccionIp; en el fichero de configuración dhcp. Con esta línea le estamos diciendo esplícitamente que el servidor tftp que tiene que buscar tiene la misma dirección que el servidor dhcp que le ha servido la dirección ip.

Configuración del login gráfico - dhcp

Las terminales entran en el entorno gráfico donde se solicita el usuario y la contraseña. Para permitir que el servidor acepte estas conexiones remotas del login gráfico, modificamos los siguientes archivos: En Lihuen 0.8 /etc/X11/gdm/gdm.conf En Lihuen 1.0 /usr/X11R6/lib/X11/fs En la sección [Xdmcp] poner Enable=true. En el archivo /usr/X11R6/lib/X11/fs/config Comentar la línea "no-listen = tcp".

Configuración de servicio NFS

NFS fue desarrollado para permitir a otras máquinas acceder a particiones de disco de una máquina remota. Esto nos permite compartir espacio de disco con las terminales, de manera que la información que maneja cada usuario se guarda en el servidor.

Para que el servidor permita compartir el espacio de disco, debemos modificar el archivo /etc/exports, agregando la línea:

/opt/ltsp    192.168.1.0/255.255.255.0(ro,no_root_squash,sync) 

De esta manera autorizamos a toda la red 192.168.1.x a acceder al directorio /opt/ltsp/, el cual contiene el sistema de ficheros. Como estamos compartiendo espacio de disco debemos tener en cuenta la seguridad, en este sentido restringimos el acceso del root en forma remota con la opción no_root_squash.

Para permitir que las terminales accedan al servidor debemos modificar el archivo /etc/hosts que detalla las ip de las máquinas autorizadas con los nombres configurados en el archivo dhcp.conf:

192.168.1.2	ws001
192.168.1.3	ws002
192.168.1.4	ws003
(...)

Configuración de LTSP

El archivo de configuración de ltsp se encuentra en:

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

En este archivo configuramos las opciones que cargará el kernel de ltsp para cada terminal según su respectivo hardware. Ltsp crea con las opciones que especificamos un archivo temporal de configuración para cada terminal. Mostramos a continuación el archivo lts.conf

[Default]
       SERVER			= 192.168.1.1
       XSERVER			= auto
       X_MOUSE_PROTOCOL     = "Microsoft"
       X_MOUSE_DEVICE	= "/dev/ttyS0"
       X_MOUSE_RESOLUTION	= 400
       X_MOUSE_BUTTONS	= 3
       USE_XFS			= N
       SCREEN_01			= startx
       SCREEN_02			= shell
       X_MODE_0	       		= 800x600
       XkbRules			= xfree86
       XkbLayout			= es
       XkbModel			= pc105
       XkbSymbols			= es(pc105)

[ws001]
       XSERVER			= XF86_SVGA
       X_MODE_0			= 800x600  49.85 800 832 1016 1048 600 611 619 631 +HSync +VSync
       X_MOUSE_PROTOCOL     = "PS/2"
       X_MOUSE_DEVICE         	= "/dev/psaux"

[ws002]
#	X_MOUSE_PROTOCOL 	= "Microsoft"
#	X_MOUSE_DEVICE	= "/dev/ttyS0"
       XSERVER		 	= s3virge
#	XkbRules			= auto
#	XkbModel			= pc101
#	XkbLayout			= us
#	XkbSymbols			= us(pc101)

[ws003]
       X_MOUSE_PROTOCOL 	= "PS/2"
       X_MOUSE_DEVICE   	= "/dev/psaux"
       SOUND 			= Y
       SOUND_DAEMON 		= esd
       VOLUME 			= 75

En sección [Default] se especifica las opciones generales para todas las terminales.

SERVER			= 192.168.1.1

El servidor de donde se cargará la configuración.

XSERVER			= auto

Esta opción buscará en el archivo /etc/vidlist, en forma automática, el servidor de X que mejor se adecue según la placa de video del cliente.

X_MOUSE_PROTOCOL        	= "Microsoft"
X_MOUSE_DEVICE	    	= "/dev/ttyS0"
X_MOUSE_RESOLUTION		= 400
X_MOUSE_BUTTONS		= 3

Aquí especificamos configuraciones para el mouse, en este caso un mouse serial, "dev/ttyS0", que usa el protocolo "Microsoft".

USE_XFS			= N

Ltsp nos permite tener un servidor de fuentes para sus clientes, en este caso especificamos que no usaremos un servidor.

SCREEN_01		= startx
SCREEN_02		= shell

Una vez que la terminal levanta la imagen desde el servidor, el modo de inicio de sesión puede ser desde el login gráfico o desde la consola. También podemos configurar la cantidad de consolas que habilita al cliente para que pueda acceder a su cuenta. En este caso especificamos que el cliente pueda acceder a través de dos consolas, la primera entrará en el modo de login gráfico y la segunda en el modo consola.

X_MODE_0	        = 800x600

Establece la resolución de pantalla por defecto en 800*600.

XkbRules		= xfree86
XkbLayout		= es
XkbModel		= pc105
XkbSymbols		= es(pc105)

Especifica opciones del teclado, aunque también se pueden modificar del archivo de configuración por defecto que utiliza ltsp para los clientes livianos, ubicado en /opt/ltsp/i386/etc/build_x3_cfg.

Todas las opciones posibles para XkbModel y XkbLayout se encuentran listadas en el archivo: /etc/X11/xkb/rules/xfree86

A continuación individualizamos las configuraciones según el hardware específico de cada máquina:

[ws001]
XSERVER			= XF86_SVGA
X_MODE_0			= 800x600  49.85 800 832 1016 1048 600 611 619 631 +HSync +VSync
X_MOUSE_PROTOCOL        = "PS/2"
X_MOUSE_DEVICE          	= "/dev/psaux"

En este caso especificamos un servidor de X específico para su placa de video y la resolución de pantalla según el monitor. Para establecer la correcta configuración en la opción X_MODE_0, se llevó a cabo los siguientes pasos: Iniciamos el cliente liviano, desde la consola que nos habilita a una terminal, miramos en el archivo de configuración temporal para ese cliente, ubicado en /tmp/XF86Config.1. En este archivo se especifica el HorizSync y VertRefresh del monitor, como así también el driver que usa la pantalla. Una vez obtenidos estos datos los ingresamos según se nos solicite en la página xtiming.sourceforge.net/cgi-bin/xtiming.pl y obtenemos el modeline correcto para este cliente liviano.

[ws002]
       XSERVER			= s3virge

[ws003]
       X_MOUSE_PROTOCOL= "PS/2"
       X_MOUSE_DEVICE   	= "/dev/psaux"
       SOUND 			= Y
       SOUND_DAEMON 	= esd
       VOLUME 			= 75

En este caso nos encontramos con un mouse del tipo PS/2, el cual lo configuramos con las opciones X_MOUSE_PROTOCOL y X_MOUSE_DEVICE. Como nuestra terminal cuenta con placa de sonido lo configuramos con las opciones SOUND, SOUND_DAEMON y VOLUME.

GRUB en Microsoft Windows

Se planteó el problema desde una escuela que propuso instalar la red de clientes livianos pero sin perder la opción de usar también Windows 98 como sistema alternativo. Como ya lo tenían instalado con información que se deseaba conservar, se optó por usar un sistema de arranque que no sobreescribiera el MBR, pero permitiendo sin embargo que se queda elegir al inicio en qué modo se desea usar el equipo (Windows 98 o cliente liviano) . Se probó instalar el grub para windows y seguimos los pasos de configuración detallados claramente en la página http://www.icpug.org.uk/national/linnwin/contents.htm. No hubo ningún inconveniente con este sistema que permite iniciar windows o el cliente liviano sin tener que reparticionar el disco.

VERIFICACION DE SERVICIOS

En caso que que tengamos problemas para poder arrancar los clientes, podemos verificar el funcionamiento de los servicios utilizando principalmente el comando netstat: Este comando nos permite visualizar las conecciones de red actualmente establecidas netstat, los servicios que están corriendo, etc. Las opciones que utilizaremos son:

  1. '-a', que no muestra información sobre todas las conecciones de red.
  2. '-n' le dice que no convierta las direcciones de IP y los números de puertos en nombres, esto permite obtener más rápido la infomación, especialmente si tienes problemas de DNS.
  3. '-p' permite ver el número de proceso ID y el nombre del proceso que actualmente está escuchando en ese puerto.

DHCP

$netstat -an | grep ?:67?
$ps aux | grep dhcpd

El archivo donde se guardan las ip que entrega el servidor dhcpd en forma dinámica esta en : /var/lib/dhcp/dhcpd.leases.

PORTMAP

$netstat -an | grep ?:111?
$rpcinfo -p localhsot
program vers proto   port
 100000    2   tcp    111  portmapper
 100000    2   udp    111  portmapper
 100003    2   udp   2049  nfs
 100003    3   udp   2049  nfs
 100021    1   udp  32771  nlockmgr
 100021    3   udp  32771  nlockmgr
 100021    4   udp  32771  nlockmgr
 100005    1   udp    648  mountd
 100005    1   tcp    651  mountd
 100005    2   udp    648  mountd
 100005    2   tcp    651  mountd
 100005    3   udp    648  mountd
 100005    3   tcp    651  mountd
 100024    1   udp    750  status
 100024    1   tcp    753  status

$ps -e | grep portmap

NFS

$ showmount -e

debería decir algo como esto

opt/ltsp 192.168.10.0/255.255.255.0

TFTP

$ netstat -anp | grep ":69 "
udp   0   0 0.0.0.0:69    0.0.0.0:*  453/inetd #(si lo configuramos en el archivo /etc/inetd.conf)
udp   0   0 0.0.0.0:69    0.0.0.0:*  5371/in.tftpd #(si lo configuramos en  /etc/default/tftpd-hpa)

XDMCP

Para verificar si el servidor gráfico está corriendo,

$  netstat -anp | grep ":177 "
udp        0      0 *:xdmcp                 *:*                                5372/gdm

además nos informa qué servidor estamos utilizando.


Pruebas

En el laboratorio contamos con tres equipos que usamos como terminales livianos y un equipo que sirve como servidor. A continuación se detallan las características de éstos.

Servidor: Procesador Pentium 4 1,5 Ghz

  • 512 MB de memoria RAM
  • Placa de red 100Mbit/s
  • Sistema operativo Lihuen 0.8

Terminal 1: Procesador Pentium 75 Mhz 24 MB de memoria RAM Placa de red 100Mbit/s

Terminal 2: Procesador Pentium 166 Mhz 64 MB de memoria RAM Placa de red ISA 10Mbit/s

Terminal 3: Procesador Pentium III 700 Mhz 256 MB de memoria RAM Placa de red 100Mbit/s

Es importante destacar que si bien la mayoría de las placas de red son de 100Mbit/s todas están conectadas a un hub de 10Mbit/s, lo que reduce el rendimiento de toda la red a ésta velocidad.

Las pruebas realizadas con esta configuración resultaron satisfactorias, ya que si tenemos en cuenta que cambiando el hub por un switch que permita trabajar a una velocidad mayor, el rendimiento mejoraría sustancialmente. Recordemos que la velocidad con la que se maneja la red es el punto fundamental que determinará el rendimiento de los clientes livianos (en especial, la placa de red del servidor, recomendada en un 1gbps).

La regla general para armar una red de clientes livianos se puede especificar de la siguiente manera:

Servidor: Procesador con velocidad mayor a 1 Ghz como mínimo 256 + (50 * nro de terminales que servirá) MB de memoria RAM Placa de red de 1 Gbps

Terminales: Procesador Pentium 1 16 MB RAM mínimo Placa de red 100Mbit/s

De acuerdo a esta regla podemos decir que, en teoría, un servidor con un procesador Pentium 4 de 2 Ghz con 1 Gb de RAM y placa de red de 1Gbps podría servir a 15 terminales livianos. De todas formas siempre es conveniente dejar un margen de memoria para trabajar de forma cómoda, con lo cual concluimos que un servidor de esas características podría servir de manera óptima a 13 terminales.

Memoria del servidor Cant. teórica de clientes a servir Cant. real de terminales a servir 512 MB 5 5 768 MB 10 8 1024 MB 15 13

Extras

Una vez obtenida la funcionalidad básica de los clientes livianos, se puede empezar a configurar aspectos que no son fundamentales pero son deseables para cada terminal. En este documento cubriremos la configuración del sonido y el uso de una impresora.

Sonido

Si contamos con una placa de sonido en el cliente, podemos hacer uso de la misma. Es probable que no sea transparente a primera vista cómo es que podemos tener sonido en la terminal, ya que como vimos hasta ahora, las aplicaciones corren en el servidor. La respuesta es usar un servidor de sonido que sea soportado por LTSP. Será necesario descargar un paquete de http://www.ltsp.org/ltsp-4.1-extras/ltsp-sound-1.0-0.2.tar.bz2 que contiene un shell script que redirigirá en tráfico de sonido a través de la red.

Actualmente, hay dos servidores de sonido que están directamente soportados por el proyecto, ESD y NASD. Haciendo uso de estos dos servidores en la configuración de las aplicaciones que queremos usar, y agregando tres entradas a lts.conf podemos hacer que el sonido sea enviado por la red hacia la terminal correspondiente y de esa manera escuchar a través de sus parlantes. La configuración de sonido varía según la aplicación, que por supuesto debe soportar alguno de esos dos servidores. En http://wiki.ltsp.org/twiki/bin/view/Ltsp/Sound se detalla cómo hacerlo para aplicaciones como Amarok, Gaim y Macromedia Flash. A continuación presentamos las modificaciones a hacerle a lts.conf y los pasos para configurar GNOME y XMMS.

  • lts.conf

Agregamos las siguientes tres líneas:

SOUND =Y
SOUND_DAEMON=esd  #alternativamente nasd
VOLUME=75
  • GNOME

GNOME soporta el servidor ESD. Para configurar el sonido desde la línea de comandos:

lihuen.-# gconftool-2 --type string --set /system/gstreamer/0.8/default/audiosink "esdsink" 
  • XMMS

Desde ?Opciones > Preferencias? cambiar plugin de salida a Esound.


Links útiles

LTSP guide on Debian "Sarge"

LTSP - Linux Terminal Server Project - v4.1

Gnome Display Manager Reference Manual