Instalar y configurar GRUB2 en Slackware 14.0 (EFI)

En una publicación anterior he descrito como instalé Slackware en mi laptop con el asqueroso Windows 8 (hardware UEFI). En este proceso utilicé el GRUB de Ubuntu (por flojera) para decidir con cual sistema operativo iniciar, pero como casi no uso esta distro decidí buscar como instalar GRUB en Slackware y usarlo para este propósito, de esta manera sería independiente de Ubuntu.

Como usuario de Slackware estoy familiarizado con LILO y mi primera experiencia usando y configurando GRUB fue en los pocos días que usé Ubuntu, no es complicado pero tampoco es tan simple como con LILO a mi parecer. Pero en fin es a lo que me vi obligado con el nuevo hardware UEFI.

Mi desición más obvia con gusto sería dejar solo Slackware en el equipo, pero como tengo que sacar para la comida usando ArcGIS, Office, AutoCAD y demás cosas, decidí dejar el Windows 8 instalado en el equipo. Además pagué por la licencia cuando comp

Instalando GRUB2

La instalación de grub la hice de la siguiente manera: usé sbopkg para instalar todas las dependencias y luego instalé grub con el SlackBuild de la manera tradicional. Las dependencias quedaron con solo hacer:

# sbopkg -i "gnu-unifont os-prober locale-gettext help2man"

Y luego descargué el SlackBuild de grub y lo edité para agregar:

--with-platform=efi \

en la parte de ./configure.

Preparando todo

Para continuar seguí las instrucciones de instalación y configuración de grub publicadas en la documentación de Slackware aquí. Estas instrucciones son para instalar grub como cargador de arranque en hardware UEFI, que es precisamente lo que quiero hacer. Consisten básicamente en lo siguiente:

  • Instalar Grub2-efi en una memoria USB
  • Una vez que funcione el arranque desde la memoria USB instalar Grub2-efi en el disco duro
  • Modificar el menú de arranque UEFI

Instalar Grub2-efi en una memoria USB

Una vez instalado el paquete de grub en Slackware 14.0, hay que montar la memoria USB en el directorio /boot/efi (si es necesario hay que crearlo primero), luego ejecutar:

# mount /dev/sdb1 -t vfat /boot/efi (donde sdb1 es mi USB, se puede identificar con fdisk -l)
# modprobe dm-mod
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck --debug
# mkdir -p /boot/grub/locale
# cp /usr/share/locale/en\@quot/LC_MESSAGES/grub.mo /boot/grub/locale/en.mo

Luego configurar grub.cfg haciendo:

# grub-mkconfig -o /boot/grub/grub.cfg

Este proceso debió haber creado un archivo en la memoria con la siguiente ruta:

/EFI/grub/grubx64.efi.

Instalar Grub2-efi en el disco duro

La partición efi, sda1 en mi caso, debe montarse en el disco duro (yo hice un directorio llamado ~/efi y la monté aquí para no desmontar la memoria USB todavía). La partición tendrá una estructura como esta:

/EFI/Boot/bootx64.efi

En la mía también hay /EFI/Microsoft/Boot y el archivo efi de arranque de Windows es bootmgr.efi. Elegí la manera segura que es crear un directorio llamado /EFI/Linux/ y copiar aquí el archivo llamado grubx64.EFI desde la memoria USB.

Modificar el menú de arranque UEFI

Modificar el menú de arranque nos permite conservar Windows 8. El primer paso es descargar efibootmgr desde http://linux.dell.com/efibootmgr/.

Descomprimirlo, entrar al directorio creado y ejecutar make:

# make

Copiar src/efibootmgr/efibootmgr en /usr/sbin y cambiar el propietario (con chown) a root.

# chown root /usr/bin/efibootmgr

Desmontar la memoria y montar la partición efi (la mia es sda1) del disco duro en /boot/efi:

# mount /dev/sda1 -t vfat /boot/efi 
# modprobe efivars
# efibootmgr -c -g -d /dev/sda -p 1 -w -L "Linux" -l '\EFI\Linux\grubx64.EFI' 

