update-grub vs grub-install?

Algunos ejemplos encontrados en línea dicen que update-grub debe ejecutarse DESPUÉS de grub-install. Otros invierten el orden. ¿Cuál es la correcta?

Si tengo dos instalaciones de Linux (una en sda y otra en sdb), si ejecuto update-grub en la instalación de sda, colocará la instalación de sda en la parte superior del arranque. menú. Si ejecuto update-grub en la instalación de sdb, colocará la instalación de sdb en la parte superior del menú.

Suponiendo DEFAULT = 0, esto debería, teóricamente, permitirme seleccionar mi SO seleccionando el dispositivo de arranque en el BIOS. ¿»Grub-install / dev / sda» cambia el menú de arranque sda para que se corresponda con el último «update-grub», independientemente de si se ejecutó desde la versión sda o sdb de Linux?

Answer

update-grub, al menos en Debian y sus parientes como Ubuntu, es básicamente una envoltura de grub-mkconfig. Por lo tanto, crea / actualiza / regenera la configuración de GRUB, no el cargador de arranque en sí.

Lo que grub-install realmente hace depende de qué versión de GRUB que está ejecutando: ¿BIOS GRUB tradicional o UEFI GRUB?

Con el BIOS GRUB tradicional, grub-install escribirá (re) escribirá la parte del GRUB incrustado en el Master Boot Record y codificará en él el bloque de disco físico números de donde leer la siguiente parte de GRUB. También determinará desde qué partición se leerá el archivo de configuración de GRUB real (/boot/grub/grub.cfg). Un factor importante aquí es el archivo /boot/grub/device.map, que le dice a GRUB cómo la numeración de dispositivos de BIOS (y por lo tanto de GRUB) se asigna a los dispositivos de disco de Linux.

Con UEFI GRUB, la parte principal del cargador de arranque GRUB se ubicará como un archivo en la partición del sistema EFI, generalmente como /boot/efi/EFI/<name of distribution>/grubx64.efi o similar. Este nombre de ruta del cargador de arranque se almacena en la NVRAM del sistema (= el lugar donde se almacena la configuración del BIOS) en las variables de arranque UEFI. La parte principal de GRUB puede ser completamente autónoma (¡y debe serlo si Secure Boot está en uso!) O puede cargar funcionalidad adicional como módulos GRUB, generalmente desde el directorio /boot/grub de la distribución de Linux de la que es parte.

Las variables de arranque UEFI identificarán el disco que el sistema debe usar para buscar la partición del sistema EFI y el archivo del cargador de arranque dentro de él. Puede ver estas variables usted mismo, usando efibootmgr -v comando. El comando grub-install actualizará esas variables, a menos que uses la opción --no-nvram para especificar lo contrario.

Como resultado, con BIOS tradicional y UEFI, ejecutar grub-install puede actualizar su cargador de arranque para leer un archivo de configuración GRUB completamente diferente en un disco diferente, aunque los detalles de ese proceso serán completamente diferentes.

Con UEFI, puede cambiar la selección de su dispositivo de arranque desde el sistema operativo, con efibootmgr o grub-install. Pero grub-install es una exageración masiva para eso: si ambas instalaciones son UEFI y tienen sus propias particiones ESP separadas, tendrán sus propias variables de arranque UEFI y la selección entre ellas se puede hacer fácilmente con efibootmgr, o de hecho en la configuración de UEFI BIOS.

Con BIOS tradicional, es «un poco más complicado: querrá asegurarse de que cada instalación» /boot/grub/device.map identifica el disco de esa instalación específica como hd0 y el otro como hd1 Luego use grub-install para escribir solo el cargador de arranque en el disco propio de cada instalación; nunca al disco «opuesto». De esa forma, ambos discos serán completamente independientes y de arranque incluso si el otro disco se quita por completo. Puede agregar un elemento de menú en los archivos de configuración de cada GRUB que le permitirá iniciar la instalación «opuesta», si lo desea. O simplemente puede usar el BIOS para seleccionar el disco desde el que arrancar.

Lo que debe saber es que el selector de orden de arranque de los BIOS tradicionales normalmente funcionará haciendo que el disco seleccionado para arrancar sea el «primer» disco para las funciones del BIOS, por lo que GRUB «s hd0 siempre se referirá al» disco que está seleccionado actualmente para arrancar en BIOS «.

Entonces, si está actualmente arrancando desde /dev/sda (por lo que el BIOS dice que sda es hd0), y quieres un Elemento de menú de GRUB en ese disco para cambiar al menú de inicio de /dev/sdb «, usaría algo como:

menuentry "Switch to /dev/sdb" { # flip the disk mappings and reload configuration drivemap -s (hd0) (hd1) set root=<the identifier for sdb"s partition that contains grub.cfg> configfile /boot/grub/grub.cfg # or just /grub/grub.cfg is /boot is a separate partition } 

… y también en la configuración GRUB de / dev / sdb.

Comentarios

  • así que ejecute update-grub antes de grub-install (no es que deba marcar la diferencia, sino para UEFI) o al contrario?
  • grub-install instala las partes binarias de GRUB, update-grub produce solo el archivo de configuración. Si necesita reinstalar completamente su GRUB, yo ' diría que ejecute grub-install primero. En realidad, puede ejecutar update-grub como parte del trabajo; si no ' t, puede ejecutarlo usted mismo después.
  • " propia variable de arranque UEFI s " – > Entonces, si entendí correctamente en una configuración UEFI, ¿las variables de arranque UEFI en NVRAM son como una matriz que especifica el disco de arranque? ¿Qué sucede si falla un disco? ¿Se puede especificar un respaldo / valores múltiples de esta matriz? Además, si entendí, el usuario siempre puede omitir la var de arranque UEFI simplemente especificando manualmente el disco de arranque (efectivamente, ¿qué está haciendo la var de arranque UEFI)? Gracias.
  • @ninjagecko Su comprensión es correcta pero quizás incompleta. Las variables de arranque UEFI especifican no solo el UUID de la partición desde donde arrancar, sino también la ruta del archivo del cargador de arranque, un nombre legible por humanos y un campo de parámetro opcional. Y sí, puede especificar varios (conjuntos de) valores, especificar el orden para intentarlos e incluso decirle al sistema que inicie una opción específica fuera del orden normal solo por esta vez, luego reanude el orden normal. Todas estas son características estándar de la especificación UEFI; los autores del firmware pueden proporcionar aún más opciones si lo desean.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *