GRUB2 показывает Windows 7 или Windows Recovery Environment вместо Windows 10

8

Это вопросы и ответы, которые я недавно выяснил, поэтому я разместил ответ ниже.

После установки Windows 10, каждый раз, когда я получаю обновление ядра или запускаю, update-grub2оно всегда показывает Windows 7или Windows Recovery Environmentвместо Windows 10. Как я могу это исправить навсегда?

Терренс
источник
Эти изменения уже существуют в (мой Mint 19.2) / usr / lib / os-probes / mount / 20microsoft, но все равно возвращает «Windows Vista». Обратите внимание, что когда в качестве системы с двойной загрузкой использовалась Windows 7, она возвращала правильное значение, поэтому, по-видимому, она является источником недостающей информации.
CDG
@cdg Об этом следует спросить в Linux и Unix, поскольку этот сайт предназначен только для официальных версий Ubuntu . Кроме того, вы должны отправить отчет об ошибке в Mint Development, если у вас уже есть все это, поскольку они могут не распознавать его правильно.
Терренс

Ответы:

10

Обновление: я только что выполнил чистую установку Xubuntu 14.04, и записи в файле, который указан ниже, уже были там. Похоже, команда GRUB теперь включила обновление. Я оставлю это здесь для любого, кто может наткнуться на это без обновления в своей системе.


Обновление № 2: Если вы создаете Ubuntu 14.04 LiveUSB с постоянным файлом размером не менее 1 ГБ, это местоположение файла такое же, и этот постоянный файл позволит сохранить внесенные изменения. Этот файл следует изменять только после загрузки системы с USB-накопителя при Try Ubuntuзагрузке.


Причина, по которой он все еще отображается Windows 7или Windows Recovery Environmentвместо этого, Windows 10заключается в том, что файл /usr/lib/os-probes/mounted/20microsoftне содержит метки Windows 10, поэтому во время os-proberобнаружения ОС он возвращается к Windows 7или Windows Recovery Environment.

Чтобы исправить это, вам нужно внести следующие изменения в следующий файл (я собираюсь поместить gedit в качестве редактора, но используйте то, что вы хотите):

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

ПРИМЕЧАНИЕ: вы всегда должны сделать резервную копию файла перед его изменением!

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

изменения, приведенные выше, изменяют строку if grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; thenна elif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; thenи добавляют ее if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; thenи сохраняют long="Windows 10 (loader)".

После сохранения, затем запуска os-proberтеперь выглядит так:

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

затем работает update-grub2 он будет он будет обновлять ваш /boot/grub/grub.cfgпостоянный файл каждый раз, когда вы получите обновление ядра, поэтому теперь будет отображаться правильная версия Windows (пример ниже):

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

Надеюсь это поможет!

Терренс
источник
4
Было ли это опубликовано (как ошибка / исправление) для сопровождающих Grub2?
Давид6
@ Давид6 Я понятия не имею, если это было. Я только что сделал открытие прошлой ночью, пытаясь узнать больше о GRUB2 и о том, как он определяет, какую ОС он находит.
Терренс
Скрипты «20microsoft» выглядят грязно и могут нуждаться в других улучшениях.
Давид6