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.

15 Responses to “Como montar un terminal Kiosk con debian y firefox”


  1. 1 macopc septiembre 11, 2008 a las 8:01 pm

    Vaya muy interesante y muy facil, ademas del detalle de lanzar solamente iceweasel (no sabia que se pudiera hacer).

    Me lo apunto porque seria una opcion perfecta para un equipo publico que pudieran usar los clientes de la tienda donde trabajo.

    Gracias por compartirlo.

    Saludos.

  2. 2 rooibo septiembre 12, 2008 a las 11:48 pm

    Gracias macopc, y suerte con el tema!

  3. 3 Mauro septiembre 16, 2008 a las 2:29 am

    ja, no pense que alguien queria hacer exactamente lo mismo que yo. buenisima la info lo estoy haciendo con slax desde minicomputer con solo un usb, son terminales bobas para ver solo un sitio. gracias d nuevo

  4. 4 rooibo septiembre 17, 2008 a las 6:58 pm

    Hola Mauro, suerte con slax y me alegro de que te el artículo te sirva de ayuda!

  5. 5 castarco octubre 6, 2008 a las 4:19 pm

    Una pregunta: ¿se sigue pudiendo cambiar el terminal? Por que si es un equipo público y aparece algun listillo podría dejar el equipo mostrando una tty esperando un login.. haciendo que el equipo sea inservible para los no iniciados.. ¿Como se haría para evitar eso? (Solo se me ocurre iniciar manualmente el firefox en todas las tty.. pero si el equipo se reinicia por un corte de tensión.. después de eso ya no estaría cargado en las otras ttys..

    Segunda pregunt, viene por esto (Nota del complemento R-Kiosk):

    Notice that the user can still close Firefox with for example Alt-F4 and get access to your computer. You might want to prevent this with a suitable utility program for your operating system.

    ¿Qué pasa cuando se cierra Firefox? ¿Se cierran las X con él y entonces el bucle que has creado hace su magia?

    Weno, que soy un pesado, jeje, lo probaré yo mismo. Muy interesante el artículo!😀

  6. 6 rooibo octubre 6, 2008 a las 5:04 pm

    Hola castarco, gracias por el comentario.

    Es importante elimianr el archivo keys de ~/.fluxbox/keys para que no exista alt+f4 ni nada de eso, además, en caso de que firefox pete por lo que sea, se finalizarían las X, y el bucle haría su magia, comprobado🙂

    El tema del tty es mas complejo, se sigue pudiendo cambiar de tty, lo que dejaría el terminal inservible, hasta que alguien vaya y lo vuelva a poner en el tty1, la única solución es crear un programa que salte al terminal uno al ser ejecutado, y ponerlo en el resto de terminales, pero esto ya es mas complejo.

    Suerte!

  7. 7 ugaitzg octubre 14, 2008 a las 8:57 pm

    Suponiendo que inittab este tal y como tu decías no existen mas tty’s que la 1, no? el resto están todas comentadas, no deberían arrancar, no?

    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

    saludOS
    ugaitzg

  8. 8 jcarlosn octubre 15, 2008 a las 4:21 pm

    hola ugaitzg, gracias por el comentario.

    En realidad, pese a que están quitadas, si intentas acceder a ellas, en algunos sistemas se ve la pantalla en negro sin nada, al saltar a ellas, en la mayoría, no puedes ni saltar a ellas🙂

  9. 9 zAIRcon octubre 17, 2008 a las 9:33 pm

    Esto es lo bueno de GNU/Linux, siempre hay cosas nuevas por aprender.

    Muy buen articulo.

    Saludos

  10. 10 anonymous octubre 20, 2008 a las 7:58 am

    Perfecto!

    Pero ahora, sale el navegador, y debajo la pantalla fea de las X. Esto se puede personalizar, es decir que las X tengan un fondo por defecto un poco más vistoso??

    saludos y gracias!

  11. 11 Itubal noviembre 10, 2008 a las 6:06 pm

    Hola:
    Magnifico artículo. Sencillo.

    ¿Podria, en vez de firefox, ejecutar una aplicación Java?

    ¿como?. Sin cargar gnome.

    Gracias

  12. 12 castarco noviembre 13, 2008 a las 9:27 am

    donde pones iceweasel en este tutorial, tendrías que cambiarlo por:

    java ‘y lo que venga detras para ejecutar tu programa’
    🙂

  13. 13 GarZa marzo 4, 2009 a las 8:59 pm

    Hola, buen artículo.

    Lo he seguido paso a paso, y va todo OK, salvo que firefox no cubre toda la pantalla, aunque esté a pantalla completa, en la parte de la derecha queda una franja y se ve la pantalla de las X. ¿Como podría extender firefox a toda la pantalla?

  14. 14 Antonio abril 10, 2012 a las 4:46 pm

    Buenas, gran artículo.

    Yo no lo he hecho funcionar porque al arrancar el sistema me da el mensaje de init: Id “x” respawning too fast: disabled for 5 minutes. He modificado el inittab tal y como tú propones. ¿Se te ocurre qué puede estar sucediendo? ¿Actualmente seguiría siendo esta la manera de configurar un kiosco en Linux?

    Gracias de ante mano.

  15. 15 Carlos Herrera julio 27, 2016 a las 7:47 am

    he comprado 10 unidades de raspberry pi 3, necesito ponerla en modo kiosko y lo he conseguido con una de ellas aunque no sé ni cómo pero el problema es que lo he redirigido mal a la página y necesito podificarlo y ahora resulta de que está bloqueado y me pide unas claves. Menudo embrollo me he metido. Por favor, alguien que me ayude!!!! ESTOY DESESPERADO!!!
    Carlos carlosherrera_80@hotmail.com


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s





A %d blogueros les gusta esto: