Menú principal
Inicio
Artículos
Noticias
Histórico de la Lista
Linux IDES
Linux Week
Descargas
Video Tutoriales
Opinión Software Libre
Preguntas frecuentes
Eventos Próximos
Talleres de Linux y LaptopFest
Encuesta
¿Que sección del portal Tuxpuc te agrada más?
 
Galería TuxPuc
Últimas noticias
Sindicación
 


Este portal se ve mejor con Firefox

Firefox

Linux Terminal Server Project (LTSP): Instalación y Configuración
escrito por Gonzalo Alvarez Flores   
Monday, 09 de October de 2006

 

Linux Terminal Server Project (LTSP) es una paquete para Linux que permite conectar muchas computadoras de  a un Servidor Linux. Las aplicaciones comunmente corren en el servidor y transmiten la salida en el dispositivo de video del cliente.

La gran ventaja de usar LTSP es que podemos conectar al servidor computaras antiguas, que comúnmente tiraríamos a la basura (486, Pentium I) , inclusive éstos clientes pueden prescindir de una unidad de almacenamiento fija,  pues todas las aplicaciones corren en el servidor y es él quien soporta toda la carga. LTSP es muy usado en colegios, universidades, etc y ha sido la base para varias distribuciones como  K12LTSP, Edubuntu y Skolelinux .

 

LTSP 4.2 + Ubuntu 6.06 LTS

 

 


 INSTALACION

Para instalar LTSP vamos a http://www.ltsp.org/download/ y descargamos la ultima versión, para éste caso he usado la versión 4.2 y descargamos el archivo que necesitemos dependiendo de nuestra distribución, como yo he usado Ubuntu 6.06, entonces descargo el archivo ltsp-utils_0.25_all.deb.

Lo instalamos con el comando $sudo dpkg -i ltsp-utils_0.25_all.deb

Si no hubiera archivo para nuestra distro, descargamos el ltsp-utils-0.25-0.tgz, lo descomprimimos y luego corremos el archivo install.sh.
    

CONFIGURACION


Antes instalamos algunos paquetes que necesitará LTSP:

    dhcp3-server
    nfs-kernel-server
    tftpd-hpa

Luego corremos como root el archivo $sudo ltspadmin y entramos a la primera opción del menú: Install/Update LTSP Packages, seleccionamos todos los paquetes y nos vamos a dar una vuelta o a tomar un helado hasta que descargue e instale todos los paquetes necesarios.

Ahora nos toca verificar si están levantados los servicios que LTSP necesita, regresamos al menú principal de ltspadmin, escogemos Configure LTSP y luego presionamos “S” para que nos muestre el estado de los servicios, deberíamos ver algo como ésto:


Service        Installed       Enabled       Running       Notes
dhcpd              Yes             Yes               No                 Version 3
tftpd                  Yes             Yes               Yes               Has '-s' flag
portmapper    Yes             Yes               Yes
nfs                    Yes             Yes               No
xdmcp              Yes             Yes               No               gdm   Using: gdm


Generalmente la primera vez algunos no están corriendo debido a que aún no los hemos configurado, para ello regresamos al menú principal y entramos a Configure LTSP y luego presionamos “C” para configurar cada uno de los servicios, son 11 apartados a donde debemos entrar, entre los principales están dhcp, nfs, tftp y xdmcp; generamos los archivos *.conf por defecto y finalmente salimos de ltspadmin, volvemos a entrar y verificamos que todo ya este corriendo, sino los levantamos a mano.

Ejemplo:
$sudo /etc/init.d/dhcp3-server start

Una buena configuración de LTSP nos debería generar unos buenos archivos de configuración, pero no siempre sucede eso, así que voy a pegar los principales archivos *.conf, dado que a veces es necesario meterles mano.


/etc/dhcp3/dhcpd.conf
(Con esta configuración mis 2 clientes bootean con PXE, podrían estar una con disquete debido a que su hardware no soportey la otra con PXE)



#dhcpd.conf
ddns-update-style                     ad-hoc;
option subnet-mask             255.255.255.0;
option broadcast-address        192.168.1.255;
option routers                            192.168.1.10;
option domain-name-servers       192.168.1.254;
option domain-name                    "tu_dominio.com";   # You really should fix this
option option-128 code         128 = string;
option option-129 code         129 = text;
get-lease-hostnames                   true;
option root-path                      "192.168.1.254:/opt/ltsp/i386";

shared-network WORKSTATIONS {
        subnet 192.168.1.0 netmask 255.255.255.0 {
        }
}

