GRUB2 pokazuje Windows 7 lub Windows Recovery Environment zamiast Windows 10

8

To jest pytanie, które ostatnio wymyśliłem, więc opublikowałem odpowiedź poniżej.

Po zainstalowaniu systemu Windows 10 za każdym razem, gdy otrzymuję aktualizację jądra lub uruchamiam update-grub2, zawsze pokazuje Windows 7lub Windows Recovery Environmentzamiast Windows 10. Jak to naprawić na stałe?

Terrance
źródło
Te zmiany już istnieją w (my Mint 19.2) / usr / lib / os-probes / mounted / 20microsoft, ale nadal zwraca „Windows Vista”. Zauważ, że gdy system podwójnego rozruchu był Windows 7, zwrócił prawidłową wartość, więc wygląda na to, że jest to źródło brakujących informacji.
cdg
@cdg Należy o to zapytać w Linux i Unix, ponieważ ta strona jest przeznaczona wyłącznie dla oficjalnych wersji Ubuntu . Powinieneś również złożyć raport o błędzie w Mint Development, jeśli już to wszystko masz, ponieważ mogą nie wykryć go poprawnie.
Terrance

Odpowiedzi:

10

Aktualizacja: Właśnie przeprowadziłem czystą instalację Xubuntu 14.04 i wpisy do pliku wymienionego poniżej już tam były. Wygląda na to, że zespół GRUB zawarł aktualizację. Zostawię to tutaj każdemu, kto może natknąć się na to bez aktualizacji w swoim systemie.


Aktualizacja nr 2: Jeśli utworzysz Ubuntu 14.04 LiveUSB z co najmniej 1 GB trwałego pliku, ta lokalizacja pliku jest taka sama, a trwały plik pozwoli na wprowadzenie zmian. Ten plik należy zmodyfikować dopiero po uruchomieniu systemu na dysk USB podczas Try Ubunturozruchu.


Powodem, dla którego nadal się wyświetla Windows 7lub Windows Recovery Environmentzamiast tego Windows 10jest to, że plik /usr/lib/os-probes/mounted/20microsoftnie zawiera etykiety dla Windows 10, więc podczas os-proberwykrywania systemu operacyjnego wraca do Windows 7lub Windows Recovery Environment.

Aby to naprawić, musisz wprowadzić następujące zmiany w następującym pliku (zamierzam umieścić gedit jako edytor, ale użyj tego, co chcesz):

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

UWAGA: Zawsze powinieneś wykonać kopię zapasową pliku przed jego modyfikacją!

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

powyższe zmiany zmieniają linię if grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; thenna elif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; thenoraz dodają if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; theni long="Windows 10 (loader)"powyżej tej linii i zapisują ją.

Po zapisaniu bieganie os-proberwygląda teraz tak:

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

uruchomienie update-grub2go spowoduje teraz aktualizację na /boot/grub/grub.cfgstałe za każdym razem, gdy otrzymasz aktualizację jądra, dzięki czemu wyświetli się teraz poprawna wersja systemu Windows (przykład poniżej):

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

Mam nadzieję że to pomoże!

Terrance
źródło
4
Czy zostało to opublikowane powyżej (jako błąd / poprawka), dla opiekunów Grub2?
david6,
@ david6 Nie mam pojęcia, czy tak było. Właśnie dokonałem tego odkrycia zeszłej nocy, próbując dowiedzieć się więcej o GRUB2 i tym, w jaki sposób określa on znaleziony system operacyjny.
Terrance
Skrypty „20microsoft” wyglądają niechlujnie i mogą wymagać innych ulepszeń.
david6,