Grub2 non vede Windows 11

Di nuovo salve, continuo ad avere problemi con grub.
Ho installato Fedora sul mio desktop: su NVME0 ho Win11 e su NVME1 ho installato Fedora39 (manca l’etichetta facoltativa sennò la selezionavo).
Creo le partizioni manualmente per essere sicuro che ci siano: i percorsi adatti per flatpak (/var/lib/flatpak), /boot su ext4, /boot/efi come Efi filesystem, / e home con i sottovolumi @ e @home (per poter usare Timeshift liberamente). Quando arrivo a scrivere le partizioni, Fedora mi impone anche la partizione Bios Boot. Faccio anche quella (tutte le partizioni su NVME1 dove ho Fedora) e procedo all’installazione. All’avvio parte in automatico Fedora. Riavvio e cerco di accedere a Grub, ma anche in questo caso, GRUB2 vede solo Fedora e non Windows. Da Bios, se seleziono il Windows Boot Manager, Win11 parte, ma ovviamente non mi mostra Fedora.
In breve, Fedora non vede il boot di Windows e viceversa. Per poter avviare l’uno o l’altro, devo selezionare la giusta partizione dal boot del bios.

Non mi era successo mai con altre distro, come per esempio Mint.

Dimenticavo. nemmeno “sudo os-prober” vede niente.

Consigli?

Purtroppo l’unico modo per far rilevare il bootloader di Windows a Fedora è quello di utilizzare per entrambe i sistemi la stessa partizione EFI, dovresti quindi montare la partizione EFI presente sull’SSD NVME0 (quello dove è installato Windows) sul punto di mount /boot/efi in Fedora.

È necessario però conoscere i percorsi delle partizioni EFI (ad esempio nel mio caso è /dev/sda2). Puoi ricorrere al seguente comando per visualizzare la struttura delle partizioni presente sui dischi:
sudo fdisk -l
di solito le partizioni EFI sono riconoscibili dalla dicitura EFI System

Serve poi conoscere il loro UUID, per farlo puoi utilizzare il comando:
sudo blkid /dev/sda2

Potresti anche utilizzare un programma ad interfaccia grafica come GParted per reperire queste informazioni.

In seguito dovrai:

  • Smontare la partizione EFI che stai utilizzando attualmente:
    sudo umount /dev/sdb2

  • Montare la partizione EFI presente sull’SSD dove è installato Windows sul punto di mount /boot/efi
    sudo mount /dev/sda2 /boot/efi

Dopo questo passaggio potresti verificare che il sistema veda correttamente la partizione EFI di Windows utilizzando il comando
sudo os-prober

Se il sistema rileva correttamente il bootloader di Windows, il comado dovrebbe restituirti qualcosa simile a quanto segue
/dev/sda2@/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi

A questo punto puoi assegnare il punto di mount in via definitiva modificando l’UUID della partizione sul file /etc/fstab
sudo nano /etc/fstab

Ovviamente dovrai sostituire solo il valore dell’UUID con quello corretto appartenente alla partizione EFI di Windows, lasciando il resto sostanzialmente invariato.
UUID=XXXX-XXXX /boot/efi vfat umask=0077,shortname=winnt 0 2

In seguito dovrai reinstallare GRUB con il comando
sudo dnf reinstall grub2-efi grub2-efi-modules shim

oppure, nel caso in cui ti vengano restituiti errori da questo comando, puoi provare con il seguente:
sud dnf install grub2-efi grub2-efi-modules shim

Infine non ti resta che aggiornare la configurazione di GRUB:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

È importante verificare con attenzione i percorsi associati alle partizioni ed utilizzare quelli esatti, così come gli UUID.

Ciao,
innanzitutto grazie per avermi risposto.
La risposta rilasciata da sudo fdisk -l è:

Device             Start       End   Sectors   Size Type
/dev/nvme0n1p1      2048    206847    204800   100M EFI System
/dev/nvme0n1p2    206848    239615     32768    16M Microsoft reserved
/dev/nvme0n1p3    239616 498857519 498617904 237,8G Microsoft basic data
/dev/nvme0n1p4 498857984 500113407   1255424   613M Windows recovery environment


Disk /dev/nvme1n1: 465,76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: KINGSTON SNV2S500G                      
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: A4FDD609-1E99-4C29-A86B-2563911B538C

