Isolinux y gfxboot - guadalinex-archive/guadalinex-v5 GitHub Wiki

###Isolinux y Gfxboot

  • Syslinux es un gestor de arranque pensado, preferentemente, para dispositivos extraíbles. Pero Syslinux contiene programas y configuraciones específicos para algunos de estos dispositivos. Por ejemplo, para los CDs, tiene el Isolinux, que es el que nosotros usaremos porque está especialmente diseñado para estos.

No entraremos en muchos detalles en la forma de trabajar de Syslinux o Isolinux, pero sí explicaremos lo suficiente para entender sus opciones de configuración y poder modificarlo.

En esta versión se usa, al igual que hace Ubuntu, Gfxboot junto con Isolinux para darle más potencia y mejor aspecto al arranque del CD. El Gfxboot es un sistema que provee de un arranque gráfico e incluso cambiar cosas como el idioma u otros parámetros con facilidad.

El archivo de configuración se llama isolinux.cfg y tiene una pinta parecida a esta:

DEFAULT /casper/vmlinuz
GFXBOOT bootlogo
APPEND   boot=casper initrd=/casper/initrd.gz quiet splash --
LABEL live
  menu label ^Try Guadalinex without any change to your computer
  kernel /casper/vmlinuz
  append   boot=casper initrd=/casper/initrd.gz quiet splash --
LABEL live-install
  menu label ^Install Guadalinex
  kernel /casper/vmlinuz
  append   boot=casper only-ubiquity initrd=/casper/initrd.gz quiet splash --
LABEL check
  menu label ^Check CD for defects
  kernel /casper/vmlinuz
  append  boot=casper integrity-check initrd=/casper/initrd.gz quiet splash --
LABEL memtest
  menu label Test ^memory
  kernel /install/mt86plus
  append -
LABEL hd
  menu label ^Boot from first hard disk
  localboot 0x80
  append -
DISPLAY isolinux.txt
TIMEOUT 300
PROMPT 1
F1 f1.txt
F2 f2.txt
F3 f3.txt
F4 f4.txt
F5 f5.txt
F6 f6.txt
F7 f7.txt
F8 f8.txt
F9 f9.txt
F0 f10.txt

Éste es un archivo de configuración de isolinux, que como explicamos anteriormente, es el encargado de hacer que el ordenador sepa qué debe arrancar desde el CD y dónde está todo lo necesario (sector de arranque, kernel, initramfs) para poder llevar a cabo su función eficientemente.

La configuración del isolinux no es muy diferente de la de otros gestores de arranque como LILO o Grub. Veamos primero las partes comunes a estos otros sistemas:

  • default: Es la opción predeterminada para arrancar, a menos que se especifique otra cosa en tiempo de arranque.

  • timeout: Es el tiempo que esperará antes de arrancar. Esto brinda de unos segundos (en caso de que esté especificado) al usuario para seleccionar otro arranque u otras opciones. Este contador se desactivará en cuanto el usuario pulse cualquier tecla.

  • prompt: Indica si se muestra al usuario una posible entrada de parámetros (boot: ) o no. 1 indica que se muestre y 0 que no se muestre, a no ser que se pulse las teclas Alt o Mayúsculas

  • label: Sirve para indicarle un nombre a la opción. De esta manera se puede llamar directamente desde la línea de comandos mostrada (boot:).

  • kernel: Indica cuál es el nombre y path del kernel.

  • append: Con esta opción se le indican los parámetros que se le pasarán al kernel en el arranque. Éstos quedarán guardados luego en /proc/cmdline para ser usados por el propio kernel u otros programas.

  • Ahora algunos parámetros especiales del syslinux/isolinux:

    • F# (F1, F2, F3...): Con estas marcas especiales, indicamos que archivo mostrar en caso de que el usuario pulse dichas teclas (F1, F2, F3...). Si no definimos alguna tecla, no se mostrará nada al ser ésta pulsada. Generalmente se usan para mostrar ayudas.
    • display: Nombre del archivo que contiene el texto y/o imagen que se mostrará si no se puede mostrar el menú gráfico de Gfxboot.
    • Y las opciones propias del Gfxboot:
      • menu label: Título que aparecerá en el menú gráfico para dicha opción.
      • GFXBOOT: Archivo que contiene el tema del gfxboot.

Un detalle importante es que no diferencia entre mayúsculas y minúsculas, así que es lo mismo poner TIMEOUT o timeout. Ahora que conocemos qué es el Isolinux y como es su archivo de configuración, vamos a ver qué podemos personalizar y cómo.

Para realizar la customización de la apariencia, una vez indicando en isolinux.cfg que vamos a usar gfxboot, deberemos hacerla sobre el propio paquete de del tema de gfxboot, en nuestro caso gfxboot-theme-guada.

Aunque éste paquete no se instala como tal, se descomprime en el momento del arranque para darle la apariencia al mismo.

####Cambiando el tema de Gfxboot

  • Primero hay que comentar que si queremos cambiar opciones del archivo de configuración isolinux.cfg es necesario hacerlo en el script que lo genera, en nuestro caso es debian-cd/tools/boot/lobo/boot-i386

También, hay que tener en cuenta que es muy importante dejar los títulos de las entradas del menú en inglés y perfectamente sincronizadas con las cadenas de texto originales en los archivos de traducción (es.po) del paquete del tema, éste se encuentra en el repositorio, en

apps/gfxboot-theme-guada

Los archivos que son interesante personalizar aquí son los siguientes:

  • apps/gfxboot-theme-guada/trunk/po/es.po: Es el archivo de traducciones de losmensajes que aparecen en la interfaz como las opciones del menú.
  • apps/gfxboot-theme-guada/trunk/Makefile: Contiene la variable DEFAULT_LANG que indica el idioma con el que se arrancará de forma predeterminada el menú gráfico.
  • apps/gfxboot-theme-guada/trunk/common.inc: Se definen los colores de las opciones del menú.
  • apps/gfxboot-theme-guada/trunk/panel.inc: Se define el color de las opciones selecionadas del panel inferior.
  • apps/gfxboot-theme-guada/trunk/timeout.inc: Se define el color de la fuente y posición del temporizador.

Los archivos de ayuda (es.hlp, en.hlp, etc para Gfxboot e isolinux.txt, f1.txt, f2.txt para el Isolinux) se obtienen en la generacion de un archivo comprimido del debian-installer contenido en la siguiente dirección del repo:

repo/installer-i386/current/images/cdrom/debian-cd_info.tar.gz

Para realizar cambios en el contenido de isolinux.txt es necesario modificar los archivos boot.txt y boot.txt.live. Se diferencian las ayudas no-live y live por la extensión .live de estas últimas.

####Creando una imagen de arranque

  • La imagen es una de las principales cosas que querremos cambiar, pero ésta no es una imagen normal, tiene unas características concretas que debemos cumplir. Vamos a ver las características de este tipo de imágenes y después el proceso a seguir para conseguirla.

Existen 2 posibles imágenes, la imagen del Gfxboot que es la que debería mostrarse en la mayoría de los casos y la del Isolinux que se mostrará en caso de que la primera falle.

Ambas imágenes tienen características similares, pero distinto formato. Lo ideal es partir para las dos de una imagen que ya funcione y personalizarla, ya que, eso nos evitará muchos problemas puesto que es muy importante respetar cosas como el número de colores, que el primer color de la paleta sea el negro y algunos otros detalles como:

  • Isolinux: Imagen en formato lss16 de resolución 640 x 480 en modo indexado a 14 colores.
  • Gfxboot: Imagen en formato pcx de resolución 640 x 480 en modo indexado a 16 colores no mayor de 70 kb.

Los pasos a llevar a cabo para obtener la imagen son los siguientes:

  • Crear una imagen en el Gimp (se puede hacer en otros, pero nos será más fácil con éste) de tamaño 640 x 480.
$ ppmtolss16 '#d0d0d0=7' < splash.ppm > splash.rle

Con el #d0d0d0=7 estamos definiendo que el color número 7 de la paleta de colores, que es el que usa el isolinux para el texto, se fije al color, definido en hexadecimal, #d0d0d0.

  • Ya tenemos nuestro archivos de imagen de arranque, sólo nos queda guardarlo en los directorios adecuados. Ambas imágenes (splash.pcx y splash.rle) se guardarán con el nombre de la distribución, es decir, splash.pcx habra que renombrarla a guadalinex.pcx y splash.rle a guadalinex.rle, en:

    gensys/debian-cd/data/lobo/