Migración de GRUB2

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

Other languages:
English • ‎español • ‎français • ‎polski • ‎português do Brasil • ‎čeština • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

El objetivo de esta guía es ofrecer a los lectores una migración cómoda desde GRUB Legacy a GRUB2.|

Conceptos previos

¿Qué es GRUB?

GRUB es uno de los cargadores de arranque más utilizados en las máquinas Linux no empotradas. El papel de GRUB es facilitar la carga del núcleo Linux del disco a la memoria y la ejecución del núcleo.

¿Porqué migrar?

En primer lugar, ya no se mantiene GRUB Legacy y por lo tanto no recibe actualizaciones. GRUB Legacy se creó en un tiempo en el que los desarrolladores se sentían a salvo al hacer ciertas suposiciones que ya no son ciertas hoy en día. Por ejemplo, GRUB Legacy no puede arrancar desde discos mayores de 2 TB y asume que los nuevos sistemas de archivos no podrían reemplazar /boot.

El objetivo de GRUB2 es ser más robusto, más portable, más potente y se mantiene con una base de código más limpia. GRUB2 ofrece soporte a más configuraciones de hardware, más sistemas de archivos y más disposiciones de controladores que su predecesor.

Migración a GRUB2

La migración a GRUB2 es bastante directa: el gestor de paquetes lo obtiene como un componente más del proceso regular de actualización. Si no se obtiene de forma automática se puede hacer emerge a través del átomo de paquete sys-boot/grub:2:

root #emerge --ask sys-boot/grub:2

Dispositivo de arranque

Lo más importante es comprender cuál de los discos es arrancable. Para aquéllos que hayan seguido el manual de Gentoo debería ser /dev/sda. Para aquéllos que no están seguros, la forma más fácil de localizarlo es echar un vistazo a la configuración actual de GRUB Legacy. El fichero /boot/grub/grub.conf es el lugar a comprobar.

Nota
Asegúrese de que la partición /boot está montada para poder ver estos ficheros. Debería hacerse algo tan simple como
root #mount /boot

El fichero grub.conf debería tener el siguiente aspecto:

ARCHIVO /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

Basándose en el fichero de arriba, se puede deducir que (hd0) es el disco de arranque, sin embargo, debemos mapearlo al dispositivo real. Para averiguar esto, echar un vistazo al fichero /boot/grub/device.map. Abajo se muestra un ejemplo.

ARCHIVO /boot/grub/device.map
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
Nota
Cuando se sospeche que /boot/grub/device.map no es exacto, lanzar la siguiente orden para recrear el fichero:
root #grub-install --recheck /dev/sda

Basándose en el fichero de arriba, podemos deducir que /dev/sda es el disco de arranque.

Instalar y configurar GRUB2

El siguiente paso es instalar y configurar GRUB2 para la partición /boot sin reemplazar GRUB Legacy del Registro Principal de Arranque (Master Boot Record o MBR). El ejemplo de abajo utiliza /dev/sda. Reemplazarlo por la ruta correcta al disco de arranque.

En primer lugar instalar los ficheros necesarios de GRUB2 a /boot/grub.

root #grub-install --grub-setup=/bin/true /dev/sda
Installation finished. No error reported.
Advertencia
La opción --grub-setup=/bin/true le indica a grub-install que no debe instalar GRUB2 en el MBR. Si se omite esta opción, se reescribirá GRUB Legacy y Cargar en cadena GRUB2 desde GRUB Legacy no será posible más adelante.

Ahora podemos buscar los núcleos disponibles y generar un fichero de configuración adecuado en /boot/grub/grub.cfg. Omita este paso cuando utilice una configuración manual.