Device           Start       End   Sectors   Size Type
/dev/nvme1n1p1    2048      6143      4096     2M BIOS boot
/dev/nvme1n1p2    6144   1079295   1073152   524M Linux filesystem
/dev/nvme1n1p3 1079296   2144255   1064960   520M EFI System
/dev/nvme1n1p4 2144256 976764927 974620672 464,7G Linux filesystem


Disk /dev/mapper/luks-82e90c92-fded-4742-b662-61b325b4269e: 464,72 GiB, 498989006848 bytes, 974587904 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/zram0: 8 GiB, 8589934592 bytes, 2097152 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Ho smontato la partizione EFI di fedora con il comando sudo umount /dev/nvme1n1p3 e ho montato la partizione efi di Windows con sudo mount /dev/nvme0n1p1.

Infine ho lanciato il comando sudo os-prober ma non mi ha rilasciato nessuna info, di conseguenza continua a non rilevare Windows 11.

Non rilevandola non posso continuare con la modifica di FSTAB e dell’aggiornamento della configurazione di GRUB.

La cosa assurda è che Windows se seleziono il suo boot da BIOS, parte senza problemi.

Nel comando di mount dovresti specificare anche il percorso dove montare la partizione… nel tuo caso il comando corretto da utilizzare sarebbe:
sudo mount /dev/nvme0n1p1 /boot/efi

In seguito prova a verificare di nuovo se os-prober rileva correttamente il bootloader di Windows

Sì, scusa, mi ero dimenticato di trascriverlo, ma sì, avevo scritto anche /boot/EFI.

Giusto per non aver dubbi, magari potresti fare una prova a ripetere l’intera procedura, smontando la partizione EFI di Fedora e rimontanto la partizione EFI di Windows sul percorso /boot/efi e controllare se il punto di mount è stato montato correttamente con il comando:

lsblk

almeno ti renderesti conto se il punto di mount è stato assegnato correttamente.

Ciao, ti posto di seguito fin dove sono arrivato:

Disk /dev/nvme0n1: 238,47 GiB, 256060514304 bytes, 500118192 sectors
Disk model: HUANANZHI SSD 256G                      
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: FA32C9F0-2194-44A9-8790-44C24460F202

Device             Start       End   Sectors   Size Type
/dev/nvme0n1p1      2048    206847    204800   100M EFI System
/dev/nvme0n1p2    206848    239615     32768    16M Microsoft reserved
/dev/nvme0n1p3    239616 498857519 498617904 237,8G Microsoft basic data
/dev/nvme0n1p4 498857984 500113407   1255424   613M Windows recovery environment


Disk /dev/nvme1n1: 465,76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: KINGSTON SNV2S500G                      
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: A4FDD609-1E99-4C29-A86B-2563911B538C

Device           Start       End   Sectors   Size Type
/dev/nvme1n1p1    2048      6143      4096     2M BIOS boot
/dev/nvme1n1p2    6144   1079295   1073152   524M Linux filesystem
/dev/nvme1n1p3 1079296   2144255   1064960   520M EFI System
/dev/nvme1n1p4 2144256 976764927 974620672 464,7G Linux filesystem


Disk /dev/mapper/luks-82e90c92-fded-4742-b662-61b325b4269e: 464,72 GiB, 498989006848 bytes, 974587904 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/zram0: 8 GiB, 8589934592 bytes, 2097152 sectors
Units: sectors of 1 * 4096 = 4096 bytes
Sector size (logical/physical): 4096 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
wolpiro@localhost-live:~$ sudo umount /dev/nvme1n1p3
wolpiro@localhost-live:~$ sudo mount /dev/nvme0n1p1 /boot/efi
wolpiro@localhost-live:~$ sudo os-prober
/dev/mapper/luks-82e90c92-fded-4742-b662-61b325b4269e:Fedora Linux 39 (KDE Plasma):Fedora:linux:btrfs:UUID=ea1b5f3c-3058-4e83-9aee-de55d158aa3e:subvol=timeshift-btrfs/snapshots/2023-12-19_15-10-25/@
wolpiro@localhost-live:~$ lsblk
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sda                                             8:0    0 931,5G  0 disk  
└─sda1                                          8:1    0 931,5G  0 part  /media/wolpiro
sdb                                             8:16   0 465,8G  0 disk  
└─sdb1                                          8:17   0 465,8G  0 part  
zram0                                         252:0    0     8G  0 disk  [SWAP]
nvme0n1                                       259:0    0 238,5G  0 disk  
├─nvme0n1p1                                   259:1    0   100M  0 part  /boot/efi
├─nvme0n1p2                                   259:2    0    16M  0 part  
├─nvme0n1p3                                   259:3    0 237,8G  0 part  
└─nvme0n1p4                                   259:4    0   613M  0 part  
nvme1n1                                       259:5    0 465,8G  0 disk  
├─nvme1n1p1                                   259:6    0     2M  0 part  
├─nvme1n1p2                                   259:7    0   524M  0 part  /boot
├─nvme1n1p3                                   259:8    0   520M  0 part  
└─nvme1n1p4                                   259:9    0 464,7G  0 part  
  └─luks-82e90c92-fded-4742-b662-61b325b4269e 253:0    0 464,7G  0 crypt /var/tmp
                                                                         /var/log
                                                                         /var/lib/flatpak
                                                                         /var/cache
                                                                         /home
                                                                         /

