GRUB no se instala en la unidad donde tengo Windows

Hola, tengo 3 unidades NVMe en mi PC, en la principal de 2TB tengo instalado Windows, luego la segunda que uso como almacenamiento secundario y una tercera de 500GB donde tengo instalado Manjaro. Y claro, para arrancar manjaro siempre tenía que ir presionando F11 durante el arranque del equipo para acceder al menú de arranque de la BIOS y seleccionar la unidad donde está instalado Manjaro. El otro día probé a instalar GRUB manualmente en la unidad donde está Windows y simplemente no hace nada, Windows arranca directamente sin que aparezca el GRUB y en teoría instalé GRUB en la partición EFI de Windows.

¿Cómo puedo hacer esto? Gracias.

Una opción fácil sería hacer tú mismo el asado.

  • Así que arranca en manjaro a través de F11
  • Ajuste /etc/default/grub allí
  • Añade “GRUB_DISABLE_OS_PROBER=false” como una línea adicional
  • luego reconstruye el “grub.cfg” con “sudo update-grub”

Espero que DeepL haya traducido esto correctamente

original

Eine einfach Möglichkeit, wäre es das grub selber machen zu lassen.

  • Also über F11 in manjaro booten
  • Dort /etc/default/grub anzupassen
  • GRUB_DISABLE_OS_PROBER=false” als zusätzliche Zeile hinzufügen
  • dann mit “sudo update-grub” die “grub.cfg” neu erstellen

Ich hoffe google hat das richtig übersetzt

¿Cómo has instalado Grub manualmente? Si puede ser pon los comandos exactos que has usado.

Sobre la primera instalación de Manjaro/Grub, puedo pensar que instalaste en modo BIOS, porque dices que seleccionas “la unidad donde está Manjaro”. Si fuese arranque UEFI, lo que te aparece es el nombre de Manjaro y ya está.

Entiendo que todavía puedes entrar a tu Manjaro de la forma que lo hacías. Pon por aquí la salida de los comandos:

sudo fdisk -l
lsblk -f
sudo efibootmgr

No ha funcionado, tras hacer eso, obtuve la siguiente salida por consola:

Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-6.9-x86_64
Found initrd image: /boot/intel-ucode.img /boot/initramfs-6.9-x86_64.img
Found initrd fallback image: /boot/initramfs-6.9-x86_64-fallback.img
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Found Windows Boot Manager on /dev/nvme0n1p1@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
Root filesystem isn't btrfs
If you think an error has occurred, please file a bug report at "https://github.com/Antynea/grub-btrfs"
Found memtest86+ image: /boot/memtest86+/memtest.bin
/usr/bin/grub-probe: warning: unknown device type nvme2n1.
Found memtest86+ EFI image: /boot/memtest86+/memtest.efi
/usr/bin/grub-probe: warning: unknown device type nvme2n1.
done

Luego he reiniciado el PC, y no apareció el GRUB, directamente ha arrancado Windows.

Le pregunté a ChatGPT para hacerlo ya que no tenía ni idea de esto, me dijo poner dos comandos:

  • El primero: sudo update-grub
  • Y el segundo: sudo grub-install /dev/sda (que en mi caso era la unidad NVMe donde tengo instalado Windows, no funcionó).

FDISK:

sudo fdisk -l                                                    ✔ 
[sudo] password for sergio: 
Disk /dev/nvme1n1: 1,82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: Samsung SSD 980 PRO 2TB                 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 5AF5B71A-238A-421F-AEA6-AD004362B329

Device              Start        End    Sectors  Size Type
/dev/nvme1n1p1       2048     206847     204800  100M EFI System
/dev/nvme1n1p2     206848     239615      32768   16M Microsoft reserved
/dev/nvme1n1p3     239616 3905439743 3905200128  1,8T Microsoft basic data
/dev/nvme1n1p4 3905439744 3907026943    1587200  775M Windows recovery environme


Disk /dev/nvme2n1: 465,76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Samsung SSD 980 PRO 500GB               
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 8F7A6E2A-9D55-4371-A188-458330FA3BA6

Device             Start       End   Sectors   Size Type
/dev/nvme2n1p1      4096    618495    614400   300M EFI System
/dev/nvme2n1p2    618496 905000596 904382101 431,2G Linux filesystem
/dev/nvme2n1p3 905000597 976768064  71767468  34,2G Linux swap


Disk /dev/nvme0n1: 1,82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: CT2000P5SSD8                            
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A5ED5C70-FA99-4AB8-90B3-ED29908EC747

LSBLK:

lsblk -f                                                     INT ✘ 
NAME FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme1n1
│                                                                           
├─nvme1n1p1
│    vfat   FAT32       FCFD-8090                                           
├─nvme1n1p2
│                                                                           
├─nvme1n1p3
│    ntfs               22B2FFA0B2FF769F                                    
└─nvme1n1p4
     ntfs               628C5AEC8C5ABA6D                                    
nvme2n1
│                                                                           
├─nvme2n1p1
│    vfat   FAT32       9DAA-8D5C                             299,1M     0% /boot/efi
├─nvme2n1p2
│    ext4   1.0         4ea69ce9-7797-47e5-afaa-4c358a195ace  357,6G    10% /
└─nvme2n1p3
     swap   1     swap  f4a49b8c-0ecc-45e6-9b04-0a8c1ffc3e67                [SWAP]
nvme0n1
│                                                                           
└─nvme0n1p1
     ntfs               BAB26829B267E7F9

EFIBOOTMGR:

