Inicio > Español, Telecentros > Una red de telecentros con software libre: Sistema operativo I

Una red de telecentros con software libre: Sistema operativo I

14 septiembre, 2011

Tras tratar el esquema básico de un telecentro, vamos a hacer un pequeño repaso de los principales desarrollos que hemos realizado para la distribución Linux que se ejecuta en los telecentros. Se trata de una derivada de la distro usada en los centros Guadalinfo, y basada en Ubuntu/Debian. De nuevo, mi reconocimiento para Alfredo Matas, Javier Hernández, David Teyssiere, Enrique Jiménez, José Ignacio Álvarez y Roberto C. Morano, desarrolladores de este proyecto y con quienes he tenido el gran placer de trabajar y el privilegio de aprender de ellos. ¡Al lío!

Para los equipos cliente de los centros hemos desarrollado una derivada de Ubuntu basada en la distribución presente en los centros Guadalinfo, dotada de una serie de cambios para adaptarla a su funcionamiento en telecentros. Dichas modificaciones van en dos líneas principales: la eliminación de configuraciones heredadas de Guadalinfo, y la aplicación de las configuraciones específicas para telecentros.

Splash de inicio del sistema

Branding

La modificación que primero llama la atención es, evidentemente, el branding gráfico. Se ha modificado el usplash de la distribución, el tema de gdm, el tema de escritorio y, cómo no, el fondo de pantalla. Se han incluido los logos de los diversos organismos que participan en el proyecto, pero en líneas generales se ha conservado la estética general de Guadalinfo.

Todos estos cambios están contenidos en un único paquete Debian

Primera pantalla del instalador

Instalador Live

La distribución se distribuye como un sistema Live con un instalador personalizado. Dicho instalador tiene realizados los “preseed” necesarios para que la instalación no precise de intervención del usuario, más allá de lanzar el proceso de instalación.

Además, se realizan las tareas necesarias para preparar el sistema de restauración — generar una imagen de partimage, concretamente — y se realizan las altas de usuarios esenciales para el sistema.

Opción de arranque para restaurar el sistema

Sistema de restauración

Nuestra primera aproximación a la restauración del equipo consistía en habilitar almacenamiento en el router del centro, y realizar un arranque del instalador completamente automatizado, por PXE. Pero al no ser posible cablear los centros, el arranque remoto quedó descartado. Por tanto hemos optado por un sistema que, si bien no cubre la corrupción de las particiones del disco, sí ayuda en la resolución de ciertos errores de disco.

Fijaos que la única eventualidad contemplada son los fallos del sistema de ficheros: la corrupción del sistema por su uso continuado no es posible al no tener los usuarios derechos de administración y resetearse sus carpetas personales con cada sesión.

Bien, lo que hemos implementado ha sido un esquema de particionado de 4 particiones:

  • La primera partición contiene el sistema instalado, sin más.
  • La segunda partición se monta en /var/cache/apt, de forma que las actualizaciones se almacenan en una partición independiente de la del sistema.
  • La tercera partición contiene una imagen de la partición de sistema.
  • La cuarta partición contiene la swap de Linux.

Recuperando el sistema


La tercera partición incluye todo lo necesario para arrancar un programa de restauración que vuelque la imagen de la partición del sistema a la primera partición, y que realice comprobaciones de integridad de la partición que aloja las actualizaciones. Esta partición no se monta durante el funcionamiento habitual del sistema, a fin de minimizar las posibilidades de que pueda dañarse, por ejemplo, ante un apagado indebido.

El grub del sistema incluye una opción de arranque que inicia el proceso de restauración. Una vez restaurado el sistema, al tener ya descargadas las actualizaciones, se actualiza con mayor velocidad y sin apenas consumo de ancho de banda.

La generación de la imagen de la partición de sistema se realiza como último paso del proceso de instalación.

Panel de anuncios

GDM con panel de anuncios

En Guadalinfo se cuenta con personal en el centro dedicado a la gestión del mismo, la dinamización, impartición de cursos, información a los usuarios y demás. La persona responsable es, además, la vía de comunicación principal entre los usuarios y la dirección del proyecto: desde avisar en caso de actualizaciones que fueran a afectar al comportamiento del sistema, hasta informar de la instalación de nuevo software o de la aparición de un bug en proceso de resolución. Por tanto, en Guadalinfo el sistema no tiene que implementar ningún sistema de avisos a los usuarios.

No obstante, la red de telecentros que estamos tratando no cuenta con personal dedicado en los centros. Tanto si se instala una nueva aplicación, como si se detecta un bug importante o aparece alguna duda reiterada por parte de los usuarios, el sistema operativo debe contar con medios para transmitir dicha información de forma clara y visible. Para ello el equipo ha desarrollado un “panel de anuncios” que se muestra en GDM a la izquierda de la ventana de “login”.

