From Fedora Project Wiki

Revision as of 05:01, 2 December 2012 by Eduleo (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Introducción

GRUB 2 es la versión más reciente de GNU GRUB, el GRand Unified Bootloader. Un gestor de arranque es el primer programa de software que se ejecuta al iniciarse el equipo. Es el responsable de cargar y transferir el control al kernel (núcleo) del sistema operativo, (Linux, en el caso de Fedora). El kernel, a su vez, inicializa el resto del sistema operativo.

GRUB 2 ha sustituido a lo que se conocía anteriormente como GRUB (es decir la versión 0.9x), que a su vez, se ha convertido en GRUB Legacy.

A partir de Fedora 16, GRUB 2 es el gestor de arranque predeterminado en sistemas con BIOS x86. Para actualizaciones de los sistemas con BIOS el valor predeterminado es también instalar GRUB 2, pero puede optar por omitir la configuración del gestor de arranque completamente.

Tareas / Problemas generales

Actualización de la configuración de GRUB 2 en sistemas con BIOS

Los paquetes grub2 contienen comandos para instalar un gestor de arranque y para crear un archivo de configuración del gestor de arranque.

grub2-install instalará el gestor de arranque - generalmente en el MBR, en el espacio libre sin particionar, y como archivos en /boot. El gestor de arranque será instalado con algo como:

grub2-install /dev/sda

grub2-mkconfig va a crear una nueva configuración basada en el sistema actualmente en ejecución, la que se encuentra en /boot, que se establece en /etc/default/grub, y los scripts personalizables en /etc/grub.d/ . Un nuevo archivo de configuración se crea con:

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

El formato de configuración ha evolucionado con el tiempo, y un archivo de configuración nuevo podría ser ligeramente incompatible con el gestor de arranque antiguo. Por lo tanto a menudo/siempre es una buena idea ejecutar grub2-install antes de ejecutar grub2-mkconfig por alguna razón.

El instalador de Fedora, anaconda, ejecuta estos comandos de grub2 y generalmente no hay ninguna razón para ejecutarlos manualmente.

Generalmente, es seguro editar directamente /boot/grub2/grub.cfg en Fedora. Grubby en Fedora parchea la configuración cuando se realiza una actualización del kernel y tratará de no hacer ningún otro cambio que no sea necesario. (Otras distribuciones, en particular las distribuciones Debian y derivadas-Debian proporcionan un parche de software que agrega un comando update-grub que no está incluido ni es necesario en Fedora.) Sin embargo los cambios manuales podrían ser sobrescritos con grub2-mkconfig la próxima vez que el sistema se actualice con anaconda. Algunas personalizaciones pueden colocarse en /etc/grubd/40_custom o /boot/grub2/custom.cfg y sobrevivirán a la ejecución de grub2-mkconfig.

Actualización de la configuración de GRUB 2 en sistemas con UEFI

Esta es una reseña no probada de la memoria y una predicción - tenga cuidado
GRUB 2 para UEFI en Fedora 18 se ha modificado mucho para apoyar Secure Boot. Lamentablemente esto también significa que GRUB 2 de Fedora 18 es bastante diferente de lo que ofrece el desarrollo de software y pierde algunas de las buenas propiedades que tiene y pueden verse en los sistemas con BIOS.

Para Fedora 18 asegúrese de que están instalados los paquetes necesarios:

yum install grub2-efi shim

El archivo de configuración necesario se crea con:

grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

(Sin embargo, podría decirse que sería mejor poner el archivo generado con mkconfig en /boot/grub2/grub.cfg y crear un grub.cfg de EFI que sólo apunte a aquél.)

La configuración puede ser ajustada mediante la edición de /etc/default/grub antes de ejecutar grub2-mkconfig.

El gestor de arranque UEFI debe estar configurado para arrancar el /EFI/fedora/shim.efi en el ESP. Probablemente se pueda hacer de alguna manera al arrancar o utilizando efibootmgr.

El gestor de arranque activo se actualizará inmediatamente después que sea actualizado el paquete grub2-efi. No depende de que se esté ejecutando grub2-install y no hay ningún respaldo si es liberada una mala actualización de grub2-efi.

Agregar otros sistemas operativos al menú de GRUB 2

grub2-mkconfig agrega entradas para los otros sistemas operativos que pueda encontrar. Esto se hace en base a la salida de la herramienta os-prober.

Sin embargo esto podría no funcionar tan bien, especialmente para arrancar otros sistemas operativos Linux, y particularmente en sistemas sin UEFI. Ver http://www.gnu.org/software/grub/manual/grub.html#Multi_002dboot-manual-config .

Configuración de la entrada por defecto

Algunas partes de esta sección son incorrectas u obsoletas para f17.
También tenga en cuenta [Bug 768106 - grubby does not support grub2 set default="${saved_entry}" and replaces with "0"].

Debido a grub2-mkconfig (y a os-prober) no podemos conocer de antemano el orden de las entradas en /boot/grub2/grub.cfg, de modo que hemos definido un orden predeterminado adoptando un criterio de nombre/título.

Abra /etc/default/grub y asegúrese de que existe esta línea:

GRUB_DEFAULT=saved

Aplique el cambio a grub.cfg ejecutando:

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

Ahora una lista de todas las posibles entradas del menú

grep ^menuentry /boot/grub2/grub.cfg | cut -d "'" -f2

Ahora establezca el valor predeterminado deseado a la entrada del menú

grub2-set-default <menu entry title>

Compruebe la entrada del menú por defecto

grub2-editenv list
Nota
Hay otras formas más simples de establecer la entrada predeterminada, pero son propensas a errores si/cuando grub2-mkconfig es ejecutado nuevamente. Esto incluye configurar directamente el archivo predeterminado en /boot/grub2/grub.cfg o definir GRUB_DEFAULT o bien con un número o con un título de entrada en /etc/default/grub. Ninguno de estos métodos es recomendable.

Si comprende los riesgos involucrados y aún así desea modificar directamente el archivo /boot/grub2/grub.cfg, se debe proceder de la siguiente manera:

Edite /boot/grub2/grub.cfg, y modifique la línea

Este método no es el recomendado
Esto no sobrevivirá luego de realizar un grub2-mkconfig. Ni siquiera podría sobrevivir a una actualización del kernel.
set default="0" 

por

set default="5"

Encontrando el temido indicador de arranque de GRUB 2

Si no está configurado correctamente, GRUB 2 puede fallar al cargar y posteriormente encontrarse con un indicador de arranque. Para solucionar este problema, haga lo siguiente:

1. Listar las unidades que observa GRUB 2:

grub2> ls

2. El resultado de una tabla de particiones DOS /dev/sda con tres particiones debería ser algo parecido a esto:

(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

3. Mientras que el resultado de una tabla de particiones gpt /dev/sda con cuatro particiones sería similar a la siguiente:

(hd0) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1)

4. Con esta información ahora puede examinar cada partición de la unidad y localizar los archivos vmlinuz e initramfs:

ls (hd0,1)/

Esto mostrará una lista de los archivos en /dev/sda1. Si esta partición contiene /boot, la salida mostrará el nombre completo de vmlinuz e initramfs.

5. Conociendo la ubicación y el nombre completo de vmlinuz e initramfs ya puede arrancar el sistema.

5a. Defina su partición raíz:

grub> set root=(hd0,3)

5b. Defina el kernel que desea utilizar:

grub> linux (hd0,1)/vmlinuz-3.0.0-1.fc16.i686 root=/dev/sda3 rhgb quiet selinux=0 
# NOTE : add other kernel args if you have need of them
# NOTE : change the numbers to match your system

5c. Defina el archivo initrd a utilizar:

  
grub> initrd (hd0,1)/initramfs-3.0.0-1.fc16.i686.img
# NOTE : change the numbers to match your system

5d. Instruir a GRUB 2 para que arranque los archivos seleccionados:

grub> boot

6. Después del arranque, abra un terminal.

7. Ejecute el comando grub2-mkconfig para volver a crear el archivo grub.cfg que grub2 necesitó para arrancar su sistema:

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

8. Ejecute el comando grub2-install para instalar grub2 en el disco duro y hacer uso de su configuración:

grub2-install --boot-directory=/boot /dev/sda
# Note: your drive may have another device name. Check for it with mount command output.

Otros problemas de GRUB 2

Absent Floppy Disk (Disquetera ausente) : Algunos usuarios han informado que GRUB 2 puede fallar al instalarlo en el sector de arranque de una partición si el controlador de la disquetera del ordenador está activado en el BIOS sin que haya una unidad de disquetes presente. Una posible solución consiste en ejecutar (después de instalar el sistema operativo) desde el modo rescate:

grub2-install <target device> --no-floppy

Configuración de una contraseña con el modo de edición interactivo

Si desea proteger con contraseña en el modo de edición interactivo pero permitir el arranque sin contraseña aquí hay una manera de hacerlo (tomado del método proporcionado por el instalador anaconda):

Cree y edite /etc/grub.d/01_users y coloque lo siguiente en su interior:

set superusers="root"
password_pbkdf2 root GRUBPASSWORDHASH
export superusers

Tenga en cuenta la existencia del comando grub2-mkpasswd-pbkdf2 que es parte del paquete grub2-tools. Ejecute grub2-mkpasswd-pbkdf2 desde la línea de comandos, le pedirá una contraseña dos veces y luego generará un hash de la misma. Tomar ese dato de salida y sustituirlo por la palabra GRUBPASSWORDHASH en el archivo /etc/grub.d/01_users como en el ejemplo anterior.

«superusers» es mágico, y a partir de ese momento todo deberá estar protegido por contraseña excepto el arranque de las entradas predeterminadas.

Usando los modos gráficos antiguos en el gestor de arranque

El dispositivo terminal es elegido con GRUB_TERMINAL; cita adicional en http://www.gnu.org/software/grub/manual/grub.html#Simple-configuration

Los nombres válidos para la terminal de salida dependen de la plataforma, pero pueden incluir ‘console’ (consolas de PC BIOS y EFI), ‘serial’ (terminal serial), ‘gfxterm’ (modo de salida de gráficos), ‘ofconsole’ (consola de Open Firmware) o ‘vga_text’ (salida VGA de texto, útil sobre todo con Coreboot).

El valor predeterminado es utilizar la terminal de salida nativa de las plataformas.

El valor por defecto en Fedora es gfxterm y para obtener los modos de gráficos heredados necesita establecer en GRUB_TERMINAL la variable adecuada de la descripción de arriba en /etc/defaults/grub

Activar la consola serial en Grub

Para activar la consola Serial en grub añadir las siguientes entradas a /etc/default/grub

(Ajustar la tasa de baudios/paridad/bits/control de flujo para adaptarse a su entorno y cables)

GRUB_CMDLINE_LINUX='console=tty0 console=ttyS0,115200n8'
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

Y vuelva a generar grub

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

Para seguir leyendo

http://www.gnu.org/software/grub/manual/grub.html

http://fedoraproject.org/wiki/Features/Grub2

http://fedoraproject.org/wiki/Anaconda/Features/Grub2Migration