sudo efibootmgr                                                  ✔ 
BootCurrent: 0002
Timeout: 0 seconds
BootOrder: 0000,0002,0003
Boot0000* Windows Boot Manager	HD(1,GPT,82286738-a8af-4a43-bf88-6867e0fa2794,0x800,0x32000)/\EFI\Microsoft\Boot\bootmgfw.efi57494e444f5753000100000088000000780000004200430044004f0042004a004500430054003d007b00390064006500610038003600320063002d0035006300640064002d0034006500370030002d0061006300630031002d006600330032006200330034003400640034003700390035007d00000061000100000010000000040000007fff0400
Boot0002* Manjaro	HD(1,GPT,2870951e-ded8-4af0-9a50-db146144d28c,0x1000,0x96000)/\EFI\Manjaro\grubx64.efi
Boot0003* UEFI OS	HD(1,GPT,2870951e-ded8-4af0-9a50-db146144d28c,0x1000,0x96000)/\EFI\BOOT\BOOTX64.EFI0000424f

Gracias por tu respuesta, ¿me podrías decir como hacer esto?

Se ve que Manjaro está instalado en modo UEFI. Bien, porque no lo tenía claro. También se ve que está en el otro disco. Pero tu UEFI lo detecta, así que me imagino que así es como arrancas Manjaro.

Puedes instalar Grub en el EFI del primer disco (el de Windows), pero creo que por ahora lo primero que tienes que probar es si puedes cambiar el orden de arranque. Como ves en la salida de efibootmgr, está primero Windows y después Manjaro. La cosa sería ponerlo al revés. Puedes hacerlo desde la BIOS o puedes ejecutar el comando:

sudo efibootmgr --bootorder 2,0,3

Prueba con esto primero y después cuentas que pasó.

He puesto ese comando y no ha ocurrido nada, simplemente Windows sigue arrancando por defecto. He ido a la BIOS para intentar cambiar el orden de arranque y el problema es que solo aparece la unidad donde está instalada Windows, las demás no aparecen: https://i.imgur.com/OXLFxqo.jpeg

Pero eso sí, si durante el arranque presiono F11 y abro el menú de arranque, si que aparece la otra unidad donde está instalado Manjaro.

Algunas UEFI/BIOS no trabajan del todo bien con bootloaders que no sean Windows (o que no estén firmados por Microsoft). Ese es probablemente tu caso, porque MSI es conocida por eso mismo.

Pues ahora si, puedes intentar a instalar Grub en el primer disco. No tengo muchas esperanzas de que ayude, pero hay que probarlo.

# Desmontar la partición EFI/ESP actual
sudo umount /boot/efi

# Monta la partición EFI/ESP del primer disco
sudo mount /dev/nvme1n1p1 /boot/efi

# Hacer el cambio permanente modificando el /etc/fstab
# Busca la línea que empieza así:
# UUID=9DAA-8D5C      /boot/efi
# Y cambia el UUID a la partición del primer disco:
# UUID=FCFD-8090
# Este cambio lo puedes hacer en el editor que mejor te parezca y que te permita hacer cambios como root

# Instala Grub en la nueva EFI/ESP
sudo grub-install --bootloader-id=Manjaro --recheck

# Actualiza las configuraciones de arranque
sudo update-grub
# O si ese comando no funciona:
sudo grub-mkconfig -o /boot/grub/grub.cfg

Después reinicia y a ver qué pasa.

Tras modificar el archivo fstab y correr este comando, me da el siguiente error:

Installing for x86_64-efi platform.
grub-install: error: /boot/efi doesn't look like an EFI partition.

Raro. ¿Qué te muestra al hacer esto?

sudo ls -al /boot/efi
mount | grep efi
sudo ls -al /boot/efi
drwx------ 4 root root 1024 ene  1  1970  .
drwxr-xr-x 5 root root 4096 may 30 02:02  ..
drwx------ 4 root root 1024 may 27 13:35  EFI
drwx------ 2 root root 1024 may 27 13:40 'System Volume Information'

mount | grep efi                                             INT ✘ 
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
systemd-1 on /efi type autofs (rw,relatime,fd=59,pgrp=1,timeout=120,minproto=5,maxproto=5,direct,pipe_ino=23846)
/dev/nvme0n1p1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)
/dev/nvme2n1p1 on /efi type vfat (rw,nosuid,nodev,noexec,relatime,nosymfollow,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)

¿Has hecho cambios? Porque según el listado de particiones que habías puesto unos mensajes antes, /dev/nvme0n1p1 era una partición NTFS, pero ahora tiene un sistema de ficheros FAT y una estructura de archivos de una partición EFI/ESP.

También veo que tienes montado /dev/nvme2n1p1 como /efi, aunque me parece que está montado automáticamente.

¿Puedes aclarar esto?

¿Cómo va a ser FAT32 si es donde está instalado Windows que tiene 2TB de almacenamiento? No he cambiado nada.

Esta es mi distribución de unidades, como se puede ver, todas las unidades siguen siendo NTFS, excepto donde está Manjaro que es ext4.

A ver, en uno de tus mensajes tenías esto en la salida de lsblk:

(Es decir, es la partición de datos para Windows)

Después tenías esto para la salida de mount:

(nótese que el tipo de la partición es vfat)

Y el contenido era:

Así que por eso estoy extrañado. ¿Cambian los nombres de los discos las distintas veces que arrancas?

De todas formas el que yo te había pedido montar como /boot/efi es nvme1n1p1 que era la partición EFI/ESP del disco de Windows.

No, por defecto tienen el nombre que le pone Windows “Disco local”.

Y siempre son NTFS, ya que son de 2TB. No sé porque Linux lo reconoce como VFAT.

¿Entonces no hay forma de hacer que al encender el PC aparezca GRUB y de ahí pueda escoger si arrancar Manjaro o Windows? ¿Tendré que seguir accediendo a Manjaro como lo he hecho hasta ahora?

Prueba con este enlace, esta en ingles pero se puede traducir.
GRUB

1 Like