Dicho panel está implementado en Python + GTK, y contiene un widget Browser que carga un fichero html plano contenido en el servidor de teleadministración. Puede ser plegado y desplegado (siempre se inicia en este último estado), y se lanza a través de un fichero .desktop ubicado en /usr/share/gdm/autostart/LoginWindow/

Gestión de usuarios

Alta de usuarios

En el caso del alta de usuario, nos hemos encontrado con el mismo problema que con el panel de anuncios: una funcionalidad que, al carecer de personal en el centro, deben realizar los usuarios de forma autónoma. Aunque trataré con más detalle la gestión de usuarios en un futuro post, tan solo indicar que los usuarios son creados en un servicio remoto y no en local, y sus datos sociodemográficos (si el usuario decide facilitarlos) son almacenados de forma anonimizada para el cálculo estadístico que la dirección del proyecto ha establecido.

De nuevo, la aplicación de alta ha sido realizada en Python + GTK, pero es lanzada a través de un botón en la pantalla de GDM. Eso ocasiona que la aplicación adquiera el tema de GDM, razón por la que toma los colores oscuros que podéis apreciar en las capturas. De todo el proceso de desarrollo de esta aplicación, su integración con GDM ha sido lo más costoso, teniendo que realizar cambios incluso en el código de GDM.

No obstante, el desarrollo que consideramos más novedoso ha sido la implementación del sistema de autenticación. A través de un módulo PAM y un servicio dbus, el sistema autentica usando un webservice en nuestro servidor central, y crea el usuario en local si el login es correcto (tal y como he indicado antes, lo trataré con más detalle en futuras entradas). Los usuarios creados carecen de privilegios de administración.

Borrado de datos de usuario

Al carecer de un equipo servidor en el centro, en el que poder realizar un almacenamiento centralizado de los datos de usuario (como sucede en Guadalinfo), y por motivos de privacidad y prevención de agotamiento del espacio en disco, tanto al iniciar sesión como al cerrarla se realiza un borrado del directorio de usuario recuperando el skel básico del mismo.

¿Por qué dos borrados y no solo uno?

Imaginad que solo borramos datos al iniciar sesión. Un usuario inicia sesión, descarga 10 GB de datos y cierra sesión. Dichos 10 GB se mantienen en disco hasta que el usuario no vuelva a iniciar sesión, pero ¿y si el usuario no vuelve al centro? Esos 10 GB se quedan ocupando espacio. Ahora imaginad lo mismo pero con 30 o 40 usuarios, y veréis que tenemos un problema.

Veamos el caso contrario: sólo borramos al cerrar sesión. Un usuario llega, descarga 10 GB y por la razón que sea no hay un cierre de sesión correcto: por ejemplo por un corte de luz, frecuente en poblaciones de difícil acceso. Nos encontramos con un caso parecido al anterior.

Por tanto, y dado que no es ni complicado de implementar ni costoso para el hardware, hemos optado por realizar el borrado tanto al inicio como al cierre de la sesión.

Network manager y cierre de sesión

Conexiones por NetworkManager

Para la gestión de las conexiones de los equipos, en lugar de usar el clásico /etc/network/interfaces hemos optado por hacer uso del sistema de conexiones de sistema que proporciona Network Manager. Para ello se han creado los ficheros correspondientes en /etc/NetworkManager/system-connections.d/. Importante señalar que los permisos de los mismos deben ser 600 con root como propietario: ésto nos dió algún que otro dolor de cabeza.

Usar NetworkManager permite contar con varias opciones de conexión (varias configuraciones para varias redes WiFi, por ejemplo, o un perfil de conexión WiFi y otro cableado), y que el sistema cambie de forma automática a una u otra según la disponibilidad de la misma. Además, el applet de conexión ofrece información al usuario facilitando el diagnóstico de incidencias de conectividad (precisamente aquellas en las que no podemos acceder remotamente).

Restringiendo NetworkManager

Conexión no editable con Network Manager

Aunque usamos NetworkManager, las conexiones de red no deben ser modificables por los usuarios. Para ello se ha procedido a restringir ciertas funcionalidades de NetworkManager.

La posibilidad de crear nuevas conexiones se ha deshabilitado a través de PolicyKit. No obstante, el control de las conexiones existentes no soporta PolicyKit, y ha tenido que deshabilitarse cortando el acceso por DBus del applet a ciertos métodos del servicio de NetworkManager. El applet no está preparado para funcionar así, por lo que en ciertas ocasiones muere: es un bug pendiente de solucionar.

Aplicaciones de accesibilidad

Selección de aplicaciones

Con respecto a la selección de aplicaciones no hay nada especial que destacar, a excepción del soporte de accesibilidad: se han incluido desarrollos propios de Guadalinfo y aplicaciones que, de serie, no están incluidas en una distribución estándar Linux. Contamos en el equipo con Javier Hernández, desarrollador de Orca y Gnome, lo que nos ha ayudado a dotar al sistema de un soporte de accesibilidad más que aceptable.

¿Ideas, opiniones, críticas?🙂

A %d blogueros les gusta esto: