grub2 está cargando grub.cfg desde la unidad incorrecta durante el arranque después de mover el sistema operativo a una unidad diferente

grub2 está cargando grub.cfg desde la unidad incorrecta durante el arranque después de mover el sistema operativo a una unidad diferente

Mi computadora portátil tenía originalmente un SSD M.2 de 128 GB y un disco duro de 1 TB. El sistema está configurado como arranque dual con Windows. La partición /boot/efi está en /dev/nvme0m1p1 y la partición raíz original está en /dev/sda3.

Comprimí la imagen del nvme0n1 original y cambié el nvme0n1 por un ssd M.2 de 1 TB. y cloné la imagen original en el nuevo ssd. El resultado fue que pude arrancar en Windows o en la versión /dev/sd3 de ubuntu una vez que se completó la clonación.

Luego creé una nueva partición ext4, nvme0n1p6 y cloné la partición /dev/sda3. Olvidé cambiar la partición UIDD después de la clonación y la primera vez que ejecuté update-grub2. Posteriormente cambié la partición UIDD usando gparted, volví a ejecutar update-grub2 y verifiqué que había encontrado la imagen en la nueva UIDD para /dev/nvme0n1p6.

Después de pasar 6 horas descubriendo que había insertado un espacio en una declaración UIDD= en el /etc/fstab de la nueva imagen, pude iniciar esa nueva imagen (mis habilidades de revisión pueden mejorar). Una vez que se cargó esa imagen, ejecuté update-grub2 nuevamente para mover la selección del nuevo ubuntu a la parte superior y al valor predeterminado en el nuevo grub.cfg.

Finalmente, al problema: después de reiniciar, el menú de grub que se muestra sigue siendo el grub.cfg de la carpeta /dev/sda3/boot/grub original.

copiar el grub.cfg generado para /nvme0n1p6 a /sda3 permite que el nuevo grub.cfg se muestre en arranques posteriores.

Cambiar el nombre del archivo grub.cfg en /sda3 hace que grub se detenga en la línea de comando al reiniciar. Salir de la línea de comando hace que se cargue el sistema operativo Windows. Puedo corregir el problema con una imagen USB en vivo que me permite restaurar un grub.cfg válido en /sda3.

Sospecho que el comando update-grub no es el único comando que necesito ejecutar. Supongo que las imágenes almacenadas en /nvme0n1p1 deben actualizarse. ¿Esto se logra ejecutando una instalación de grub de algún tipo?

Respuesta1

Descargo de responsabilidad: puede que esté totalmente equivocado.

Según su información, parece que tiene una instalación de Windows y una instalación de Ubuntu en su disco duro ( /dev/sda3). Llamemos H a esta instalación del disco duro. Ahora, necesitaba mover su instalación al SSD y, por lo tanto, creó una nueva partición SSD y clonó la instalación del disco duro en esa partición SSD (preferiría hacer una instalación nueva, pero eso está fuera de tema de su pregunta). Llamemos a esta instalación SSD S.

El problema que yo sepa es que no instaló grub en absoluto después de completar la instalación de S. Por lo tanto, el grub instalado en su sistema todavía pertenece a la instalación H [1]. Por lo tanto, seguiría usando el grub.cfgpresente en la instalación H.

Para que grub use grub.cfgdesde su instalación S, deberá instalar grub desde S en la partición EFI.

Inicie la instalación S y ejecute:

$ sudo grub-install dummy
$ sudo update-grub

Avíseme si entendí mal su escenario o si enfrenta errores con los comandos.


Referencias:
¿Cómo encuentra el cargador grub EFI el boot.cfg correcto?

Respuesta2

