Archive for the 'linux' Category

Como montar un terminal Kiosk con debian y firefox

No suelo escribir sobre mi trabajo…pero esta semana como caso excepcional, he estado haciendo tareas de administrador de sistemas, en lugar de programar…y he tenido que enfrentarme a un problema bastante complejo, que pensaba que estaría mas documentado, pero no….

El problema es como modificar un debian, para que nada mas encenderlo autoconfigure la wifi (esto es fácil), muestre una pantalla visual con el logo de la empresa o organización mientras carga el sistema, y cuando acabe, ejecutar un firefox a pantalla completa, del que no se pueda salir para nada, y tampoco de cerrar las X, es decir, el terminal se convierte en un firefox en pantalla completa. A esto se le llama terminal kiosk.

Este artículo no cubre la parte de configurar las X o la red en debian, ya que se supone que si intentas montar un kiosk con debian, entiendes mas o menos como configurar el sistema básico usando esta distro linux.

Existen varios documentos acerca de como conseguir esto en debian, sin embargo se complican demasiado, están desactualizados o son erróneos en mayor o menor medida, así que he decidido documentar como lo he hecho yo, ya que me ha quedado bastante bien, y no requiere mucho trabajo.

El primer paso es instalar debian, etch o lenny, con el cd normal de instalación que podemos descargar de la web, al escoger los conjuntos de paquetes a instalar, solo dejamos marcado sistema base y equipo portátil si es un ordenador portátil.

Al terminar la instalación, tendremos un sistema que inicia y muestra un login en consola, y al hacer login obtenemos una consola, nada mas.

Configuramos la red según las necesidades, antes de continuar, y despues de configurar la red…

El primer paso es modificar el fichero /etc/apt/sources.list que contiene los repositorios de paquetes que utilizará aptitude para instalar software, lo dejamos así:

deb http://http.us.debian.org/debian etch main contrib non-free

Si estamos usando etch, o bien:

deb http://http.us.debian.org/debian lenny main contrib non-free

Si estamos utilizando lenny.

Ahora actualizamos la lista de paquetes:

apt-get update

Ahora ya tenemos la lista de paquetes actualizados, instalamos:

apt-get install xserver-xorg mingetty iceweasel

Esto instala las X y firefox, además de mingetty que ahora veremos que hace, y firefox, que en debian se llama iceweasel, por problemas de licencias.

Una vez instalados, creamos un nuevo usuario, lo llamamos kiosk por ejemplo, hacemos:

su kiosk

Para pasarnos a su cuenta, y creamos dos archivos en su home, uno llamado .bash_profile, que contenga:

while true
do
startx
done

Eso es un bucle en bash que ejecuta las X infinitamente, por lo que si por algún las X se cerrasen, volverían a lanzarse automaticamente.

El archivo .bash_profile contiene comandos a ejecutar cuando el usuario kisok inicia sesión (solo si su consola es bash, como es el caso en debian)

Ahora que ya hemos configurado que cuando “kiosk” haga login se ejecuten las X, vamos a configurar que es es lo que se ejecutará encima de las X, es decir, ni gnome, ni kde, sino que editamos el archivo /home/kiosk/.xinitrc e introducimos:

iceweasel

Esto hará que el usuario obtenga un iceweasel inmediatamente encima de las X.

Navegamos con ese firefox e instalamos la extensión r-kiosk, la cual pone el modo pantalla por defecto, del cual no se podrá salir, no permite descargar archivos y no permite salir del firefox de ninguna manera.

Ahora ya tenemos que cada vez que kiosk haga login, se ejecutarán las X, se ejecutará un firefox encima, y se pondrá a pantalla completa, sin que se pueda salir de el, solo nos falta hacer que kiosk haga login automáticamente nada mas arrancar el sistema, para ello editamos el fichero /etc/inittab y modificamos:

1:23:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

Cambiandolo por:

1:23:respawn:/sbin/mingetty –autologin kiosk tty1
#2:23:respawn:/sbin/getty 38400 tty2
#3:23:respawn:/sbin/getty 38400 tty3
#4:23:respawn:/sbin/getty 38400 tty4
#5:23:respawn:/sbin/getty 38400 tty5
#6:23:respawn:/sbin/getty 38400 tty6

Esto hará que nada mas iniciar debian, sea el usuario kiosk quien inicie sesión, sin que lleguemos a ver la pantalla de login.

Ahora solo nos falta instalar splashy, lo cual solo es posible si hemos hecho todo lo anterior con lenny, por que en etch no hay paquete de splashy en aptitude:

apt-get install splashy

Splashy lo que hace es situar una pantalla gráfica que se muestra con una barra de progreso, mientras inicia debian, en luga de mostrar texto en el arranque.

Si queremos modificar la imagen que mostrará splashy al iniciar el sistema, solo hay que sustituir:

/etc/splashy/themes/default/background.png

Por un png nuestro, que debe ser de 1024×768, una vez sustituido debemos regenerar initram, con:

update-initramfs -u -t

Para que splashy funcione, hay que modificar nuestro /boot/grub/menu.lst y agregar: vga=791 splash al final de los parametros pasados al kernel en el arranque, es decir, cambiar algo similar a esto:

kernel        /boot/vmlinuz-2.6.24-19-generic […]

Por:

kernel        /boot/vmlinuz-2.6.24-19-generic […] vga=791 splash

Ahora ya tenemos nuestro splashy listo.

Si queremos deshabilitar el ctrl+alt+backspace que detiene las X, solo hemos de agregar:

SectionServerFlags
Option “DontZap
EndSection

A nuestro /etc/X11/xorg.conf, pero en realidad no hace falta, por que ejecutamos startx dentro de un bucle 🙂

También podría ser interesante que configuréis grub para pedir password antes de editar ningún parámetro de inicialización, pero eso ya entra dentro de temas específicos de las necesidades de cada uno.

Como vemos, montar un kiosk con debian es muy fácil, son las bondades del software libre.

Anuncios