Funcionamiento de Canaima Instalador

En este apartado se explicará la estructura y funcionamiento de Canaima Instalador. Esta aplicación está desarrollada en lenguaje Python y consiste en un asistente de instalación guiada de Canaima GNU/Linux, en pocos pasos y de fácil uso para los usuarios comunes.

Esta referencia está basada en la versión 2.x del instalador y pretende servir de introducción a todos aquellos desarrolladores y entusiastas que estén interesados en participar o tan solo conocer cómo funciona esta herramienta.

Estructura

A nivel de código fuente, el instalador se estructura en un formato similar al conocido Modelo Vista Controlador (MVC), aunque para ser sinceros, no totalmente. Hay partes del código que no están bien adaptadas a esta técnica.

A nivel de interfáz gráfica se puede describir como un Asistente que va guiando al usuario a través de cada uno de los Pasos para la instalación.

Representación gráfica de la estructura de Canaima Instalador

El Asistente: se puede describir como la interfaz gráfica general, es como el marco donde se van insertando los pasos a medida que el usuario avanza en el proceso. Está compuesto por la ventana en sí, el campo con los botones "Atrás y Adelante", y el contenedor que albergará de uno en uno los pasos que se van mostrando al usuario.

Los Pasos: Son cada una de las pantallas que el asistente va presentando al usuario, y que tienen una función específica, por ejemplo, la bienvenida, la selección de idioma y teclado, la selección de disco y método de particionado, etc. Cada una de ellas es insertada o removida del marco del Asistente a través del uso de los botones "Atrás" y "Adelante".

Funcionamiento

El funcionamiento del instalador se puede dividir en dos fases, la captura de datos y el proceso de instalación como tal. Ambas fases se pueden a su vez subdividir en otras fases específicas.

Fases de la Instalación, en la fase de captura de datos se puede ir de adelante hacia atás, en cambio el proceso de instalación no se puede detener de forma segura una vez iniciado, por eso no se ofrecen opciones para retroceder

Captura de datos

La fase de captura de datos es la encargada de determinar como y donde se va a instalar y configurar el sistema operativo. Este a su vez puede sub-dividirse en otras fases.

Selección de Idioma, Zona Horaria y Teclado

Selección de Idioma, Zona Horaria y Teclado
# Archivos resaltantes (Ver archivos)
./canaimainstalador/pasos/teclado.py
./canaimainstalador/clases/i18n.py
./canaimainstalador/clases/keyboard.py
./canaimainstalador/clases/timezone.py

Este es el segundo "paso" que presenta el instalador, el primero es la bienvenida. Aquí se muestra al usuario las opciones disponibles para la configuración del teclado, la zona horaria y el idioma del sistema que será instalado.

Para determinar los valores soportados por el sistema operativo con respecto a teclado, zona horaria e idioma, se hace una lectura de los siguientes archivos:

/usr/share/i18n/SUPPORTED    [Idiomas]
/usr/share/xml/iso-codes/iso_639_3.xml [Idiomas]
/usr/share/zoneinfo/zone.tab    [Zonas Horarias]
/usr/share/X11/xkb/rules/base.xml    [Distribuciones de Teclado]

Estos archivos son procesados internamente por el instalador para mostrar las opciones dentro de cajas de selección. También encontramos en este paso un recuadro que sirve para probar la distribución de teclado seleccionada.

Selección de disco y método de particionado

Selección de disco y método de particionado
# Archivo resaltantes (Ver archivos)
./canaimainstalador/pasos/metodo.py
./canaimainstalador/clases/particiones.py
./canaimainstalador/clases/barra_particiones.py

En este paso el usuario puede seleccionar el disco donde hará la instalación y alguno de los métodos de particionado ofrecidos. Los métodos de instalación se calculan automáticamente según sea la configuración del disco seleccionado.

La información cargada en este paso se obtiene gracias a la librería python-parted quien nos reporta los detalles del disco y sus particiones, entre otras características.

Las posibles opciones de particionado que presenta el instalador, las enumeramos a continuación, recordemos que son mostradas al usuario dependiendo de la información obtenida del disco seleccionado.

  • Instalar usando el disco completo. Obvia las particiones existentes en el disco y lo usa en su tamaño total para la instalación.
  • Instalar redimensionando [partición] para liberar espacio. Si una partición tiene el tamaño suficiente la redimensionará y utilizará el espacio liberado para hacer la instalación.
  • Instalar utilizando el espacio libre disponible. Si el instalador detecta en el disco una espacio libre sin particionar con el tamaño suficiente, instalará Canaima dentro del mismo.
  • Instalar editando las particiones manualmente. Presenta en el siguiente paso el instalador manual para que el usuario puede modificar el disco a su conveniencia.

Cabe destacar que las opciones presentadas por el instalador en este punto también depende del numero de particiones primarias y de particiones extendidas que existan en el disco y las que deban ser creadas debido a las restricciones en los discos que limitan estas cantidades.

Seleccionar el esquema de particiones

Seleccionar el esquema de particiones
# Archivo resaltantes (Ver archivos)
./canaimainstalador/pasos/particion_auto.py
./canaimainstalador/pasos/particion_todo.py
./canaimainstalador/clases/barra_auto.py
./canaimainstalador/clases/barra_todo.py

A excepción del particionado manual, todas las demás opciones ofrecen un método de particionado automatizado. Para estos casos el instalador ofrece un paso adicional donde el usuario selecciona de una lista, el esquema de particiones que más se adapte a su necesidad o preferencia.

En primer lugar encontramos en la parte superior dos botones que permiten seleccionar entre utilizar en Mínimo espacio posible de la particion o disco seleccionado, o el Máximo espacio disponible.

Luego encontramos la lista de las opciones disponibles, con cada uno de los esquemas de particionado predefinidos.

  • Instalar todo en una sola partición. Solo crea dos particiones, una para todo el sistema (/).
  • Separar la partición home. Separa en una partición el directorio de los usuarios (/home) de los demás datos del sistema (/).
  • Separar la partición home y boot. Crea particiones aparte para los directorios de usuarios y para el directorios del gestor de arranque.
  • Separar home, boot, var y usr. Es una configuración común en algunos servidores, pero escasamente utilizadas en computadores personales.

Particionado manual

Particionado manual
# Archivo resaltantes (Ver archivos)
./canaimainstalador/pasos/particion_manual.py
./canaimainstalador/clases/particion_nueva.py
./canaimainstalador/clases/particion_editar.py
./canaimainstalador/clases/particion_redimensionar.py
./canaimainstalador/clases/particion_eliminar.py

Si no se selecciona ninguno de los métodos automáticos de particionado, tenemos también la posibilidad de utilizar el particionado manual, en este paso se presenta una tabla con las particiones disponibles en el disco seleccionado y al seleccionarlas tendremos las opciones de Crear nuevas particiones, editarlas, cambiarles el tamaño o eliminarlas para liberar espacio.

Configuración de las cuentas Usuarios

Configuración de la cuenta de usuarios
# Archivo resaltantes (Ver archivos)
./canaimainstalador/pasos/usuario.py

En este paso se configuran los datos del usuario, como nombres y contraseñas, adicionalmente se determinan algunas características de accesibilidad, nombre del equipo (host), y el modo OEM.

Lo más resaltante en este punto es las validaciones que se hacen de los nombres de usuarios y sus contraseñas para que sean válidos cuando se creen dichas cuentas en el sistema.

Adicionalmente tenemos el modo OEM, que es una característica especialmente utilizada por los fabricantes de computadores como por ejemplo VIT y Siragon. Seleccionando esta característica, los datos del usuario y contraseñas no se crean durante el proceso de instalación sino que se solicitan al usuario durante el primer arranque del sistema.

La característica OEM se activa instalando en el sistema destino la aplicación canaima-primeros-pasos, que es la encargada de iniciarse y hacer la solicitud de los datos al usuario en el primer arranque.

Confirmación de los datos

Confirmación de los datos
# Archivo resaltantes (Ver archivos)
./canaimainstalador/pasos/info.py

El último paso antes de iniciar el proceso de instalación es simplemente una pantalla de confirmación de los datos suministrados por usuario que determinan la forma en que se realizará la instalación y las configuraciones que se realizarán dentro del sistema destino.

Proceso de Instalación

Proceso de instalación

El proceso de instalación es realmente el encargado de hacer todas las modificaciones y configuraciones en el disco y el sistema destino, según los parámetros seleccionados por el usuario durante la fase previa de captura de datos.

Es de resaltar que antes del proceso de instalación no se hacen modificaciones en el sistema destino. El proceso de captura de datos simplemente va insertando los valores seleccionados por el usuario en una variable global presente en canaimainstalador.config.CFG, la cual almacena todos los detalles que después serán leídos durante el proceso de instalación que se describe en esta sección.

# Archivo resaltantes (Ver archivos)
./canaimainstalador/pasos/instalacion.py
./canaimainstalador/clases/common.py
./canaimainstalador/clases/particiones.py
./canaimainstalador/clases/config.py

Todo el proceso de instalación se concentra en el método presente en canaimainstalador.pasos.instalacion.install_process()

Particionado del Disco

Es la primera operación que se ejecuta durante el proceso de instalación, el formateo o no de particiones existentes depende de lo que se haya seleccionado durante la captura de datos, igualmente el tipo de sistema de archivos, etc.

Las acciones a realizar en el disco son leídas desde CFG['acciones'] de forma recursiva, determinando así cuando una partición debe ser formateada, redimensionada, creada, etc.

Montando particiones

Todas las particiones creadas en el proceso anterior son montadas dentro del directorio /mnt, ahí en esa ruta procederemos luego a copiar los archivos y a entrar en un sistema de archivos virtualizado con chroot para poder aplicar las configuraciones necesarias.

Copiado de archivos al disco

El proceso de copiado al disco de los archivos del sistema se hace utilizando la herramienta unsquashfs. Por lo tanto para entender este proceso es necesario conocer un poco más sobre que es el sistema de compresión squashfs.

Squashfs es una aplicación que nos permite comprimir en un archivo todo un sistema ya configurado. Es decir, por ejemplo, que tomáramos todos nuestro sistema actual y lo comprimiéramos en un solo archivo. Esta sistema de archivos comprimidos es utilizado por la herramienta live-build que permite que Canaima funcione como LiveCD, por esa razón todo el sistema cabe en un CD o DVD, e indica que ya contamos en el disco de Canaima con ese sistema comprimido.

Proceso de copiado de archivos al disco

Durante el proceso de copiado de archivos al disco, el instalador únicamente se encarga de descomprimir esos datos en el disco destino a través de la herramienta unsquashfs. La ruta desde donde se puede acceder a el archivo con este sistema de archivos comprimidos dentro del LiveCD es:

# En versiones nuevas
/lib/live/mount/medium/live/filesystem.squashfs
 
# O en versiones anteriores
/live/image/live/filesystem.squashfs

Recordemos que nuestro disco destino es montado por el instalador en /mnt, por lo tanto al finalizar el proceso podremos entrar e iniciar una sesión virtual en el utilizando la herramienta chroot.

Configuración de archivos del sistema

Una vez que los datos están copiados en el disco, comenzaremos a trabajar sobre el iniciando sesiones virtuales con chroot y ejecutando una serie de comando para configurar el sistema final.

En este punto de la configuración lo que procede el instalador es a crear los archivos del sistema necesarios para su correcto funcionamiento, específicamente se instalan estos archivos:

  • /etc/fstab
  • /etc/default/locale
  • /etc/locale.gen
  • /etc/timezone
  • /etc/default/keyboard
  • /etc/hostname
  • /etc/hosts
  • /etc/network/interfaces
  • /etc/apt/sources.list
  • /etc/adduser.conf
  • /etc/mtab

Reconfiguración de paquetes

Como el sistema comprimido en filesystem.squashfs no está configurado bajo los parámetros seleccionados por el usuario durante la captura de los datos, sino que por el contrario posee una configuración genérica, es necesario hacer el llamado al proceso de post-instalación (reconfiguración) del algunos paquetes puntuales para que cuando el usuario inicie su nuevo sistema, estén todos los valores correctamente configurados según su selección durante la instalación.

Los paquetes que se reconfiguran en este punto son:

  • locales
  • canaima-estilo-visual-gnome
  • canaima-escritorio-gnome
  • canaima-base
  • tzdata
  • software-center
  • console-data

Instalación de paquetes adicionales de idioma

Según la selección de idioma que haya realizado el usuario, el instalador buscará dentro del LiveCD si existen los paquetes adicionales para ese idioma con los cuales otras aplicaciones también estarán traducidas, por ejemplo el navegador, LibreOffice, etc, que distribuyen sus archivos de traducciones como paquetes apartes.

Para asociar el idioma seleccionado por el usuario con los paquetes adicionales necesarios, el instalador se vale del archivo

/usr/lib/canaima-l10n/l10n_pkgs.dict

Este archivo es instalado por el paquete canaima-l10n y asocia en un diccionario de Python los idiomas soportados por el sistema con los paquetes que deberían instalarse para darle un soporte más completo. Dicha lista de paquetes es leída recursivamente por el instalador para buscarlas dentro del disco y si está presente la instala en el sistema destino.

Configuración de los usuarios

En este punto se configuran los datos de usuario indicados durante la captura de datos.

Si el usuario seleccionó el modo OEM, entonces se configura un usuario genérico y un usuario root con una contraseña estándar para que los fabricantes puedan hacer configuraciones al sistema una vez instalado, de igual manera, se instala la aplicación canaima-primeros-pasos la cual se encargará de solicitar al usuario los datos correspondientes en el primer inicio del sistema.

