ArchiTecnologia

Aprendizaje abierto. Conocimiento libre.

ArchiTecnologia
CertificacionesLinuxLPITutorial

LPIC-2 Tema 202.3: Gestores de arranque alternativos

Además de GRUB y LILO, también existen otros gestores de arranque para Linux que pueden ser útiles para algunas situaciones particulares. Por ejemplo, para el arranque desde medios arrancables. Por eso, esta entrada va dedicada a ellos, ya que también son considerados por el Tema 202.3 de las certificaciones LPIC-2.

Entre estos gestores de arranque se encuentran SYSLINUX, ISOLINUX, y PXELINUX. Es importante conocerlos, comprender también PXE, y tener conciencia del arranque en systemd y U-Boot.

LILO

Linux Loader (LILO) fue uno de los gestores de arranque más populares, aunque poco a poco ha sido sustituido por GRUB. Por ese motivo, es bueno que lo conozcas, aunque no es imprescindible para estas certificaciones.

Su función es la de implementar un simple sistema con un fichero de configuración para permitir el arranque en sistemas con Linux y otros sistemas, y MBR. Ese sistema de configuración es /etc/lilo.conf, por lo que no se encuentra en /boot como GRUB.

Mientras GRUB usa una nomenclatura para los dispositivos de almacenamiento y particiones diferente a Linux, en LILO sí que se usa la misma que en Linux. Por tanto, es más fácil en ese sentido.

Su estructura es bastante sencilla. Tiene una sección global donde se pueden configurar las opciones generales, y una serie de secciones que empiezan por la palabra image. Estas secciones corresponden a cada sistema operativo que se encuentre disponible para arrancar (GNU/Linux o kernels de diferentes versiones, Windows, *BSD, Solaris,…).

En la sección global, encontrarás algunas opciones frecuentes como:

  • boot=<dispositivo de arranque>: puedes especificar el dispositivo de arranque, normalmente el primer sector del disco duro o partición.
  • timeout=<decimas de segundo>: indica cuántas décimas de segundo espera hasta arrancar la opción por defecto si no se pulsa ninguna tecla.
  • default=<imagen>: es el nombre del sistema operativo correspondiente a la opción de arranque por defecto, es decir, la que arranca si no seleccionas otra opción diferente.
  • password=<tucontraseña>: para poder introducir una contraseña de acceso.
  • prompt: esta opción hacemos que aparezca una lista con las imágenes disponibles.

En cuanto a las opciones para cada imagen o sistema operativo [image=<image>], tienes las rutas que apuntan a la imagen del kernel o partición del sistema operativo. Por ejemplo, podrías encontrar cosas como image=/boot/vmlinuz. Dentro de cada una de estas secciones tienes opciones como:

  • label=<nombre>: se especifica el nombre del sistema operativo. En la etiqueta default de la sección global se apuntaba al nombre de la etiqueta que tendrá el sistema operativo por defecto.
  • root=<dispositivo>: especifica la partición que se carga como raíz.
  • append=<parametros>: parámetros que se le pasarán al kernel al arrancar.
  • table=<dispositivo>: apunta al dispositivo que tiene la tabla de particiones, útil para sistemas DOS/Window.
  • unsafe: indica que LILO no debe acceder al sector de arranque cuando cree el mapa. Es útil para arrancar desde un disquete.
  • read-only: especifica que el sistema de ficheros raíz se montará en modo solo-lectura. Por lo general, el proceso de arranque lo remonta como lectura-escritura.

El fichero lo puedes modificar con cualquier editor de texto, pero con privilegios. Además, una vez modificado, para revisar si hay algún defecto, tienes que ejecutar:

/sbin/lilo

Para más información sobre las opciones, puedes ver el manual del fichero de configuración de LILO…

SYSLINUX

SYSLINUX es uno de los gestores de arranque directamente relacionados con los Lives, ya que so sistemas ligeros que se pueden implementar para el arranque de este tipo de sistemas en medios como las tarjetas de memoria SD, o memorias USB. Concretamente, éste se usa para particiones FAT en memorias flash.