group {
        use-host-decl-names     on;
        option log-servers      192.168.1.254;
        filename                "/lts/2.6.17.8-ltsp-1/pxelinux.0";  #imagen PXE

        host ws001 {
                hardware ethernet       00:16:76:3A:B7:FF;
                fixed-address           192.168.1.1;
                ##si tuviéramos un disquete de arranque activamos la linea siguiente
        #filename               "/lts/vmlinuz-2.6.17.8-ltsp-1";
        }

        host ws002 {
                hardware ethernet       00:16:76:3A:AE:7D;
                fixed-address           192.168.1.2;
        }

}

/etc/hosts
(Considerando que la IP de mi servidor es 192.168.1.254)


127.0.0.1 localhost localhost.localdomain gonzalo-ltsp

192.168.1.1     ws001.ltsp      ws001
192.168.1.2     ws002.ltsp      ws002
192.168.1.3     ws003.ltsp      ws003
...
...
...
192.168.1.253   ws253.ltsp      ws253
## LTSP-end ##

/etc/hots.conf

order hosts,bind
multi on

/etc/hosts.allow

bootpd:     0.0.0.0
in.tftpd:   192.168.1.
portmap:    192.168.1.


/etc/exports
(Aquí cambiamos /opt/ltsp por /opt/ltsp/i386 igual que en el root path de dhcpd.conf, y vemos si esta creado el directorio /var/opt/ltsp/swapfiles, caso contrario lo creamos)

/opt/ltsp/i386            192.168.1.0/255.255.255.0(ro,no_root_squash,sync)
/var/opt/ltsp/swapfiles   192.168.1.0/255.255.255.0(rw,no_root_squash,async)



/etc/default/tftpd-hpa
(Para lograr un correcto funcionamiento del servidor ftp tftpd-hpa, editamos el archivo cambiando RUN_DAEMON="no"  por “yes” y corrigiendo la ruta del directorio de booteo por  “/tftpboot”)

#Defaults for tftpd-hpa
##RUN_DAEMON="no"
RUN_DAEMON="yes"
##OPTIONS="-l -s /var/lib/tftpboot"
OPTIONS="-l -s /tftpboot"


/etc/inet.conf
(Además verificamos que este configurado el directorio de booteo “/tftpboot” al final de la 1ra linea)

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

/opt/ltsp/i386/etc/lts.conf
(Configuración general y personalizada para dos clientes ws001 y ws002)

[Default]
        SERVER                  = 192.168.1.254
        XSERVER                        = auto
        X_MOUSE_PROTOCOL       = "PS/2"
        X_MOUSE_DEVICE              = "/dev/psaux"
        X_MOUSE_RESOLUTION      = 400
        X_MOUSE_BUTTONS            = 3
        XkbModel                        = pc101
        XkbLayout                       = es
        USE_XFS                         = N
        LOCAL_APPS                      = N
        RUNLEVEL                        = 5
        SCREEN_01                   = startx
        SWAPFILE_SIZE           = 64m
        USE_NFS_SWAP            = Y

        ##para activar local devices
        LOCAL_STORAGE              = Y
        LOCAL_DEVICE_01            = /dev/hdc:cdrom
        LOCAL_DEVICE_02            = /dev/fd0:floppy
        LOCAL_DEVICE_03            = /dev/uba:usb
        HOTPLUG                         = Y

        #para activar el sonido
        SOUND                           = Y
        SOUND_DAEMON               = esd
        #SMODULE_01                     = "sb io=0x220 irq=5 dma=1"
        #VOLUME                         = 75
        #MIC_VOLUME                = 75

        #para activar el apagado de los clientes
       ALLOW_SHUTDOWN              = Y

[ws001]
        X_MODE_0       =       800*600

[ws002]
        X_MODE_0       =       1024*600
        
        
Para entender todas las opciones disponibles para este archivo debemos dar una leída a la documentacion :p.       
    
    

CARACTERISTICAS ADICIONALES

3.1. LOCAL DEVICES

En la versión 4.2 la opción de Local Devices ha sido notablemente mejorada, ésto se refiere a poder acceder a los dispositivos de almacenamiento local de cada cliente, ya sea floppy, usb keys, CD-ROMs y otros.


    Editar el archivo dhcpd.conf, si estamos asignando ips fijas a nuestros clientes agregamos la siguiente linea:
use-host-decl-names         on;

Si estamos asignado ips dinámicas agregamos la siguiente linea:
get-lease-hostnames         true;

    Instalar los siguientes paquetes:
fuse-utils
libfuse2

    Cargamos fuse: $sudo modprobe fuse

    Agregamos los usuarios al grupo fuse:
Ejemplo: $sudo adduser user01 fuse

    Instalamos la librería X11 de soporte para perl
$sudo aptitude install libx11-protocol-perl

    Instalamos el paquete de Soporte de Local Devices de LTSP , disponible en la siguiente página dependiendo de la distribución que usemos:
http://wiki.ltsp.org/twiki/bin/view/Ltsp/LTSP-42-LocalDev#Installing_the_LTSP_localdev_sup

Para Ubuntu descargamos este paquete:
http://ltsp.mirrors.tds.net/pub/ltsp/utils/ltsp-server-pkg-ubuntu_0.1_i386.deb

Y lo instalamos como ya sabemos: $sudo dpkg -i <paquete>

    Editar el archivo /opt/ltsp/i386/etc/lts.conf y a la sección default agregarle las siguientes lineas:

LOCAL_STORAGE               = Y
            LOCAL_DEVICE_01             = /dev/hdc:cdrom
           LOCAL_DEVICE_02             = /dev/fd0:floppy
            LOCAL_DEVICE_03             = /dev/uba:usb
HOTPLUG                     = Y

    Para desactivar la el acceso y lectura continuas al floppy editamos el archivo
/opt/ltsp/i386/etc/udev/rules.d/15-ltsp-block.rules :
    
En la sección  “Legacy Floppy” comentar la linea
KERNEL=="fd[0-9]*",     RUN+="/etc/udev/scripts/ltsp-device.sh"
(usualmente es la linea 19)

Y temporalmente para solucionar un bug con el soporte para unidades usb, comentamos la linea 12:
##KERNEL=="sd[a-z]",      RUN+="/etc/udev/scripts/ltsp-device.sh %s{size}"
que esta dentro de la sección “USB Pens”
    

3.2. INICIO CON PXE


  
 Editar archivo dhcpd.conf

group {
        use-host-decl-names     on;
        option log-servers      192.168.1.254;
        filename                "/lts/2.6.17.8-ltsp-1/pxelinux.0";

        host ws001 {
                hardware ethernet       00:16:76:3A:B7:FF;
                fixed-address           192.168.1.1;
         }

        host ws002 {
                hardware ethernet       00:16:76:3A:AE:7D;
                fixed-address           192.168.1.2;
         }

}

    Revisar que tengamos en la siguiente ruta /tftpboot/lts/2.6.17.8-ltsp-1 los archivos:


     bzImage-2.6.17.8-ltsp-1
     initramfs.gz
     pxelinux.0
     pxelinux.cfg

Y editamos el archivos /tftpboot/lts/2.6.17.8-ltsp-1/pxelinux.cfg/default :

prompt 0
label linux
  kernel bzImage-2.6.17.8-ltsp-1
  append rw root=/dev/ram0 initrd=initramfs.gz

 

3.3. AUTOLOGIN CON USUARIOS ESPECIFICOS PARA CADA CLIENTE


  
 Modificamos el /etc/gdm/gdm.conf

[daemon]
AutomaticLoginEnable=false
AutomaticLogin=/usr/bin/autologin.sh|
TimedLoginEnable=true
TimedLogin=/usr/bin/autologin.sh|
TimedLoginDelay=5

[security]
AllowRemoteAutoLogin=true

    Luego crear en /usr/bin el script autologin.sh con el siguiente contenido:

#!/bin/bash
HOSTNAME=`echo ${DISPLAY} | cut -f1 -d: | awk -F . {' print $1 '}`
echo $HOSTNAME
exit 0

Grabar y darle permisos de uso con #chmod +x /usr/bin/autologin.sh

    Ahora debemos crear en /etc/gdm/PostSession archivos con el mismo nombre de nuestros terminales, en mi caso son ws001, ws002, etc.
El contenido de esos archivos es:

#!/bin/sh

PATH="/usr/bin/X11:/usr/X11R6/bin:/opt/X11R6/bin:$PATH:/bin:/usr/bin"

SESSREG=`which sessreg 2>/dev/null`
if [ "x$SESSREG" != "x" ] ; then
        "$SESSREG" -d -w /var/log/wtmp -u /var/run/utmp -x "$X_SERVERS" -h
"$REMOTE_HOST" -l "$DISPLAY" "$USER"
fi

#Borramos los datos del usuario
rm -R /home/$USER
#Copiamos la cuenta usuario tipo
cp -a /etc/skel/. /home/$USER
#Nos aseguramos de qué el usuario es el dueño
chown -R $USER:users /home/$USER
exit 0

Una mejor idea seria crear un archivo llamado ws001 y que los demás sean enlaces simbólicos a él.

 

3.4. APAGAR Y REINICIAR A LOS CLIENTES DESDE EL SERVIDOR


    
Editar el archivo lts.conf y agregar  la linea:
ALLOW_SHUTDOWN = Y

    Luego para apagar el cliente ws001 ejecutar desde el terminal:
#ltspinfo -h ws001 –shutdown

Si quisiéramos reiniciar al cliente solo basta con reemplazar el parámetro --shutdown con –reboot
 
< Anterior   Siguiente >