Syslinux

From Gentoo Wiki
Jump to: navigation, search
This page is a translated version of the page Syslinux and the translation is 100% complete.

Other languages:
English • ‎español • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

Syslinux es un paquete constituido por una familia de cargadores de arranque. El paquete incluye SYSLINUX (para sistemas de ficheros FAT), EXTLINUX (para sistemas de ficheros ext2/3/4, btrfs y xfs), PXELINUX (para arrancar desde la red con PXE) y ISOLINUX (ISO-9660) para arrancar desde CD/DVD.

El soporte para EFI se añadió en la versión 6.00 y posteriores.[1]

Instalación

La instalación del paquete Syslinux proporcionará dicho software al sistema, pero no instalará o activará ninguno de los distintos gestores de arranque que contiene el paquete.

Parámetros USE

USE flags for sys-boot/syslinux SYSLINUX, PXELINUX, ISOLINUX, EXTLINUX and MEMDISK bootloaders

Emerge

root #emerge --ask sys-boot/syslinux

Configurar en sistemas BIOS

Nota
Estas instrucciones son para sistemas BIOS. Para (U)EFI, lea Configurar en sistemas EFI.

El resto de esta sección presume que la partición de arranque se encuentra en /dev/sda1 (que es lo común). Si este no es su caso, asegúrese de hacer los ajustes necesarios.

Para utilizar EXTLINUX hay que asegurarse de instalar el boot sector adecuado, y, a continuación, instalar el gestor de arranque en la partición. Si se omiten estos pasos EXTLINUX no estará operativo. Este tipo de configuración para el sector de arranque no es necesario para las instalaciones de SYSLINUX, PXELINUX y ISOLINUX.

Configurar el sector de arranque

Configurar MBR (msdos)

Nota
Estas instrucciones son para un esquema de particionado MBR (msdos). Para GPT, pase directamente a la sección Configurar GPT.

En primer lugar, instale el sector de arranque proporcionado por Syslinux. Tenga mucho cuidado con esta orden; si count=1 no se indica, se sobrescribirá todo el disco, en lugar de solo los primeros 440 bytes:

root #dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/mbr.bin of=/dev/sda

Marque la partición de arranque como activa. Un * aparecerá en la columna «Boot»:

root #fdisk /dev/sda
Command (m for help): a
Partition number (1-3): 1
Command (m for help): p
 ...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      133119       65536   83  Linux
/dev/sda2          133120     4327423     2097152   82  Linux swap / Solaris
/dev/sda3         4327424  1953525167   974598872   83  Linux
  
Command (m for help): w

Configurar GPT

Nota
Estas instrucciones son para un esquema de particionado GPT. Para MBR (msdos), lea la sección MBR (msdos).

En primer lugar, instale el sector de arranque proporcionado por Syslinux. Tenga mucho cuidado con esta orden; si count=1 no se indica, se sobrescribirá todo el disco, en lugar de solo los primeros 440 bytes:

root #dd bs=440 conv=notrunc count=1 if=/usr/share/syslinux/gptmbr.bin of=/dev/sda

Después, ejecute gdisk del paquete sys-apps/gptfdisk y active los atributos de la partición de arranque de legacy BIOS en la partición donde /boot/extlinux se almacena.

root #gdisk /dev/sda
Command (? for help): x
 
Expert command (? for help): a
Partition number (1-3): 1
Known attributes are:
0: system partition
1: hide from EFI
2: legacy BIOS bootable
60: read-only
62: hidden
63: do not automount
 
Attribute value is 0000000000000000. Set fields are:
  No fields set
 
Toggle which attribute field (0-63, 64 or <Enter> to exit): 2
Have enabled the 'legacy BIOS bootable' attribute.
Attribute value is 0000000000000004. Set fields are:
2 (legacy BIOS bootable)
 
Toggle which attribute field (0-63, 64 or <Enter> to exit): 
 
Expert command (? for help): w

Instalación del gestor de arranque

Configurar EXTLINUX

Utilice la orden extlinux para instalar los ficheros necesarios para /boot/extlinux

root #mkdir /boot/extlinux
root #extlinux --install /boot/extlinux
root #ln -snf . /boot/boot
Nota
El enlace simbólico "boot -> ." no es necesario per se, pero en aras de la coherencia, esto se hace para las configuraciones de ejemplo, tanto para los usuarios con /boot en la misma partición, como para aquellos con particiones separadas.

El paquete Syslinux contiene varios módulos para permitir funciones adicionales. Partiendo con Syslinux versión 5, hay que decir que algunos módulos dependen de otros, por lo que es una buena idea copiar la mayoría de los módulos básicos, independientemente del caso que nos ocupe. Véase Comprobar los enlaces dinámicos para verificar si se han instalado todas las dependencias.

root #cd /usr/share/syslinux
root #cp menu.c32 memdisk libcom32.c32 libutil.c32 /boot/extlinux

Configurar ISOLINUX

Para instalar ISOLINUX, comenzaremos creando un directorio base en el sean situados todos los ficheros que deben residir en el CD o DVD. En el directorio base, crearemos un subdirectorio llamado isolinux y copiaremos el fichero isolinux.bin del paquete de Syslinux a la carpeta isolinux:

root #mkdir isolinux
root #cp /usr/share/syslinux/isolinux.bin isolinux/

Crearemos el fichero isolinux.cfg conforme a las instrucciones mencionadas a continuación.

Seguidamente, crearemos dos directorios más, kernel y images, en el directorio base:

root #mkdir kernel images

Copiaremos el binario memdisk al directorio kernel:

root #cp /usr/share/syslinux/memdisk kernel/
Nota
Para poder utilizar la orden mkisofs, el paquete app-cdr/cdrtools tiene que estar instalado. Este se obtiene ejecutando:
root #emerge --ask app-cdr/cdrtools

Cuando se haya realizado la configuración, la orden mkisofs se puede utilizar para crear la imagen ISO final (recuerde sustituir ${BASEDIR} con el mismo directorio base utilizado en las órdenes anteriores):

root #mkisofs -o output.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ${BASEDIR}

El fichero boot.cat se creará automáticamente.

Configurar PXELINUX

Con PXELINUX es posible arrancar utilizando imágenes compartidas desde un servidor TFTP. En este artículo se asume que disponemos de un servidor TFTP instalado, y su directorio raíz TFTP se encuentra en /var/lib/tftpboot. Disponiendo de estos ajustes, copie el cargador PXELINUX al directorio boot de TFTP y cree un directorio de configuración:

root #cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux.0
root #mkdir /var/lib/tftpboot/pxelinux.cfg
Nota
Al copiar el nuevo lpxelinux.0, en lugar de pxelinux.0, también es posible cargar el núcleo y el disco RAM a través de HTTP y hacer uso de nombres DNS en el fichero de configuración.

El directorio de configuración se puede utilizar para almacenar diferentes configuraciones para los clientes que arranquen por red. Cuando un cliente intenta arrancar, la dirección MAC o la dirección IP se utiliza para determinar el fichero de configuración adecuado del cliente. En primer lugar, tratará de buscar la dirección MAC, seguido de una prueba de la representación hexadecimal de la IP del cliente. Después irá descartando un carácter del extremo de dicha representación hexadecimal hasta que no queden más caracteres que descartar, o hasta que se encuentre un fichero de configuración. Si ninguno de los intentos coincide, se utilizará el fichero de configuración default.

La representación hexadecimal de una IP puede encontrarse usando la orden gethostip:

user $gethostip -x 192.168.0.50
C0A80032

Un fichero de configuración de ejemplo donde la secuencia de coincidencia se produce como sigue:

CÓDIGO
01-88-99-aa-bb-cc-dd
C0A80032
C0A8003
C0A800
C0A80
C0A8
C0A
C0
C
default
Nota
Para facilitar el mantenimiento, puede crear ficheros de configuración con nombres de equipo y enlaces simbólicos para la representación IP. Para reactivar los valores por defecto, simplemente borre o renombre el enlace simbólico

Configurar SYSLINUX

Utilice la orden syslinux para instalar el gestor de arranque SYSLINUX en el sistema de ficheros (FAT):

root #syslinux --install /dev/sda1

Configurar en sistemas EFI

Nota
EFI es apoyado desde Syslinux 6.00.

EFI system partition

Cree una partición de tipo EF (MBR) o EF00 (GPT), con un sistema de ficheros FAT32. También es posible utilizar una partición existente partición del sistema EFI ya existente. Es recomendable montar esta partición en /boot/efi/.

Nota
Lo que sigue asume que el sistema se inicia en modo EFI, y que la partición del sistema EFI se encuentra en /dev/sda1.

Instalación del gestor de arranque

En la partición del sistema EFI (ESP), cree un directorio para los ficheros de Syslinux. Este directorio contendrá también los ficheros de configuración que se crearán más tarde.

root #mkdir -p /boot/efi/EFI/syslinux

Copie los ficheros syslinux.efi y ldlinux.e64, junto con los otros ficheros .c32 deseados, desde /usr/share/syslinux/efi64/ al nuevo directorio de syslinux. Por ejemplo:

root #cd /usr/share/syslinux/efi64
root #cp syslinux.efi ldlinux.e64 menu.c32 libcom32.c32 libutil.c32 /boot/efi/EFI/syslinux