Lo puedes instalar en tu distro para disponer de la herramienta syslinux y de todos los ficheros necesarios. Para ello, puedes usar el gestor de paquetes necesarios, aunque suelen venir pre-instalados con muchas distros. Por cierto, esta herramienta te ayudará a instalar el bootloader en la partición del dispositivo que le indiques.Por ejemplo:

syslinux --install /dev/fd0

El fichero de configuración en este caso se llama syslinux.cfg. para sistemas BIOS, y se encuentra en /boot/syslinux/. Mientras en sistemas UEFI, el fichero de configuración se localiza en $esp/EFI/syslinux, donde $esp es el punto de montaje de la partición EFI, que por defecto suele ser /boot. SYSLINUX tamién buscará previamente syslia32.cfg para arrancar en modo EFI de 32-bit o syslx64.cfg para modo EFI 64-bit.

El fichero de aplicación de SYSLINUX en sistemas EFI se llama syslinux.efi. Mientras que en sistemas BIOS se emplea ldlinux.sys.

En cuanto a la sintaxis de su fichero de configuración, es parecida en algunos sentidos a LILO, aunque usa otras etiquetas diferentes y prescinde del símbolo igual:

LILO SYSLINUX
image = /boot/linux

label = linux

append = «hd=64,32,202»

LABEL  Linux

LINUX ../vmlinuz-linux

APPEND rw quiet vga=current splash

Muchas de las cosas de SYSLINUX son válidas para EXTLINUX, PXELINUX o ISOLINUX, ya que emergieron de él.

Para más información sobre la configuración, puedes ver la Wiki de SYSLINUX, o un ejemplo de fichero de configuración aquí.

EXTLINUX

En este caso, EXTLINUX es un sistema de arranque especialmente diseñado para algunos FS típicos de Linux. Pese a su nombre, no se limita a ext2, ext3, y ext4, también puede arrancar desde sistemas de archivos como btrfs.

Para instalar EXTLINUX, deberías instalar los paquetes necesarios. Por ejemplo:

apt-get install extlinux syslinux-common

Puedes hacer que EXTLINUX instale los ficheros necesarios en el directorio o partición de arranque correspondiente:

extlinux --install /boot/extlinux

En cuanto al directorio donde se alojan los ficheros de configuración, estará en /boot/extlinux/. El principal se llama extlinux.conf, aunque también hay ficheros de stanzas como linux.cfg para el kernel actual a arrancar. La sintaxis será como la de SYSLINUX, por eso, te recomiendo leer la información de éste para más información…

Si previamente has estado usando otro gestor de arranque, como GRUB, es probable que éste haya escrito en el sector de arranque. Para sobrescribir y eliminar este problema, prueba:

sudo cat /usr/lib/extlinux/mbr.bin >/dev/sda

ISOLINUX

En el caso de ISOLINUX, es similar al anterior, solo que en este caso es uno de los gestores de arranque empleados para medios ópticos (CD/DVD). Se ha diseñado para sistemas ISO 9660 (El Torito).

En este caso, el ficheor del bootloader se llama isolinux.bin. (o isohdpfx.bin para BIOS) Estará alojado dentro del directorio isolinux/ que hay que crear dentro de la estructura para la imagen del medio óptico arrancable.

A la hora de crear la imagen ISO, con la herramienta mkisofs se genera un fichero bajo isolinux/ llamado isolinux.cat, empleado para el disco autoejecutable.

Por otro lado, el fichero de ejecución en este caso se llama isolinux.cfg. Su sintaxis es similar a la de SYSLINUX, del que deriva. Por tanto, puedes leer la información de la Wiki de SYSLINUX que dejé para más información.

También puedes modificar otros aspectos, como poner un mensaje o introducción para que aparezca al arrancar editando isolinux.msg, usar un logo con una imagen en formato LSS6 (véase herramienta ppmtolss16) con logo.16, la ayuda que se mostrará al usuario en el arranque al pulsar F2 y F3 con los ficheros f2.msg y f3.msg, incluir el mapa del teclado que necesites para tu idioma, como spanish.kbd, e incluir el binario de Memtest86 para hacer pruebas de memoria.

