GRUB2 mostra Windows 7 o l'ambiente di ripristino di Windows anziché Windows 10


8

Questa è una domanda e risposta che ho scoperto di recente, quindi ho pubblicato la risposta di seguito.

Dopo aver installato Windows 10, ogni volta che ottengo un aggiornamento del kernel o eseguo update-grub2lo mostra sempre Windows 7o Windows Recovery Environmentinvece di Windows 10. Come posso risolvere questo problema in modo permanente?


Questi cambiamenti esistono già in (my Mint 19.2) / usr / lib / os-probes / montati / 20microsoft, ma restituisce comunque "Windows Vista". Si noti che, quando il sistema a doppio avvio era Windows 7, restituiva il valore corretto, quindi sembra che sia la fonte delle informazioni mancanti.
cdg

@cdg Questo dovrebbe essere richiesto su Linux e Unix poiché questo sito è solo per i gusti ufficiali di Ubuntu . Inoltre, dovresti presentare una segnalazione di bug con Mint Development se hai già tutto questo perché potrebbero non rilevarlo correttamente.
Terrance

Risposte:


10

Aggiornamento: ho appena eseguito un'installazione pulita di Xubuntu 14.04 e le voci del file elencate di seguito erano già presenti. Sembra che il team di GRUB abbia ora incluso l'aggiornamento. Lascerò questo qui per chiunque possa imbattersi in questo senza l'aggiornamento sul loro sistema ancora.


Aggiornamento n. 2: se si crea un LiveUSB Ubuntu 14.04 con almeno un file persistente da 1 GB, questo percorso del file è lo stesso e il file persistente consentirà alle modifiche apportate di rimanere. Questo file deve essere modificato solo dopo l'avvio del sistema nell'unità USB Try Ubuntuall'avvio.


Il motivo per cui mostra ancora Windows 7o Windows Recovery Environmentinvece Windows 10è che il file /usr/lib/os-probes/mounted/20microsoftnon contiene l'etichetta per Windows 10, quindi durante il os-proberrilevamento del sistema operativo torna a Windows 7o Windows Recovery Environment.

Per correggere ciò, è necessario apportare le seguenti modifiche al seguente file (ho intenzione di mettere gedit come editor, ma utilizzare ciò che si desidera):

sudo gedit /usr/lib/os-probes/mounted/20microsoft

NOTA: dovresti sempre fare un backup di un file prima di modificarlo!

if item_in_dir -q bootmgr "$2"; then
        # there might be different boot directories in different case as:
        # boot Boot BOOT
        for boot in $(item_in_dir boot "$2"); do
                bcd=$(item_in_dir bcd "$2/$boot")
                if [ -n "$bcd" ]; then
                        if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; then
                                long="Windows 10 (loader)"
                        elif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then
                                long="Windows 8 (loader)"
                        elif grep -qs "W.i.n.d.o.w.s. .7" "$2/$boot/$bcd"; then
                                long="Windows 7 (loader)"

le modifiche sopra stanno cambiando la linea if grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; thenin elif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; thene aggiungendo if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; thene long="Windows 10 (loader)"sopra quella linea e salvandola.

Una volta salvato, quindi in esecuzione os-proberora appare così:

terrance@terrance-ubuntu:~$ sudo os-prober
[sudo] password for terrance: 
/dev/sdf1:Windows 10 (loader):Windows:chain

quindi eseguirlo update-grub2ora renderà gli aggiornamenti al tuo /boot/grub/grub.cfgpermanente ogni volta che otterrai un aggiornamento del kernel in modo da mostrare subito la versione corretta di Windows (esempio sotto):

terrance@terrance-ubuntu:~$ sudo update-grub2
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.19.0-26-generic
Found initrd image: /boot/initrd.img-3.19.0-26-generic
Found linux image: /boot/vmlinuz-3.13.0-58-generic
Found initrd image: /boot/initrd.img-3.13.0-58-generic
Found linux image: /boot/vmlinuz-3.13.0-57-generic
Found initrd image: /boot/initrd.img-3.13.0-57-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 10 (loader) on /dev/sdf1
done

Spero che sia di aiuto!


4
Questo è stato pubblicato a monte (come bug / correzione), per i manutentori di Grub2?
david6

@ David6 Non ho idea se sia stato. Ho appena fatto la scoperta ieri sera mentre cercavo di saperne di più su GRUB2 e su come determina quale sistema operativo trova.
Terrance

Gli script "20microsoft" sembrano disordinati e potrebbero richiedere altri miglioramenti.
david6,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.