¿Cansado de GRUB? ¡Usa Syslinux en ArchLinux!

Por años he sido usuario de GRUB (ya ni recuerdo la última vez que usé LILO) como bootloader. Desde que salieron las nuevas ISO de instalación de ArchLinux he tenido ganas de probar Syslinux, y luego de algunas pruebas (primero en una máquina virtual y luego en mi sistema principal) he quedado satisfecho: ¡procedimiento sencillo y resultado sobresaliente!

[Booteando con Syslinux en ArchLinux]

Paso 1: Preliminares

Un par de cosas que debes tener en cuenta:

  • ¿Usas /boot como partición independiente? ¡Asegúrate de que esté montada! (Usa lsblk)
  • ¿Sabes dónde se encuentra tu partición / (root)? ¡Verifica en el archivo /etc/fstab!

Paso 2: Instala Syslinux

Instalemos el paquete syslinux desde [core]:

sudo pacman -S syslinux

Ahora, ejecutaremos un script que terminará de instalar Syslinux de manera automática (instala diversos archivos en /boot/syslinux/, marca la partición con la bandera boot y escribe el código de booteo en la MBR):

sudo syslinux-install_update -iam

¿Usas un disco con GPT (GUID Partition Table) en vez de MBR (Master Boot Record)? ¿Usas un arreglo de discos RAID? El script anterior tiene previsto ambos casos.

Paso 3: Configura Syslinux

¡Aún no reinicies tu sistema! Usa tu editor de texto favorito (en mi caso, vim) para abrir el archivo de configuración de Syslinux:

sudo vim /boot/syslinux/syslinux.cfg

El contenido de dicho archivo es muy intuitivo, y podemos modificarlo según nuestras necesidades.

Lo más importante (y necesario) que deben verificar se encuentra casi al final del archivo. Se trata de la ruta de nuestra partición / (¡no uses /boot!) sea la utilizada en las líneas que inician con APPEND en cada entrada del menú de Syslinux (las cuales inician con LABEL). Por ejemplo, en mi caso, mi / (root) es /dev/sda3:

LABEL arch
	MENU LABEL Arch Linux
	LINUX ../vmlinuz-linux vga=773
	APPEND root=/dev/sda3 ro
	INITRD ../initramfs-linux.img
 
LABEL archfallback
	MENU LABEL Arch Linux Fallback
	LINUX ../vmlinuz-linux
	APPEND root=/dev/sda3 ro
	INITRD ../initramfs-linux-fallback.img

Si son observadores, al final de la línea que inicia con LINUX (que también puede iniciar con KERNEL) incluí vga=773, para que se use un framebuffer de 1024×768.

Ahora bien, las primeras opciones del archivo son las siguientes:

DEFAULT arch
PROMPT 0
TIMEOUT 50

El significado de cada una de las líneas:

  • Cada opción del menú de Syslinux tiene un identificador asociado con LABEL, y uno de ellos debemos especificarlo como nuestra opción predeterminada con DEFAULT.

  • Si establecemos a 1 la línea PROMPT, haremos siempre visible el prompt boot:

  • El TIMEOUT indica la cantidad de décimas de segundo de espera (en nuestro ejemplo: 50 = 5 segundos).

Adicionalmente, podemos cambiar los colores usados en el menú de Syslinux, modificando los valores de las líneas que inician con MENU COLOR.

Ahora si, guarda las modificaciones en el archivo, sal de tu editor, ¡y reinicia tu sistema!

Paso Extra: ¡Syslinux Gráfico!

Si el menú textual no es lo suficientemente agradable a la vista, podemos establecer un menú gráfico. Para ello, antes de entrar nuevamente a editar el archivo /boot/syslinux/syslinux.cfg, debemos hacer dos pasos previos:

  • Copia el archivo vesamenu32.c32, que se encuentra en /usr/lib/syslinux/, al directorio /boot/syslinux/

    sudo cp /usr/lib/syslinux/vesamenu.c32 /boot/syslinux/
  • Aunque no es algo obligatorio, es muy atractivo tener una imagen de fondo, la cual debe ser de 640 x 480 pixeles. ¿Quieres usar la que se muestra en el ISO de instalación de ArchLinux? Aquí los pasos para descargarla y copiarla a /boot/syslinux/

    wget http://projects.archlinux.org/archiso.git/plain/configs/releng/syslinux/splash.png
    sudo cp ./splash.png /boot/syslinux/

Ahora si, editemos de nuevo nuestro archivo de configuración:

sudo vim /boot/syslinux/syslinux.cfg

En las líneas que inician con UI, debemos deshabilitar la opción menu.c32 y habilitar vesamenu.c32:

#UI menu.c32
UI vesamenu.c32

En la línea MENU BACKGROUND debemos especificar el nombre del archivo de la imagen que usaremos de fondo. En nuestro ejemplo:

MENU BACKGROUND splash.png

Si usaste la imagen de la ISO de instalación de ArchLinux, te recomiendo los siguientes parámetros extras para ajustar a dicho fondo la posición y tamaño del menú:

MENU WIDTH 78
MENU MARGIN 4
MENU ROWS 5
MENU VSHIFT 10
MENU TIMEOUTROW 13
MENU TABMSGROW 11
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29

El resultado será similar a la imagen que observan al inicio del presente post.

Obviamente, si usan una imagen de fondo diferente, deben especificar valores adecuados para que el menú se vea bien.

Observaciones finales

¡Syslinux aún no soporta UEFI! Eventualmente lo hará, pero no hay fecha oficial.

Para más información, les recomiendo ampliamente leer sobre Syslinux en la Wiki de ArchLinux.