Si el sistema no se ha arrancado en modo EFI, entonces los ficheros Syslinux hay que copiarlos al directorio /boot/efi/EFI/Boot en su lugar, y el directorio syslinux.efi debe ser renombrado a bootx64.efi. Si este es el caso, entonces sáltese la siguiente sección relativa a la utilidad efibootmgr.

Hacer que Syslinux reconozca EFI

Asegúrese de que la variable CONFIG_EFI_VARS esté activada en el núcleo. Si la ha compilado como un módulo, asegúrese de que se carga en la memoria. Esta acción se puede hacer usando la utilidad modprobe. Después de que el módulo se haya cargado, cree una nueva entrada de arranque usando efibootmgr:

root #modprobe efivars
root #efibootmgr -c -l '\EFI\syslinux\syslinux.efi' -L SYSLINUX -p 1

La orden efibootmgr ajustará automáticamente el orden de arranque EFI para poner la entrada creada más recientemente en la parte superior de la lista. Si esto no se desea, cambie el orden de arranque con la opción -o.

Nota
Para que la orden efibootmgr funcione, se debe hacer emerge del paquete sys-boot/efibootmgr. Si lo necesita, puede usar la siguiente orden:
root #emerge --ask sys-boot/efibootmgr

Configuración

El fichero de configuración para Syslinux se llama syslinux.cfg. Para facilitar la compatibilidad con instalaciones existentes, aún se admiten los siguientes nombres de ficheros de configuración antiguos:

  • EXTLINUX: extlinux.conf
  • ISOLINUX: isolinux.cfg

Sin embargo, el formato de la configuración sigue siendo el mismo. El fichero de configuración debe estar presente en el directorio donde se haya instalado Syslinux.

Configuración sencilla

Esto proporcionará un simple prompt «boot:», similar al del CD Live Mínimo de Gentoo:

ARCHIVO syslinux.cfg
DEFAULT gentoo
LABEL gentoo
      LINUX /boot/kernel-3.6.11-gentoo

Configuración del menú

La siguiente configuración proporciona un ejemplo de menú de texto simple. Esto se hace a través del módulo vesamenu. En los casos en los que vesa no es compatible, el módulo de menú más simple funcionará. Copie el módulo de menú VESA en el sistema de ficheros de arranque o en la partición EFI system partition. Los sistemas BIOS deben utilizar el siguiente ejemplo:

root #cp /usr/share/syslinux/vesamenu.c32 /boot/extlinux/

Los sistemas EFI deben utilizar:

root #cp /usr/share/syslinux/efi64/vesamenu.c32 /boot/efi/EFI/syslinux/
ARCHIVO /boot/extlinux/extlinux.conf
TIMEOUT 30
ONTIMEOUT gentoo
  
UI vesamenu.c32
MENU TITLE Boot
  
LABEL gentoo
      MENU LABEL Gentoo Linux
      LINUX /boot/kernel-3.6.11-gentoo
  
LABEL gentoo-old
      MENU LABEL Gentoo Linux (núcleo anterior)
      LINUX /boot/kernel-3.5.7-gentoo
Nota
Evitar el uso del argumento KERNEL para seleccionar las imágenes del núcleo de Línux, en su lugar, utilizar el argumento LINUX. Si se utiliza el argumento KERNEL y el nombre del fichero de la imagen termina con un .0 entonces extlinux lo malinterpretará y lo tratará como PXE terminando con una pantalla llena de elementos gráficos y nada más. Consulte esta sección «KERNEL file» de la wiki de SYSLINUX para obtener más información.
Nota
En el fichero de configuración, las rutas absolutas serán relativas a la raíz del sistema de ficheros, las rutas no absolutas serán relativas al directorio de instalación de Syslinux.

Pasar los parámetros al núcleo

A menos que los parámetros del núcleo estén incrustados en el mismo e initramfs esté compilado en la imagen del núcleo, aquellos pueden necesitar ser pasados al núcleo a través del gestor de arranque. Para ello, utilice el parámetro APPEND o INITRD:

ARCHIVO syslinux.cfgAdding kernel parameters
DEFAULT gentoo
  
LABEL gentoo
      LINUX /boot/kernel-3.6.11-gentoo
      INITRD /boot/initramfs-3.6.11-gentoo
      APPEND root=/dev/sda1

Comprobar los enlaces dinámicos

Desde syslinux-5.00, los módulos .c32 utilizan enlaces dinámicos. Para verificar si las dependencias se han instalado, entre en el directorio de Syslinux y utilice la orden ldd:

root #LD_LIBRARY_PATH=. ldd *.c32

Si falta algún módulo .c32, asegúrese de copiarlos en el directorio.

Véase también

Referencias

  1. Equipo de desarrollo de Syslinux. Registro de cambios de Syslinux 6, syslinux.org. Liberado el 20 de julio de 2013. Recuperado el 27 de marzo de 2016.