Ahora que tengo Ubuntu ejecutándose desde el nuevo SSD M.2, revisaré el método que utilicé para reemplazar un SSD de 128 GB que contiene un cargador de arranque dual instalado con grub en nvme0n1p1 con un SSD de 1 TB en una computadora portátil que tiene un M.2. puerto. Para mayor claridad, la mayor parte de Windows 10 reside en varias particiones de nvme0 y ubuntu originalmente residía en la partición del disco duro en sda3. Cuando se inicia, nvme0n1p1 se monta en /boot/efi.

  1. Crear imagen de nvme0n1 a. Personalmente, no tomé ninguna medida para reducir las particiones con el fin de reducir el tamaño de la imagen. Si esto se considera necesario, otras personas han brindado orientación sobre cómo hacerlo.

    b. Escriba la imagen en otra unidad, ya sea interna o externa. Solía:

    dd if=/dev/nmve0n1 | gzip -c > pathToOtherDeviceFolder/nvme0n1.img

    La -copción hace que gzip escriba en la salida estándar que luego se dirige al archivo.

  2. Pruebe el arranque desde una unidad USB que contenga una imagen en vivo, ubuntu live o gparted live. Tuve problemas más tarde porque no probé la imagen en vivo con los monitores externos que uso normalmente con la computadora portátil desconectada de la computadora portátil. Me tomó un par de días intentar seguir los siguientes pasos sin ninguna pantalla externa conectada, ya que era la ausencia de la pantalla externa (o Ethernet) lo que impedía que la unidad USB en vivo se iniciara en lugar del resultado de los siguientes pasos. No recuerdo haber conectado Ethernet para que el arranque fuera exitoso, pero podría hacerlo junto con las pantallas externas. En cualquier caso, existe una dependencia de las imágenes en vivo que no entiendo, pero que podría solucionar. Una vez iniciado, asegúrese de poder montar la unidad que contiene la imagen que desea mover.

  3. Apague y reemplace el SSD M.2 original por uno nuevo.

  4. Mover imagen al nuevo nvme0n1

    a. Arranque desde un disco USB en vivo. (Ya lo probaste)

    b. Monte la unidad que contiene la imagen que desea mover. (Nuevamente, probado)

    C. mueva la imagen al nuevo nvme0n1. Solía:

    gunzip -c pathToOtherDeviceFolder/nvme0n1.img | dd of=/dev/nvme0n1

    Nuevamente, gunzip escribe en stdout, que se canaliza a dd para escribir en el nuevo dispositivo.

  5. Mueva ubuntu a una nueva partición en el nuevo nvme0n1. Aquí elegí reiniciar con la imagen original de ubuntu en sda3. Esto no es ningún problema porque el nuevo nvme0n1 es un clon del original. No conozco ninguna razón por la que no se puedan seguir estos pasos mientras se sigue operando en el entorno USB en vivo, aunque no tengo experiencia en hacerlo.

    a. cree una nueva partición ext4 en nvme0n1 usando gparted u otra herramienta. Me referiré a esta partición como nvme0n1p6 en el futuro.

    b. clonar la imagen de ubuntu en /dev/sda3 (en mi caso) en /dev/nvme0n1p6. Solía: dd if=/dev/sda3 of=/dev/nvme0n1p6

    C. después de la clonación, use gparted u otra herramienta para cambiar la partición UIDD de nvme0n1p6 a una UIDD única.

  6. Prepare nuevo en nvme0n1p6 para su funcionamiento.

    a. monte /dev/nvme0n1p6. Usé /mnt como punto de montaje.

    b. modifique /etc/fstab para montar el UIDD para nvme0n1p6 como /. Tenga en cuenta que nvme0n1p1 aún debe montarse como /boot/efi. Asegúrese de que la entrada modificada tenga el formato adecuado. Un espacio extra después UIDD=me costó varias horas más preguntándome qué hice mal.

    C. nvme0n1p6 se puede desmontar en este momento, pero creo que omití este paso.

  7. Si aún se ejecuta desde un disco USB en vivo, reinicie a la imagen original de Ubuntu (la mía está en /dev/sda3)

  8. actualice las opciones del menú de grub:

sudo update-grub2

Observe que se encuentran y agregan la imagen original, la imagen de Windows y la nueva imagen de Ubuntu en nvme0n1p6.

  1. reinicie y mientras está en el menú de inicio de grub seleccione la nueva imagen de ubuntu.

  2. Una vez en la nueva imagen ejecute:

    a. sudo grub-install Esto modifica los archivos grub en /boot/efi (/dev/nvme0n101) para mirar /dev/nvme0n1p6/boot/grub en lugar de esa ubicación en sda3 para el menú de grub, grub.cfg.

    b. `sudo update-grub' Reemplazará el /boot/grub/grub.cfg clonado con un nuevo archivo que coloca la nueva imagen en la parte superior y de forma predeterminada y con la imagen original en sda3 como una selección alternativa.

Ahora debería poder iniciar cualquiera de las tres imágenes. Tenga en cuenta que hasta que grub-installse ejecute en la nueva imagen, la imagen original no se podrá eliminar de la máquina ya que grub no podrá encontrar su archivo de configuración de menú.

Espero no haber omitido ningún paso ni haberlo recordado mal y que esto funcione para usted.

información relacionada