Ho continuato con il resto delle tue istruzioni, modificando fstab con lo UUID ricavato da blkid, reinstallato grub e rifatto la sua configurazione con grub2-mkconfig, riavviato il pc e parte fedora.

sudo os-prober continua a mostrarmi solo Fedora…

La partizione è montata sul punto di mount corretto, os-prober non dovrebbe aver problemi a rilevare il bootloader di Windows… non credo che possa trattarsi di un problema che riguarda os-prober, anche se a questo punto non mi è del tutto chiara la situazione,

os-prober tra l’altro rileva come sistema esterno anche la configurazione presente sullo snapshot di btrfs

A questo punto prova a crearti o a modificare un file di configurazione per aggiungere il bootloader di Windows a grub manualmente:
sudo nano /etc/grub.d/40_custom

aggiungendo al file quanto segue:

menuentry 'Windows 11' --class windows --class os $menuentry_id_option 'osprober-efi-XXXX-XXXX' {
        insmod part_gpt
        insmod fat
        set root='hd0,gpt1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt1  XXXX-XXXX
        else
          search --no-floppy --fs-uuid --set=root XXXX-XXXX
        fi
        chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

dovresti solo sostituire le XXXX-XXXX con l’UUID della partizione EFI (blkid /dev/nvme0n1p1)

Una volta salvato il file dovrai aggiornare grub:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Ciao, ho un problema:
se scrivo sudo blkid /dev/nvme0n1p1 il risultato che ottengo è:

/dev/nvme0n1p1: PARTUUID=“7d506f8f-daee-439e-aabc-709f6d5245a5”
Non vedo lo UUID di 8 cifre.

In alternativa, ci sarebbe la possibilità di risolvere il problema installando un altro bootloader? ne conosci qualcuno valido oltre a GRUB?

L’unico bootloader alternativo a GRUB è LILO, ma non è presente sui repository di Fedora in quanto, al contrario di GRUB, il progetto non è più mantenuto da nessuno da diversi anni.

Il problema comunque non è il bootloader, non direttamente almeno.

Prova ad eseguire il comando:
lsblk -f
per vedere se riesci ad ottenere qualche info aggiuntiva o, in alternativa, potresti provare con il comando:
ls -l /dev/disk/by-uuid/
o, come già detto, potresti usare un tool ad interfaccia grafica come GParted oppure gnome-disk-utility che dovrebbe essere già presente tra i programmi… prova a cercare Dischi tra i programmi installati.

Ecco il resoconto:

NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
└─sda1 ntfs Wolpiro 4842AEE242AED3CA 435,2G 53% /media/wolpiro
sdb
└─sdb1 ntfs Baby-HDD 0EF225FAF225E725
zram0 [SWAP]
nvme0n1
├─nvme0n1p1 vfat FAT32 105B-0DAF 53,3M 44% /boot/efi
├─nvme0n1p2
├─nvme0n1p3 ntfs Win11 604860C048609696
└─nvme0n1p4 ntfs 5C38E4C638E49FEE
nvme1n1
├─nvme1n1p1
├─nvme1n1p2 ext4 1.0 04df3688-9228-4cc3-80da-22f7ce4e84be 174,9M 58% /boot
├─nvme1n1p3 vfat FAT32 31F0-E555 501,6M 3% /efi
└─nvme1n1p4 crypto_LUKS 2 82e90c92-fded-4742-b662-61b325b4269e
└─luks-82e90c92-fded-4742-b662-61b325b4269e btrfs fedora ea1b5f3c-3058-4e83-9aee-de55d158aa3e 434,8G 6% /var/tmp
/var/log
/var/lib/flatpak
/home
/var/cache
/

ls -l /dev/disk/by-uuid/
totale 0
lrwxrwxrwx. 1 root root 15 20 dic 06.37 04df3688-9228-4cc3-80da-22f7ce4e84be -> …/…/nvme1n1p2
lrwxrwxrwx. 1 root root 10 20 dic 06.37 0EF225FAF225E725 -> …/…/sdb1
lrwxrwxrwx. 1 root root 15 20 dic 06.37 105B-0DAF -> …/…/nvme0n1p1
lrwxrwxrwx. 1 root root 15 20 dic 06.37 31F0-E555 -> …/…/nvme1n1p3
lrwxrwxrwx. 1 root root 10 20 dic 06.37 4842AEE242AED3CA -> …/…/sda1
lrwxrwxrwx. 1 root root 15 20 dic 06.37 5C38E4C638E49FEE -> …/…/nvme0n1p4
lrwxrwxrwx. 1 root root 15 20 dic 06.37 604860C048609696 -> …/…/nvme0n1p3
lrwxrwxrwx. 1 root root 15 20 dic 06.37 82e90c92-fded-4742-b662-61b325b4269e -> …/…/nvme1n1p4
lrwxrwxrwx. 1 root root 10 20 dic 2023 ea1b5f3c-3058-4e83-9aee-de55d158aa3e -> …/…/dm-0

Di conseguenza ho modificato il file custom con questo comando: sudo nano /etc/grub.d/40_custom

E al suo interno ho scritto questo:
#!/usr/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the ‘exec tail’ line above.
menuentry ‘Windows 11’ --class windows --class os $menuentry_id_option ‘osprober-efi-105B-0DAF’ {
insmod part_gpt
insmod fat
set root=‘hd0,gpt1’
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt1 105B-0DAF
else
search --no-floppy --fs-uuid --set=root 105B-0DAF
fi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

Ma ancora non mi offre la possibilità di avviare Windows.

Ma non è che per caso avrei dovuto inserire lo UUID di nvme0n1p3 che è dove si trova il Sistema Operativo Win11?

chainloader /EFI/Microsoft/Boot/bootmgfw.efi
si sta facendo il chailoader sulla partizione EFI, quindi l’UUID da specificare è quello della partizione nvme0n1p1

l’unico parametro che potrebbe non essere corretto e non ti consente di avviare Windows è hd0_gpt1

dovresti cercare di capire il numero corretto dell’ssd, essendo presenti altri 2 dischi (sda ed sdb) probabilmente il parametro corretto da utilizzare potrebbe essere hd2_gpt1

Buongiorno, ho provato a mettere hd2 al posto di hd2 e a lasciare ahci0, poi ho riconfigurato il GRUB col solito comando mkconfig, ma niente di nuovo.

Per amore della completezza posto anche il mio GRUB:

GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=menu
GRUB_DISTRIBUTOR="$(sed ‘s, release .*$,g’ /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT=“console”
GRUB_CMDLINE_LINUX=“rd.luks.uuid=luks-82e90c92-fded-4742-b662-61b325b4269e rhgb quiet”
GRUB_DISABLE_RECOVERY=“true”
GRUB_ENABLE_BLSCFG=true
GRUB_DISABLE_OS_PROBER=false

Vedi nulla di strano?

sul file di configurazione di GRUB non mi sembra ci sia nulla di strano… comunque dovresti adeguare anche il parametro ahci a quello corrispondente all’ssd

alla fine devi solo riuscire a capire il valore giusto, ma è ovvio che devi assegnare i parametri corretti a tutti i seguenti valori:

set-root='hd2,gpt1'

--hint-bios=hd2,gpt1

--hint-efi=hd2,gpt1

--hint-baremetal=ahci2,gpt1

sto provando solo ad utilizzare dei dati di esempio partendo dalla configurazione che utilizzo io… ovviamente nel tuo caso devi fare qualche tentativo per trovare il parametro corretto avendo presente che con hd e con ahci si deve specificare il numero del disco
0 per l’hd o ssd primario
1 per quello secondario
e così via.

stesso discorso vale per gpt che indica il numero della partizione su un hd o ssd che usa una tabella delle partizioni gpt
1 per la partizione primaria,
2 per la seconda partizione
e così via