| 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
INSTALACIONPara 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 ADICIONALES3.1. LOCAL DEVICESEn 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 |