root #grub-mkconfig -o /boot/grub/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
Advertencia
GRUB2 utiliza el fichero de configuración /boot/grub/grub.cfg mientras que GRUB Legacy utilizaba /boot/grub/grub.conf de modo que debe asegurarse de no utilizar por error el fichero antiguo, por ejemplo, utilizando el autocompletado si el antiguo fichero todavía está ahí.
Nota
grub-mkconfig e tiene unos requisitos de nombrado estrictos para núcleos e imágenes initramfs. Los núcleos se deben nombrar kernel-${versión} o vmlinuz-${versión} mientras que las initramfs se deben llamar initramfs-${versión}.img, initramfs-genkernel-${versión}, initramfs-genkernel-${arquitectura}-${versión}, initrd-${versión}.img, initrd.img-${versión}, initrd-${versión}.gz, o initrd-${versión}. Estos ficheros deben estar disponibles en /boot.
Nota
El fichero /etc/default/grub controla la operación de grub-mkconfig. Si es necesario pasar parámetros al núcleo (por ejemplo cuando se utiliza genkernel y se arranca desde LVM o RAID por software), editar dicho fichero antes de generar /boot/grub/grub.cfg de este modo:
root #nano /etc/default/grub
Echar un vistazo a la configuración de GRUB2 en el wiki de Gentoo o al manual oficial de GRUB2 para decidir cómo modificar este fichero. La mayoría de usuarios necesitarán cambiar GRUB_CMDLINE_LINUX para especificar los parámetros a pasar a la línea de órdenes del núcleo.

Cargar en cadena GRUB2 desde GRUB Legacy para probar la configuración

Debido a que una configuración GRUB rota podría suponer un sistema que no puede arrancar, seguramente queramos comprobar nuestra configuración GRUB2 antes de hacerla permanente. Para conseguir esto realizaremos una carga en cadena de GRUB2 desde GRUB Legacy. Esto se realiza añadiendo una nueva sección a /boot/grub/grub.conf. Se muestra un ejemplo abajo.

Nota
Tenga en cuenta que la partición raíz puede ser diferente de (hd0,0) que es la que se utiliza en el ejemplo y asegúrese de reutilizar el mismo valor para el raíz del fichero de configuración /boot/grub/grub.conf.
ARCHIVO /boot/grub/grub.conf
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
  
title GRUB2 Chainload
root (hd0,0)
kernel /boot/grub/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 se deberá reiniciar la máquina y seleccionar la carga en cadena de GRUB2 en el menú GRUB cuando la máquina comience su arranque. Se mostrará otro menú GRUB en la parte superior que deberá presentarse como GRUB 2.0.0 o superior y mostrar el o los núcleos disponibles para el arranque. Si esto no funciona, simplemente reinicie el sistema y elija la opción normal en lugar de la carga en cadena de GRUB2.

Reemplazar y eliminar GRUB Legacy

Si todo ha ido bien, reemplace GRUB Legacy y elimínelo del sistema.

Advertencia
Debido a que se ha reiniciado el sistema, debería ser necesario montar /boot de nuevo. Asegúrese de utilizar el disco de inicio correcto en lugar de /dev/sda ya que es meramente un ejemplo. Si no se ha montado /boot antes de lanzar grub-install, el sistema podría no iniciarse.
Nota
Tal y como se ha mencionado anteriormente, si se hizo emerge de GRUB2 con el ajuste USE multislot entonces se debe utilizar grub2-install en lugar de grub-install. En este caso, una vez se ha eliminado GRUB Legacy del sistema como se indica en el siguiente paso, se debe volver a hacer emerge de GRUB2 sin el ajuste USE multislot de modo que grub-install y grub-mkconfig se puedan convertir en órdenes GRUB2.
root #grub-install /dev/sda
Installation finished. No error reported.

En este punto utilice el gestor de paquetes para eliminar sys-boot/grub:0.

root #emerge -avC "=sys-boot/grub-0.97*"

Así se completa la migración.

Mantenimiento de GRUB2

Cada vez que se instala un nuevo núcleo, se debe completar el siguiente paso de modo que la configuración de GRUB2 reconozca el nuevo núcleo (excepto cuando se esté realizando una configuración manual).

Nota
Asegúrese de que la partición /boot está montada para realizar este paso.
root #grub-mkconfig -o /boot/grub/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

This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Cardoe
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.