Guía de migración del GRUB antiguo a GRUB2
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.
El contenido de este documento, a no ser que se especifique
expresamente, está registrado bajo los términos de la licencia
CC-BY-SA-2.5. Se aplican las
Pautas de
Utilización del logotipo y nombre de Gentoo.
|