Y, por supuesto, los dos más importantes, la imagen del kernel que se arrancará como vmlinuz (o efiboot.img) y el fichero initrd que lo acompaña llamado initrd.gz.

Es decir, cuando vas a crear una imagen ISO para el autoarranque desde un medio óptico, el árbol de ficheros quedaría como:

isolinux/ 
    |-- f2.msg 
    |-- f3.msg 
    |-- initrd 
    |-- isolinux.bin 
    |-- isolinux.cat 
    |-- isolinux.cfg 
    |-- isolinux.msg 
    |-- logo.16 
    |-- memtest 
    |-- spanish.kbd 
    `-- vmlinuz.usuario

Por supuesto, creo que no hay que decir, que para tener ISOLINUX en tu distro para crear los medios arrancables con él, primero debes instalar el paquete isolinux. Dentro del directorio de instalación (p.e.: /usr/lib/ISOLINUX/) encontrarás los binarios y otros ficheros citados.

PXELINUX

PXELINUX es otro de las alternativas a los gestores de arranque convencionales y que permite el arranque desde un servidor en la red mediante PXE (PreBoot eXecution Environment).

PXE ha sido incluido en sistemas EFI por defecto. Y no es más que un entorno para el arranque e instalación de sistemas operativos a través de la red. Es decir, en vez de usar un medio arrancable para la instalación (pendrive, CD/DVD,…), se hará mediante la conexión a un servidor en red donde se almacenan los datos para el arranque o las imágenes para la instalación de los SSOO.

En este caso, PXELINUX deberá estar en el servidor (este servidor deberá tener una configuración previa adecuada) donde se encuentran la/s imagen/es  para instalar. Así, los clientes podrán conectarse para realizar la instalación desde la red.

Será el firmware del cliente el que podrá conectarse para localizar el servicio PXE disponible. Mediante protocolos como TFTP, descargará en la RAM un programa llamado NBP (Network Bootstrap Program) que iniciará la ejecución del proceso.

Todo lo dicho para la configuración de SYSLINUX, del que deriva, es válido también aquí, pero en este caso se llama pxelinux.cfg/. No obstante, hay algunas diferencias, como ../directorio-instalación-syslinux/core/pxelinux.0 que soporta el arranque en red, y lpxelinux.0 para soportar protocolos como TFTP, FTP y HTTP. Para protocolos de red NBI (Network Boot Images) tienes gpxelinux.0.

Eso en cuanto a BIOS, pero en sistemas UEFI, syslinux.efi es el sustituto de lpxelinux.0. Además, también usará los ficheros llamados ldlinux.e32 y ldlinux.e64 para 32 y 64-bit respectivamente.

Das U-BOOT

U-boot (Universal Bootloader) es otro de los gestores de arranque existentes para Linux. Además, los sistemas de ficheros admitidos son varios, como ext4, FAT, etc.

En este caso, es universal, como su propio nombre indica. Eso hace que permita el arranque desde máquinas x86, MIPS, ARM, AVR32, PowerPC, 68k, MicroBlaze y Nios. Aporta gran flexibilidad y es muy empleado en sistemas embebidos.

Más información – Das U-boot

Más sobre los gestores de arranque

Por último, también sería interesante que conozcas algunos ficheros que son interesantes para el arranque en sistemas UEFI con Secure Boot. Y eso es lo referente a Shim.

En un artículo previo expliqué también el proceso de arranque y de systemd, lo cual también estaría bien que refresques si no lo conoces aún. Tampoco estaría de más que estudies también sobre BIOS/UEFI.

Cuando surgió el problema con Secure Boot impuesto por Microsoft en sistemas UEFI, la comunidad de desarrollo de sistemas operativos no Windows tuvo que hacer un gran esfuerzo para poder arrancar estos sistemas no firmados. Matthew Garrett, ingeniero de Red Hat, aportó una interesante solución para que todas las distros tuvieran soporte.

La solución de Garrett se llama Shim Secure Boot, y es básicamente una implementación que hace que la distro solo necesite firmar sus gestores de arranque (uefi/grubx64.efi) con una clave propia (uefi/shimx64.efi).

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar