05 agosto 2007

Cómo instalar LTSP en Feisty. Terminales tontas.

Ha venido a mis manos un trasto viejo, un pentium 200. Tiene una gráfica ATI decente para la época (hace 10 años) y 64 MB de memoria, una cantidad de risa actualmente, pero utilizable. Lo primero que he hecho ha sido instalarle debian con el escritorio xfce. Es bastante lento, así que habrá que aprovecharlo de otra manera.
El equipo de uso va a hacer de servidor de terminal aprovechando el proyecto de servidor de terminal de linux (LTSP). Hice una pequeña descripción aquí. Con él podremos utilizar un ordenador totalmente desfasado como si estuviéramos delante de uno moderno.

Es bastante fácil ponerlo en marcha si no hay contratiempos. La información sobre esto en la red no es ninguna maravilla y me he tirado toda la mañana con esto, porque una parte se negaba a funcionar. El servidor tftp no se iniciaba desde inetd por haber interferencias, así que he tenido que chapucear un poco antes de darme cuenta de que realmente instala todo convenientemente él solito.

La terminal no tendrá disco duro y arrancará por red. Necesita arrancar por PXE y la tarjeta de red ha de soportarlo. Si la lleva la placa base lo normal es que lo soporte y funcionará sin hacerle nada, y si es añadida, deberá llevar un chip para la rom. Si está el zócalo vacío, o simplemente no hay manera de que funcione así y no puede usarse este método, antes que nada veremos el otro. Habrá que arrancar con un disco.
Primero comentaremos cómo hacerlo con un disquete; cutre, pero efectivo. Para ello hemos de comprobar qué dispositivo es la tarjeta de red que vamos a usar en la terminal. Habrá que montar la tarjeta en algún equipo que podamos manipular y después escribir en una consola:

lspci|grep net
lspci -n

Con lo primero vemos el modelo y con el segundo hemos de buscar, viendo los números de la primera columna, cual es el código del fabricante y el modelo. Sabiendo esto, vamos a esta página (elegir la última versión, actualmente 5.4.3) a buscar una ROM para la tarjeta que usaremos en el disquete. En el desplegable buscamos el modelo. Si no lo encontramos, hemos de buscar el nombre de su controlador aquí (o en el enlace que hay en la misma página) y luego volver a buscarlo en el desplegable, sabiendo que pondrá controlador:modelo. Descargamos el archivo pulsando en "Get ROM" y metemos un disquete en la disquetera.
Después vamos adonde tenemos el archivo y escribimos:
cd DirectorioDondeLoHemosGuardado
cat eb-5.2.4-ns8390.zdsk >/dev/fd0

Con esto ya tenemos el disco de arranque listo para usar.

Si queremos usar un CD (un desperdicio, pero más fiable), seguiríamos el mismo procedimiento, pero en la página de ROM-o-matic, elegiríamos en "ROM output format" "ISO bootable image" y grabaríamos la imagen descargada con el k3b o con el programa que queramos. Obviamente necesitaremos que nuestra terminal tenga lector, que seguramente sólo servirá para arrancar.
También puede hacerse con un lápiz USB, pero es más costoso de hacer.


Una vez claro cómo arrancar las terminales, empecemos a instalar cosas en el equipo que hará de servidor.

El método normal hace que se instale y configure todo prácticamente él solo. Instalamos ltsp:
sudo apt-get install ltsp-server-standalone

Hay que usar ltsp-server si quieres usar un servidor dhcp aparte en lugar del que se instala por defecto (dhcp3-server) en la propia máquina. Si así fuera tendrías que configurar en aquella máquina el archivo /etc/dhcp3/dhcpd.conf.

Con el servidor único dedicado el archivo a configurar sería, aunque por defecto seguramente estará todo correcto, el /etc/ltsp/dhcpd.conf
Ahí pondrá algo parecido a lo siguiente:
authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.20 192.168.0.21;
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;
option subnet-mask 255.255.255.0;
if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
filename "/ltsp/i386/pxelinux.0";
}
else{
filename "/ltsp/i386/nbi.img";
}
option root-path "/opt/ltsp/i386";
}

Tiene exactamente la misma sintaxis que el archivo de configuración de dhcpd, puesto que dicho servidor lo utiliza. Por defecto los datos serán correctos, pero podemos por ejemplo cambiar el rango de direcciones, como en este caso que se lo he reducido al 20 y 21.

Se instalan automáticamente openbsd-inetd y tftp-hpa. El primero se configura con el archivo /etc/inetd.conf y el segundo con /etc/default/tftpd-hpa. Tftp se inicia desde inetd a no ser que lo reconfiguremos con dpkg-reconfigure tftpd y elijamos que sea un demonio. Realmente esto es totalmente innecesario. En el segundo archivo por defecto pondrá:
RUN_DAEMON="no"
OPTIONS="-l -s /var/lib/tftpboot"


Ahora tenemos que construir el entorno de terminal. Esto tardará bastante, porque descarga algo parecido a una minidistribución:
sudo ltsp-build-client

Después de esto instalamos el servidor ssh. Todas las conexiones de terminal se realizan por conexión segura y comprimida:
sudo apt-get install openssh-server
sudo ltsp-update-sshkeys

La segunda línea es necesario repetirla cuando, por la razón que sea, cambiemos la ip del servidor.

Para reiniciar los servidores comentados, por si hacemos cambios en sus configuraciones, haríamos:
sudo /etc/init.d/dhcp3-server restart
sudo /etc/init.d/tftpd-hpa restart
sudo /etc/init.d/openbsd-inetd restart

El tftpd-hpa es el que ha dado algún problemilla. Si su reinicio hace algo raro es que no funciona. La manera de solucionarlo en ese caso sería reconfigurar como indicaba antes, ponerlo como demonio (RUN_DAEMON="yes") y desactivarlo en inetd, y volver a reiniciar con las lineas anteriores.

Ahora nos podemos ir a la máquina vieja y ver cómo arranca por red. Tanto con el disquete como por pxe ha funcionado correctamente.
Si queremos configurar algo para los equipos que se conectarán, tenemos el archivo /opt/ltsp/i386/etc/lts.conf. Por defecto detecta todo automáticamente y ha funcionado perfectamente.

Actualizado 18/08/07: Con el pentium200 tarda en arrancar 3:25 mas los 25 segundos de la BIOS y tal, 4 minutos, pero nos entretenemos mientras porque va mostrando lo que hace. Parece ser que debería tardar bastante menos, y se ralentiza por alguna cuestión de esta versión. Posteriormente funciona prácticamente como si estuvieramos delante del servidor, así que tampoco pasa nada.

He detectado un problema que consiste en una exagerada ralentización del servidor (las X tardan una eternidad en arrancar) esté o no conectado el cliente. Tiene una fácil solución. Si tenemos una terminal abierta, veremos que hay un error recurrente sobre pulseaudio. Pues ésto parece ser la causa. Para corregirlo instalamos pulseaudio y posiblemente también será necesario pulseaudio-esound-compat, que se quejará de una dependencia, pero no tiene importancia. Ahora funciona perfecto.

10 comentarios:

Anónimo dijo...

hola segui tus pasos y me da un error cuando comienza a cargar al cliente, los servidores dhcp tftp andan ok. me sale algo asi ata1.01 : exception Enmask, la pc es un pentium I 233mhz con 64 mb ram y la booteo con rom-matic o algo asi. Creo q puede llegar a ser acpi en off, pero nose donde configurar esta parte? que me podes decir vos. otra cosa el sonido es el thin es onboard usa el modulo snd-cmi8330 como lo cargo?

El 64 dijo...

Si te da un error "ata" es que tienes un problema con el disco duro. Puesto que el servidor debe ir bien, será el que tienes en la terminal, que no es imprescindible. Desconéctalo y si sigue el error, desactiva la controladora en la bios.
Sobre el sonido integrado o lo que sea, los módulos se cargan añadiendo una linea en el archivo que indicaba en el artículo.

Abraham Zamudio dijo...

hola tengo una duda .... qe debo instalar para qe los clientes tengan entorno grafico , encontre esto para el lts.conf

[Default]
SERVER = 192.168.0.1
XSERVER = XF86_SVGA
X_MOUSE_PROTOCOL = "PS/2"
X_MOUSE_DEVICE = "/dev/psaux"
X_MOUSE_RESOLUTION = 400
X_MOUSE_BUTTONS = 2
USE_XFS = N
SCREEN_01 = startx
SCREEN_02 = shell

y bueno me arranca pero sin entorno grafico . espero solucones XDDD

El 64 dijo...

Lo que has encontrado no creo que te sea muy útil. Parece algo desfasado. Prueba simplemente
[Default]
XSERVER = vesa
y cuentame.

Anónimo dijo...

muyy bueno, pero porfa explica como hago para tener entorno gráfico en el cliente

El 64 dijo...

Debería funcionarte directamente, pero puede que no reconozca tu tarjeta gráfica. ¿Has configurado el archivo como decía antes? ¿Te sale algún error? Hacen falta datos.

Anónimo dijo...

Hola compañeros, tengo un error el reiniciar el servidor dhcp3-server, no modifique nada solo lo reinicie, falla en el sttoping y en el starting, el tftpd-hpa no marca ningun error y no da ningun mensaje creo que esta bien, y el openbsd esta correcto, que puede pasar con el dhcp3-server?????, estoy en una lap top que sera el servidor de una de las terminales tontas

Jorge Emir dijo...

Hola he seguido todo el tuto y al parecer todo carga de maravilla, el poblema que tengo es cuando quiero loggearme me pide user y pass, y despues verifica pass y al cabo de unos segundos dice que el servidor no responde que reiniciara y ya no reinicia se queda congelada la pantalla... espero me puedas ayudar... saludos.

Anónimo dijo...

hola, disculpa habra manera de poder contactarte es que tu sabes acreca de algo que me interesa porfavor escribeme a yomy.yom@gmail.com en vdd me urge saludos bye

El 64 dijo...

Cualquier duda puedes compartirla aquí. De todas maneras, hasta un próximo artículo con una versión reciente no podré añadir mucho más a lo comentado. Lo tengo algo oxidado. Tras las vacaciones lo veremos.