Removiendo datos de Instalación

Como ya mencionamos, los datos contenidos dentro del filesystem.squashfs son los utilizados por el liveCD, por lo tanto en este punto procedemos a remover varios paquetes que no son necesarios para el sistema final, entre ellos se encuentra el instalador y las herramientas utilizadas por live-build.

Estos son los paquetes removidos durante este proceso.

  • canaima-instalador
  • live-config
  • live-boot
  • live-boot-initramfs-tools
  • live-initramfs
  • live-config-sysvinit
  • live-tools

Instalando el gestor de Arranque

Ya el sistema está casi listo en este punto, lo último que resta por hacer es asegurarnos que al iniciar la máquina, Canaima pueda arrancar. De tal modo que en este punto se procede a la instalación del Burg, el gestor de arranque de Canaima.

Durante este proceso, la propia instalación del Burg se encarga automáticamente de definir si hay otros sistemas operativos presente en la maquina, de ser así, los agrega a la lista de sistemas operativos disponibles, para que el usuario pueda seleccionar durante el arranque con cual de ellos desea iniciar su equipo.

Desmontando las particiones

Ya finalizado el proceso de instalación, se procede a desmontar todas las particiones que previamente habían sido montadas en el directorio /mnt y se le ofrece al usuario a través de la interfaz gráfica la opción de seguir probando el sistema o de reiniciar el equipo para comenzar a probar inmediatamente el nuevo Canaima recién instalado.

Otras Referencias

Funcionamiento de Canaima Instalador

5 comentarios en “Funcionamiento de Canaima Instalador

  1. Juan Acosta dijo:

    Buenas tardes hermano!

    Discúlpame el abuso y el exceso de confianza.

    Te cuento que estuve arreglando una que me decía todo el tiempo “image loading failue. Reload image”. Intenté mil y un métodos para recuperar la imagen y nada, use Clonezilla para instalarle una imagen de otra Canaimita igual a la que estaba reparando y nada. Tanto di que a la final me decidí por instalarle Canaima 4.0 y allí si, de hecho funciona de maravilla.

    Tú dirás, ¿y entonces, cuál es el problema? Muy sencillo hermano, resulta que para instalarle o actualizar algún controlador, archivo, aplicación,…, lo que sea, hay que autenticarse con contraseña de Root o Administrador. Cuando le instalé este sistema operativo, me pidió que escribiera una contraseña de Administrador, lo cual hice y la repetí para confirmarla (de hecho, la anoté en todas partes de mi casa porsia).

    ¿Qué pasa? cuando me pide autenticación, le coloco la contraseña que le había escrito en la instalación y me da error, no la reconoce!!!

    Tendrás a la mano, por favor, alguna solución para este problema? Realmente te lo agradecería mucho!!!

      1. Juan Acosta dijo:

        Hermano, gracias por responder tan rápido! Me gustaría que supieras que después de presionar la letra “e” me sale lo siguiente:

        insmod ext2
        set root= (hd0,2)
        search –no-floppy –fs-uuid –set 728fc8b9-c395-46f0-960f -dc9c9d0e90f2
        echo loading Linux 3.2.0-4-686-pae …
        linux /boot/vmlinuz-3.2.0-4-686-pae root=UUID=728fc8b9-c395-46f0-960f-dc9c9d0e90f2 ro
        echo Loading initial ramdisk …
        initrd /boot/initrd.img-3.2.0-4-686-pae

        O sea, tienes ciertas diferencias con la línea del comentario que haces en el artículo anterior, entonces me da cierto miedito porque no tengo la certeza y la seguridad de que no voy a cometer una burrada o algo por el estilo.

        Si tú me aseguras que lo puedo hacer de esa manera, aún y cuando las líneas tengan diferencias, lo haré confiado.

        Gracias nuevamente por tu tiempo y disculpa tanta molestia!

    1. La línea que tienes que editar es la que dice:

      linux /boot/vmlinuz-3.2.0-4-686-pae root=UUID=728fc8b9-c395-46f0-960f-dc9c9d0e90f2

      hazlo con confianza y pruebalo una y mil veces si quieres ya que ninguna de las lineas que modifiques ahí se guardará de forma permanente, cuando reinicies volverán a estar todas como deben.

      Me agarraste conectado a internet por eso atiendo rápido😀

      1. Juan Acosta dijo:

        Buenas tardes hermano.

        Lo hice tal cual como lo recomendaste y “vualá” todo fino. ¡Eres el papá! Muchas gracias por todo y mucho éxito en tus emprendimientos.

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