GRUB2 zeigt Windows 7 oder Windows Recovery Environment anstelle von Windows 10

8

Dies ist eine Frage und Antwort, die ich kürzlich herausgefunden habe, also habe ich die Antwort unten gepostet.

Nach der Installation von Windows 10 wird jedes Mal, wenn ich ein Kernel-Update erhalte oder das ausführe, das update-grub2angezeigt Windows 7oder Windows Recovery Environmentstatt Windows 10. Wie behebe ich das dauerhaft?

Terrance
quelle
Diese Änderungen sind bereits in (my Mint 19.2) / usr / lib / os-probes / mount / 20microsoft vorhanden, geben jedoch weiterhin "Windows Vista" zurück. Beachten Sie, dass das Dual-Boot-System unter Windows 7 den korrekten Wert zurückgegeben hat. Es scheint also, dass es die Quelle der fehlenden Informationen ist.
CDG
@cdg Dies sollte unter Linux & Unix abgefragt werden, da diese Seite nur für offizielle Ubuntu- Varianten ist . Außerdem sollten Sie einen Fehlerbericht bei Mint Development einreichen, wenn Sie dies bereits haben, da diese möglicherweise nicht richtig erkannt werden.
Terrance

Antworten:

10

Update: Ich habe gerade eine Neuinstallation von Xubuntu 14.04 durchgeführt und die Einträge in der unten aufgeführten Datei waren bereits vorhanden. Es sieht so aus, als hätte das GRUB-Team das Update jetzt aufgenommen. Ich werde dies hier jedem überlassen, der ohne das Update auf seinem System darüber stolpern könnte.


Update Nr. 2: Wenn Sie ein Ubuntu 14.04 LiveUSB mit mindestens 1 GB persistenter Datei erstellen, ist dieser Dateispeicherort identisch und die persistente Datei ermöglicht, dass die vorgenommenen Änderungen beibehalten werden. Diese Datei sollte erst nach dem Booten des Systems auf dem USB-Laufwerk beim Try UbuntuBooten geändert werden .


Der Grund, warum es weiterhin angezeigt wird Windows 7oder Windows Recovery Environmentstattdessen, Windows 10ist, dass die Datei /usr/lib/os-probes/mounted/20microsoftnicht die Bezeichnung für enthält Windows 10, sodass sie während der os-proberErkennung des Betriebssystems auf Windows 7oder zurückgreift Windows Recovery Environment.

Um dies zu korrigieren, müssen Sie die folgenden Änderungen an der folgenden Datei vornehmen (ich werde gedit als Editor verwenden, aber verwenden, was Sie wollen):

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

HINWEIS: Sie sollten immer eine Sicherungskopie einer Datei erstellen, bevor Sie sie ändern!

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

die Änderungen oben verändern die Linie if grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; thenzu elif grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then, und das Hinzufügen if grep -qs "W.i.n.d.o.w.s. .1.0" "$2/$boot/$bcd"; thenund long="Windows 10 (loader)"oberhalb dieser Linie und speichern es.

Einmal gespeichert, os-probersieht das Laufen jetzt so aus:

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

Wenn Sie update-grub2es dann ausführen , werden die Updates immer dann /boot/grub/grub.cfgdauerhaft aktualisiert, wenn Sie ein Kernel-Update erhalten, sodass jetzt die richtige Windows-Version angezeigt wird (Beispiel unten):

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

Hoffe das hilft!

Terrance
quelle
4
Wurde dies für Grub2-Betreuer im Upstream (als Bug / Fix) veröffentlicht?
David6
@ David6 Ich habe keine Ahnung, ob es gewesen ist. Ich habe die Entdeckung erst letzte Nacht gemacht, als ich versucht habe, mehr über GRUB2 zu erfahren und wie es bestimmt, welches Betriebssystem es findet.
Terrance
Die '20microsoft'-Skripte sehen unordentlich aus und müssen möglicherweise weiter verbessert werden.
David6