GRUB2 mostra o Windows 7 ou o Windows Recovery Environment em vez do Windows 10

8

Esta é uma sessão de perguntas e respostas que descobri recentemente, então publiquei a resposta abaixo.

Depois de instalar o Windows 10, toda vez que eu recebo uma atualização do kernel ou executo, update-grub2ela sempre aparece Windows 7ou em Windows Recovery Environmentvez de Windows 10. Como faço para corrigir isso permanentemente?

Terrance
fonte
Essas alterações já existem no (meu Mint 19.2) / usr / lib / os-probes / mounted / 20microsoft, mas ainda retornam o "Windows Vista". Observe que, quando o sistema de inicialização dupla era o Windows 7, ele retornava o valor correto; portanto, parece que é a fonte das informações que estão faltando.
Cdg
@cdg Isso deve ser solicitado no Linux e Unix, pois este site é apenas para os sabores oficiais do Ubuntu . Além disso, você deve registrar um relatório de erro no Mint Development, se você já tiver tudo isso, pois eles podem não estar sendo detectados corretamente.
Terrance

Respostas:

10

Atualização: Acabei de executar uma instalação limpa do Xubuntu 14.04 e as entradas para o arquivo listado abaixo já estavam lá. Parece que a equipe do GRUB agora incluiu a atualização. Deixarei isso aqui para qualquer um que possa tropeçar nisso sem a atualização em seu sistema ainda.


Atualização # 2: Se você criar um Ubuntu 14.04 LiveUSB com pelo menos um arquivo persistente de 1 GB, esse local do arquivo é o mesmo e o arquivo persistente permitirá que as alterações sejam feitas. Este arquivo só deve ser modificado após a inicialização do sistema na unidade USB na Try Ubuntuinicialização.


O motivo pelo qual ele ainda é exibido Windows 7ou Windows Recovery Environmentnão Windows 10é que o arquivo /usr/lib/os-probes/mounted/20microsoftnão contém o rótulo Windows 10, portanto, durante a os-proberdetecção do sistema operacional, ele volta a Windows 7ou Windows Recovery Environment.

Para corrigir isso, você precisa fazer as seguintes alterações no arquivo a seguir (vou colocar o gedit como editor, mas use o que quiser):

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

NOTA: Você sempre deve fazer um backup de um arquivo antes de modificá-lo!

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)"

as alterações acima estão alterando a linha if grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; thenpara elif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then, adicionando if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; thene long="Windows 10 (loader)"acima dessa linha e salvando-a.

Depois de salvo, a execução os-proberagora fica assim:

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

a execução update-grub2agora fará as atualizações /boot/grub/grub.cfgpermanentes sempre que você receber uma atualização do kernel, mostrando a versão correta do Windows agora (exemplo abaixo):

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

Espero que isto ajude!

Terrance
fonte
4
Isso foi publicado a montante (como bug / fix) para os mantenedores do Grub2?
David6 27/08/2015
@ david6 Eu não tenho idéia se tem sido. Acabei de fazer a descoberta ontem à noite enquanto tentava aprender mais sobre o GRUB2 e como ele determina o SO que encontra.
Terrance
Os scripts '20microsoft' parecem confusos e podem precisar de outras melhorias.
David6 28/08