Al reinicar apareció e grub de Slackware y no el de Ubuntu.

Pequeño inconveniente

Resta decir que al parecer Ubuntu reemplazó el archivo EFI de Windows (bootmgr.efi) por el suyo por que cuando seleccioné la opción para iniciar Windows en el menú grub de Slackware, me apareció el menú de grub de Ubuntu. Sin embargo existe un respaldo llamado bkpbootmgfw.efi que es el arrancador EFI de Windows real. Para solucionar esto, primero encontré el UUID de la partición FAT32 donde se encuentra este archivo UEFI:

# grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bkpbootmgfw.efi 
6C27-EC36
# grub-probe --target=hints_string /boot/efi/EFI/Microsoft/Boot/bkpbootmgfw.efi 
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1

Y edité el archivo /etc/grub.d/40_custom para agregar:

menuentry "Microsoft Windows 8 x86_64 UEFI-GPT" {
        insmod part_gpt
        insmod fat
        insmod search_fs_uuid
        insmod chain
        search --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 6C27-EC36
        chainloader /efi/Microsoft/Boot/bkpbootmgfw.efi
}

Finalmente actualizar el archivo /boot/grub/grub.cfg:

# grub-mkconfig -o /boot/grub/grub.cfg

Hibernación

Para habilitar el inicio desde hibernación edité el archivo /boot/grub/grub.cfg, colocando en la entrada del menú de Slackware:

linux /boot/vmlinuz... root=... resume=/dev/sda9 quiet ro

Donde sda9 es mi partición SWAP de 8 GB, el doble que la RAM. Todo funciona perfecto ahora.

¡Saludos!

Fuentes:

SlackBuilds.org
SlackDocs
Arch Wiki

Anuncios

4 pensamientos en “Instalar y configurar GRUB2 en Slackware 14.0 (EFI)

  1. Muy bueno, pero creo que lilo a simple vista se me hace mucho mas facil, una pregunta: ¿como seria la instalacion y configuración de plymouth?, eh visto un video en Youtube donde el autor deja su contacto a travez de un canal de irc ( http://youtu.be/TN8S-5kndZM ), lamentablemente no lo eh visto por ese canal en el que dice estar, en internet no hay un solo tutorial sobre plymouth en slackware, seria genial tenerlo.

    A proposito muy bueno tu blog, cuesta mucho encontrar cosas de slackware en tu propio idioma, saludos.

    • Que tal, pues no he tenido curiosidad por instalar plymouth en Slackware pues hasta ahora no he tenido ningún problema con el arranque clásico y no me gusta mucho el estilo gráfico como el de Ubuntu.
      He leido que plymouth puede acelerar el arranque pero no se si esto sea cierto.
      Tampoco se de algún tutorial para instalarlo en Slackware, pero podrías probar tu suerte en LinuxQuestions.
      Saludos y gracias por el comentario.

  2. Para los que consideramos Slackware como la mejor distribución de Linux ( y no estoy exagerando) , sin subestimar a Debian , este blog es todo un referente hasta diría único ya que es sorprendente la escasa información que hay sobre Slack . Ahora si al grano , tanto en sus artículos de grub y actualización los he puesto en práctica y no he tenido ni un solo problema de antemano gracias . Tengo dos inquietudes la primera usted cree que es conveniente convertir Slack 64 bits en multilib , la segunda , hay alguna forma de instalar BricsCAD en Slack.

    Saludos.

    • Gracias por el comentario.
      Primero, es conveniente tener un sistema multilib solo si necesitas determinadas aplicaciones, yo por ejemplo tuve que hacerlo por aplicaciones como Skype y GoogleEarth que no corren en un sistema de 64 bits. Si usas VirtualBox, wine u otra aplicación que necesite un sistema de 32 bits entonces si es conveniente. No se pierde nada en teoria, aunque personalmente me ha dado problemas compilar cosas como libquicktime en multilib. Fuera de eso todo perfecto.
      Y por el otro lado no sabría decirte acerca de BricsCAD porque nunca lo he instalado en Slackware, tal vez te sirva buscar en los repositorios que hay en la sección de Links del blog.
      Saludos.

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