Solución:
Convenio de denominación:
-
GRUB (parte de él) permanece en el MBR.
-
GRUB (el resto) son varios archivos que se cargan, desde
/boot/grub
(por ejemplo: esa bonita imagen que aparece como fondo en GRUB no se almacena en el MBR)
Notas:
-
La respuesta es considerar una configuración de MBR, GRUB se puede utilizar en otras configuraciones.
-
En una configuración de EFI, las cosas se complican, se puede usar GRUB, pero también puede serlo el kernel como su propio stub de EFI.
GRUB (parte de él) está instalado en el MBR. Los MBR son los primeros 512 bytes de un disco. El MBR también es utilizado por la tabla de particiones del disco, por lo tanto, GRUB en sí tiene algo menos de espacio que los 512 bytes.
El GRUB (parte de él) dentro del MBR carga un GRUB más completo (el resto) de otra parte del disco, que se define durante la instalación de GRUB en el MBR (grub-install
). Dado que el MBR GRUB necesita encontrar su contraparte en el disco, que normalmente reside en /boot
, la partición donde reside el GRUB principal no puede estar demasiado lejos de la tabla de particiones (a menudo 512MB
pero puede variar).
Es muy útil tener /boot
como su propia partición, desde entonces GRUB para todo el disco se puede administrar desde allí.
Qué significa:
-
GRUB en MBR solo puede cargar un GRUB (el resto) desde el disco.
-
Ese GRUB específico (el resto) en el disco debe configurarse para encontrar todos los sistemas operativos en la máquina.
El comando grub-mkconfig -o /boot/grub/grub.cfg
carreras os-prober
(si puede encontrarlo) que escanea todas las particiones y produce un grub.cfg
apuntando a todos los sistemas operativos.
Por lo tanto, si tiene varias particiones con /boot
(o los equivalentes de MS Windows, no los conozco pero os-prober
sabe) el os-prober
los encontrará y creará grub.cfg
respectivamente. Corriendo grub-install
instalar un GRUB (parte de él) en el MBR que apunte al GRUB del sistema operativo actual con el actual grub.cfg
.
Qué significa esto:
-
Solo necesita un único GRUB para todo el sistema.
-
Puede tener diferentes GRUB en diferentes discos (ya que tienen distintos MBR) pero eso solo tiene sentido si planea quitar el disco.
-
Puede administrar el arranque de todos los sistemas operativos desde una sola instalación de GRUB.
-
En un solo disco siempre correrás
grub-install
desde un solo sistema operativo! Eso es importante, de lo contrario, seguirá sobrescribiendo su configuración.
Solo para aclarar: estás usando grub2
, ¿correcto?
En caso de que Grub2 esté instalado en su propia partición de arranque, no necesita cambiar nada. Cuando no lo es (lo que sería realmente extraño), entonces técnicamente podría retener el grub.cfg
, y si tu distribución lo tiene, también /etc/grub.d
.
/boot
Sin embargo, debería ser su propia partición. Si tu corres mount
y ver algo como esto:
/dev/sda1 on /boot type ext4 (rw,relatime,seclabel,stripe=4,data=ordered)
Tiene Grub2 instalado en su propia partición, como debería ser. Normalmente, al instalar una nueva distribución, el asistente generalmente lo guiará a través del proceso de instalación e incluso averiguará qué particiones contienen qué sistemas operativos, si corresponde. El proceso en Arch es un poco más tedioso pero está muy bien documentado.
En caso de que ocurra algo horrible
Descargue GParted, colóquelo en una memoria USB, arranque desde él y monte el /boot
dividir.
Luego, simplemente ejecute como root (o con sudo
):
grub-mkconfig -o /boot/grub/grub.cfg
Grub2 debería poder detectar automáticamente sus particiones y actuar en consecuencia.
(En este punto, no estoy seguro de si las particiones deben estar todas montadas para que Grub2 detecte los sistemas operativos en ellas)
Si intentó instalar Windows mientras tanto, es posible que Windows haya sobrescrito el cargador de arranque. Para solucionarlo, simplemente ejecute como root (o con sudo
):
grub-install /dev/sdX
dónde /dev/sdX
es la unidad donde reside su partición de arranque.
Un poco de explicación:
Grub2 es un cargador de arranque Stage-2. Lo que significa que no es exactamente un sistema operativo, pero es mucho más complejo que un simple cargador en cadena, que cabría en los primeros 446 bytes de su partición primaria (el resto del primer sector es la tabla de particiones, banderas, etc.).
El MBR contiene solo el código para ejecutar el código Grub2 que reside en su /boot
dividir. Grub2 luego se carga en cadena en otra partición (para arrancar Windows, por ejemplo, ya que instala su propio cargador de arranque), pero también puede ejecutar código (cosas como memtest
), o acceder y ejecutar una imagen de módulo y kernel (vmlinuz
).
Lo que es importante tener en cuenta es que, en ambos casos, Grub2 se descarga de la memoria una vez que un kernel comienza a ejecutarse o se ha cargado otra partición en cadena.
Grub no está vinculado a un sistema operativo en particular. Puede residir en su partición privada, aunque normalmente se instala junto con el sistema de archivos principal. Pero para que pueda arrancar su (s) sistema (s), necesita conocerlos. Por lo tanto, debe actualizar Grub después de cualquier cambio importante en los sistemas presentes en su máquina, como un nuevo sistema operativo instalado o una actualización del kernel. Si elimina el único Grub que existe, no iniciará su (s) sistema (s). Puede haber muchos Grubs en una máquina, pero solo uno es principal o activo. Aparte de Grub, hay otros cargadores de arranque que se pueden usar (en lugar de Grub). Windows tiene su propio cargador de arranque, que se puede configurar como el principal para toda la máquina.