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.
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 ejecutegrub-install
primero. En realidad, puede ejecutarupdate-grub
como parte del trabajo; si no ' t, puede ejecutarlo usted mismo después.