Boot-Repair hat zu viele Grub-Menüeinträge für Windows erstellt

11

Ich habe kürzlich Ubuntu im Dual Boot zusammen mit Windows 10 auf einem HP Laptop installiert. Anfangs konnte ich Windows nicht mit grub starten, da die Auswahl der Windows-Optionen nur zu grub zurückkehren würde.

Dann habe ich eine Boot-Reparatur durchgeführt und all diese zusätzlichen Optionen wurden im Grub-Menü angezeigt.

Ich kann Windows mit der Option "Windows UEFI bootmgfw.efi" öffnen, aber nicht mit der Standardoption "Windows Boot Manager (on / dev / sda1)".

Wie reduziere ich diese Einträge und warum kann ich Windows mit der letzteren Option nicht starten?

Hier ist ein Bild von Grub. Die erste Option ist Ubuntu:

grub - die 1. Option ist Ubuntu

Abhay
quelle
1
Mögliches Duplikat von Wie entferne ich alte Kernelversionen, um das Startmenü zu bereinigen?
Mike, was auch immer
3
Es ist nicht wirklich ein Duplikat davon. Meins zeigt keine Linux-Kernel-Einträge. Plus der Punkt, dass ich Windows nicht mit der Boot-Manager-Option booten kann.
Abhay
1
Wow, du bist schnell! Sie sollten erst akzeptieren, nachdem Sie eine Antwort ausprobiert haben, aber diese wird sicherlich helfen !!! ;-) Habe ich auch erwähnt, dass du wirklich ein Backup machen solltest, bevor du anfängst , oder wirklich, wirklich vorsichtig mit dem, was du löschst?!
Fabby
1
Die Verwendung von GRUB Customizer, wie Fabby vorschlägt, wird wahrscheinlich helfen. Um herauszufinden, warum eine Option funktioniert und eine andere nicht, müssen wir die /boot/grub/grub.cfgDatei von Ihrem System aus anzeigen. Mein Verdacht ist, dass der nicht funktionierende Eintrag für BIOS-basierte Systeme konzipiert ist, Ihr Eintrag jedoch eindeutig EFI-basiert ist, sodass eine Option im BIOS-Modus ein (wörtlicher) Nichtstarter ist.
Rod Smith

Antworten:

5

Windows ist hier kein Thema, aber die Antwort ist, dass dies eine sehr alte Technologie ist und der Bootsektor nur 512 Bytes umfasst. Daher ist er nicht groß genug, um alles aufzunehmen, was wir möchten.

Um Einträge ganz einfach selbst in grub hinzuzufügen und zu entfernen, gehen Sie bitte wie folgt vor:

  1. Erstellen Sie mit CloneZilla Live eine vollständige Systemsicherung Ihres gesamten Computers einschließlich der anderen Betriebssysteme
  2. Nein, ich habe nicht gescherzt! Nehmen Sie zuerst eine vollständige Systemsicherung vor ! :-)
  3. Wenn Ihnen jemand sagt, dass Sie ein PPA installieren sollen, seien Sie sehr vorsichtig. Machen Sie Ihre eigenen Nachforschungen, wenn Sie dies wirklich wollen, und fahren Sie erst dann fort
  4. Installieren Sie grub-customizer, indem Sie die folgenden Befehle ausführen:

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt update
    sudo apt install grub-customizer
    
  5. Starten Sie grub-customizerund passen Sie die Hölle daraus an: Geben Sie hier die Bildbeschreibung ein

  6. Wenn Sie auf ernsthafte Probleme stoßen, stellen Sie die Systemsicherung wieder her.

Fabby
quelle
1
Sie haben einen delikaten Stil in den Antworten und sogar in Ihren Kommentaren. Ehrlich gesagt frage ich mich wirklich, warum nicht jeder die richtige und nützliche Antwort als Antwort markiert, mich frustriert, aber ich habe nie danach gefragt. Ich kann Ihre Kommentare kopieren und nach meinen Antworten einfügen 😂
Haitham A. El-Ghareeb
Ich habe Ihnen gerade ein Plus bei einer anderen grubFrage zum Ausblenden des Startmenüs gegeben. In diesem Fall "Ich bin relativ sicher" ist die Antwort, die ich gerade in diesem Thread gepostet habe, die richtige. Es ist mir jetzt zweimal passiert und die Reparaturmethode ist jedes Mal einwandfrei.
WinEunuuchs2Unix
FTR Ich habe diese Antwort auch positiv bewertet. Der Kommentar des letzten Jahres wurde möglicherweise falsch interpretiert.
WinEunuuchs2Unix
12

