Gentoo Logo

Guía de migración del GRUB antiguo a GRUB2

Contenido:

1.  Trasfondo

Qué es Grub?

Grub es uno de los más comunes gestores de arranque usandos en máquinas Linux no encastradas. El rol que cumple Grub es facilitar el arranque del núcleo Linux desde el disco a memoria y comenzar su ejecución.

Por qué migrar?

En primer lugar, la versión antigua de GRUB no recibe mantenimiento y como tal ya no es actualizada. La versión antigua de GRUB fue creada en un momento en que los desarrolladores se sentían seguros asumiendo varias premisas que en la actualidad ya no son ciertas. Por ejemplo, la versión antigua de GRUB no puede arrancar de un disco mayor a 2TB y asume que los más actuales sistemas de archivo no serían usados en /boot.

GRUB2 busca ser más robusto, más portátil y más poderoso, aparte de mantenerse con una base de código más limpia. GRUB2 soporta mayor número de configuraciones de hardware y más sistemas de archivo que su predecesor.

2.  Migración a GRUB2

La migración a GRUB2 es bastante sencilla: entrará al sistema como parte del proceso normal de actualización por el gestor de paquetes. Si no es llamado de manera automática, puede hacerlo manualmente instalando sys-boot/grub:2.

Dispositivo de arranque

La primera parte importante a entender es qué es el dispositivo de arranque. Para muchos será /dev/sda. La forma más fácil de determinar esto es ver como está configurada la instalación de GRUB actual observando el archivo /boot/grub/grub.conf. A continuación proporcionamos un ejemplo.

Nota: El directorio /boot debe estar montado para poder ver estos archivos. Esto debería ser tan sencillo como hacer mount /boot para montar el /boot.

Listado de Código 2.1: /boot/grub/grub.conf

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 3.2.12
root (hd0,0)
kernel /boot/kernel-3.2.12-gentoo root=/dev/sda3 quiet dolvm
initrd /boot/initramfs-genkernel-x86_64-3.2.12-gentoo

Basado en el ejemplo anterior, sabemos que (hd0) es el dispositivo de arranque, pero debemos mapear este a un dispositivo real. Para hacer esto debemos ver el archivo /boot/grub/device.map. A continuación un ejemplo.

Listado de Código 2.2: /boot/grub/device.map

(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb

Basado en el ejemplo anterior sabemos que el dispositivo /dev/sda es el dispositivo de arranque.

Instalando y configurando GRUB2

El siguiente paso es instalar y configurar GRUB2 en la partición /boot sin eliminar la versión antigua de GRUB del MBR. El ejemplo a continuación usa /dev/sda, pero este debe reemplazarse por el verdadero dispositivo de arranque de su sistema. El primer paso instala los archivos necesarios de GRUB2 a /boot/grub2, mientras que el segundo paso barre a través de los núcleos disponibles y genera un archivo de configuración adecuado en /boot/grub2/grub.cfg.

Listado de Código 2.3: Instalando y configurando GRUB2

# grub2-install --grub-setup=/bin/true /dev/sda
Installation finished. No error reported.
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/kernel-3.2.12-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo
done

Nota: GRUB2 tiene unos requerimientos estrictos respecto a nombrar los núcleos e imágenes initramfs images. El nombre del núcleo debe ser kernel-${version} o vmlinuz-${version}, mientras que una imagen initramfs se debe llamar initramfs-${version}, initramfs-genkernel-${version}, initramfs-genkernel-${arch}-${version}, initrd-${version}.img, initrd.img-${version}, initrd-${version}.gz o initrd-${version}. Junto con la ${version}, el nombre del archivo debe corresponder al núcleo disponible en /boot.

Cargando GRUB2 desde la versión antigua de GRUB Legacy para probar la configuración

Dado que una mala configuración de grub GRUB podría significar un sistema que no arranque, deseamos probar nuestra configuración GRUB2 antes de hacerla permanente. Para hacer esto podemos cargar de manera encadenada GRUB2 desde la versión antigua de GRUB. Esto se hace agregando una sección nueva a /boot/grub/grub.conf. A continuación un ejemplo.

Nota: Tenga en cuenta que su dispositivo podría no ser el (hd0,0) usado en el ejemplo y que debe asegurarse reutilizar el mismo valor del archivo /boot/grub/grub.conf.

Listado de Código 2.4: /boot/grub/grub.conf

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title GRUB2 Chainload
root (hd0,0)
kernel /boot/grub2/i386-pc/core.img
boot

title Gentoo Linux 3.2.12
root (hd0,0)
kernel /boot/kernel-3.2.12-gentoo root=/dev/sda3 quiet dolvm
initrd /boot/initramfs-genkernel-x86_64-3.2.12-gentoo

En este punto debería reiniciar la máquina y seleccionar GRUB2 Chainload del menú GRUB al arrancar. Aparecerá otro menú GRUB que se presentará como GRUB 2.0.0 o más reciente en la parte de arriba de la pantalla y mostrar los núcleos disponibles para arrancar. Si esto no funciona, reinicie el sistema y escoja la opción de arranque usual en vez de GRUB2 Chainload.

Reemplazando y eliminando la versión antigua de GRUB

Si en este momento todo ha funcionado perfectamente, puede reemplazar la versión antigua de GRUB y borrarla del sistema.

Nota: Como ha reiniciado el sistema, tal vez necesite volver a montar /boot. Asegúrese de usar el verdadero dispositivo de arranque en lugar de /dev/sda.

Listado de Código 2.5: Reemplazando la versión antigua de GRUB

# grub2-install /dev/sda
Installation finished. No error reported.
# rm -rf /boot/grub/

Ahora puede usar el gestor de paquetes para eliminar sys-boot/grub:0. Ahora la migración está completada.

3.  El mantenimiento de GRUB2

Cuando vaya a instalar un núcleo nuevo, debe llevar a cabo el siguiente paso para que GRUB2 reconozca el núcleo nuevo en su configuración.

Nota: Debe estar montada la partición /boot para este paso.

Listado de Código 3.1: Instalando un núcleo nuevo

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/kernel-3.3.8-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.3.8-gentoo
Found linux image: /boot/kernel-3.2.12-gentoo
Found initrd image: /boot/initramfs-genkernel-x86_64-3.2.12-gentoo
done

4.  PUF / Problemas conocidos / Advertencias

Contenido por venir.



Imprimir

Página actualizada 27 de julio, 2012

Sumario: La finalidad de esta guía es proporcionarle una migración sin sobresaltos desde la versión antigua de GRUB a GRUB2.

Doug Goldstein
Autor

John Christian Stoddart
Traductor

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.