Share

  • http://twitter.com/Luweeds Luweeds

    Muchas gracias por el post¡¡ ¿Podrías decirme si arranca más rápido que con grub2? a mí con grub2 se me queda parado unos segundos (7-10) verificando el estado de red (yo no uso gestor de redes). ¿Qué arranque prefieres?… a mi lilo también me gusta :P

    • http://gespadas.com Gregorio Espadas

      Pues tanto Syslinux y GRUB son sólo bootloaders, todo el proceso de inicio de ArchLinux sigue siendo el mismo. Donde si se podría notar una diferencia es al usar systemd en vez del clásico SysV… pero eso es tema de otro post ;-)

      • Lolo

        Estoy deseando ver ese post.

        Felicidades por tu blog.

        • http://gespadas.com Gregorio Espadas

          ¡Muchas gracias!

          Ya el post empezó a cocinarse ;-)

    • http://twitter.com/ManuelFte Manuel de la Fuente

      Eso es porque estás usando el demonio network que es lentísimo. Instala un gestor de redes.

    • M1ndCr4ck

      luweeds, podrías modificar algunos demonios para que corrieran en sugundo plano anteponiendo un @ a el demonio ejemplo @networkmaneger … salu2

  • http://twitter.com/Diniremix Diniremix

    wow! muy buen post! una pregunta se pueden agregar otros sistemas operativos como en GRUB{legacy,2}, en caso de que tengas otros SO en tu pc!?, gracias

    • http://gespadas.com Gregorio Espadas

      ¡Claro que se puede! Por ejemplo para Windows:

      LABEL windows
          MENU LABEL Windows
          COM32 chain.c32
          APPEND hd0 1

      Todo está perfectamente documentado en el mismo archivo de configuración.

  • Abraham tamayo

    Bueno pues ya sali de la duda .. los errores de arranque con algunas cosas que se supone deberian de estar en /lib siguen estando ahi .. solo tuve mucho cuidado con mi particion root que era otra y como siempre este tutorial quedo muy bien ..

  • http://www.facebook.com/emmanuel.paniagua Emmanuel Paniagua

    Hola, muy buen blog y excelente post!!
    tengo una duda, yo tengo mi /boot en la particion sda1, root y home en sda5 y sda6 respectivamente, pero con lsblk no aparece como el sda1 con mountpoint de /boot

    lo monto manualmente?

    • http://gespadas.com Gregorio Espadas

      ¡Muchas gracias!

      Con respecto a tu pregunta, creo que si debes montarlo manualmente.

  • http://linuxblogx6.wordpress.com/ Sergio Esaú Arámbula Durán

    Gregorio Espadas ¿no sabes como hacer halgo similar con Manjaro Linux?

    • http://linuxblogx6.wordpress.com/ Sergio Esaú Arámbula Durán

      pero claro que con un fondo especial para esta distro :)

      • http://gespadas.com Gregorio Espadas

        Manjaro está basado en ArchLinux, por lo que todo lo expuesto en el post es válido también para esa distro. La imagen de fondo tendrías que conseguirla, o mejor aún, diseñarla, recuerda que sus dimensiones deben ser 640 x 480 pixeles.

  • Pingback: <° Linux | [How-to] Usar Syslinux en Manjaro Linux y no morir en el intento()

  • Jairo Alonso Velásquez

    No Olvidar que si ya migraste completamente a systemd tu sistema Archlinux debes parametrizar la linea en syslinux, que sino te llevas un buen susto al ver que no carga la red ni varios demonios:

    MENU LABEL Arch Linux LINUX ../vmlinuz-linux vga=773 init=/bin/systemd

    • http://gespadas.com Gregorio Espadas

      No es necesario si se instala el paquete systemd-sysvcompat

      • Jairo Alonso Velásquez

        Interesante voy a leer un poco ;)

  • http://lolibuntu.wordpress.com/ shini-kire

    se puede eliminar el grub2 y dejar este default? y como se hace? >.<

    • http://gespadas.com Gregorio Espadas

      Con el procedimiento descrito en el post, syslinux queda predeterminado en el sistema. Lo único que faltaría es eliminar el paquete correspondiente al GRUB2.

  • Pingback: proHAckerz » Instalación de ArchLinux 2012()

  • Jonathan C.

    Muy buen post como todos los de tu blog, llevo poco tiempo en arch y gracias a tu blog he aprendido mucho, muchas gracias

    • Gregorio Espadas

      ¡Gracias a ti por la preferencia! :-)

    • http://gespadas.com Gregorio Espadas

      ¡Gracias a ti por la preferencia! :-)

  • Pingback: INSTALACIÓN DE ARCHLINUX 2012 « Blog del Gato()

  • Gregoyo F. Guerrero

    Si deseo hacer lo contrario como lo podria hacer¿?muchas gracias

  • http://twitter.com/coellobranco Coello Branco

    Bien, todo correcto, va perfecto y detecta windows 7 y windows 8, pero una duda, cuando se actualize el sistema configurará automáticamente el syslinux no?, y otra cosa, si he de poner algo en configuración, tal como el nomodeset (para los problemas con alguna gráfica y arch), como lo haría?. Saludos.

  • Abraham Tamayo

    Mucho cuidado con Manjaro que solo haciendo un copy&paste podrian no iniciar como me paso a mi lo bueno es que no tuve que reinstalar porque se puede editar la ruta de la imagen para bootear .. en mi caso fue cambiar los valores “vmlinuz-linux” por “vmlinuz-37-x86_64″ lo que tengo la duda es con la actualizaciones de kernel si tendre que hacer ese proceso a mano o me modificara el archivo ..

  • Pingback: Bitácora de una instalación Arch Linux + KDE: Instalación paso a paso()