Jedes Mal , wenn ich laufe habe boot-repaires fügt eine 5 zusätzliche Windows - Startoptionen zu meinem grubHauptmenü, die nicht funktionieren. In Ihrem Fall wurden 11 zusätzliche Einträge hinzugefügt !

grub.cfg zeigt das Problem

Das Geheimnis kann in der /etc/grub/grub.cfgDatei gefunden werden:

### BEGIN /etc/grub.d/25_custom ###
    menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/fwupx64.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/ubuntu/fwupx64.efi
}

menuentry "Windows UEFI bootmgfw.efi sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Boot/bkpbootx64.efi
### END /etc/grub.d/25_custom ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/nvme0n1p2)' --class windows --class os $menuentry_id_option 'osprober-efi-D656-F2A8' {
    savedefault
    insmod part_gpt
    insmod fat
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root  D656-F2A8
    else
      search --no-floppy --fs-uuid --set=root D656-F2A8
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-9478-B6E2' {
    savedefault
    insmod part_gpt
    insmod fat
    set root='hd0,gpt1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  9478-B6E2
    else
      search --no-floppy --fs-uuid --set=root 9478-B6E2
    fi
    chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###

Der Abschnitt 30_os-proberenthält die "guten" Windows- grubMenüeinträge, die Sie behalten möchten. Der Abschnitt 25_customenthält die gefälschten Einträge, die von erstellt wurden boot-repair. Sie können die Grub-Konfigurationsdatei nicht bearbeiten, da sie beim nächsten update-grubAusführen einfach überschrieben wird.


Der Abschnitt 25_customwurde von Boot Repair erstellt

Auf meinem System:

$ locate 25_custom
/boot/efi/boot-repair/log/20171111_224241/nvme0n1p5/25_custom
/boot/efi/boot-repair/log/20171208_030854/nvme0n1p5/25_custom
/etc/grub.d/25_custom

Sehen Sie sich die zusätzlichen Windows-Optionen an, die eingerichtet wurden (und nicht funktionieren):

$ cat /boot/efi/boot-repair/log/20171208_030854/nvme0n1p5/25_custom
#!/bin/sh
exec tail -n +3 $0

menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/fwupx64.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/ubuntu/fwupx64.efi
}

menuentry "Windows UEFI bootmgfw.efi sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Boot/bkpbootx64.efi

Dies sind die fehlerhaften Einträge, boot-repairdie in erstellt und /etc/grub.d/25_customanschließend kompiliert wurden \boot\grub\grub.cfg.


Reverse Boot Repair ändert sich in 25_custom

Verwenden sudo -H gedit /etc/grub.d/25_customund löschen Sie alles außer den ersten drei Zeilen:

#!/bin/sh
exec tail -n +3 $0
  • Die Datei enthält jetzt zwei Zeilen mit Text und eine Leerzeile.
  • Speicher die Datei.
  • Ausführen sudo update-grub.
  • Starten Sie neu.

Jetzt ist Ihr Menü nicht mehr mit fünf gefälschten Windows-Menüeinträgen gefüllt, die nicht funktionieren.

Überprüfen Sie, ob drei Zeilen vorhanden sind 25_custom

Führen Sie diesen Befehl aus und überprüfen Sie, ob 25_customdrei Zeilen vorhanden sind:

$ wc /etc/grub.d/25_custom
      3       6      30
#     ^       ^       ^
#     |       |       +--- Number of characters
#     |       +----------- Number of words
#     +------------------- Number of lines

Ich habe die #Kommentare hinzugefügt, um die wcAusgabe zu entschlüsseln (Wortanzahl).

WinEunuuchs2Unix
quelle
1
Ich kann meine eigene Antwort weder ablehnen noch löschen, aber ich kann Sie positiv bewerten ... :) Beachten Sie, dass eine GUI-Lösung immer mehr Stimmen erhält als eine textbasierte Lösung, obwohl die textbasierte Lösung im Allgemeinen genauer ist (= technisch besser)
Fabby
1
Als ich gerade eine positive Bewertung für meine Antwort erhalten habe, bin ich überrascht zu sehen, dass Ihre Nicht-GUI mehr Stimmen als meine gesammelt hat! Gut gemacht!
Fabby
1
@ Fabby Danke. Ich habe gerade auch deine Stimme abgegeben :)
WinEunuuchs2Unix
Ich könnte zu spät fragen, aber ... warum wird 25_custom überhaupt benötigt? Warum werden diese 3 Zeilen benötigt?
Poomerang
@poomerang Es ist die natürliche Reihenfolge einer leeren Konfigurationsdatei in der Welt von grub. Es ist einfacher sich anzupassen als zu rebellieren.
WinEunuuchs2Unix