Wie kann man UEFI-BIOS dazu bringen, GRUB zu starten, nicht Windows?

21

Die TL; DR, hinzugefügt in der Bearbeitung:

Die Frage ist:

Wie kann ich das BIOS dazu bringen, GRUB gegenüber Windows Boot Manager auf derselben UEFI-Bootpartition zu bevorzugen?

Das Problem liegt nicht bei Grub; Grub macht das Richtige, wenn das BIOS es startet. Das Problem liegt nicht bei "Die Festplatte ist nicht bootfähig", da sowohl der Windows UEFI-Bootstrap als auch der Grub UEFI-Bootstrap bootfähig sind. Das Problem ist, von welchem ​​UEFI-Bootstrap das BIOS booten möchte.

Ich richte einen neuen Computer ein und möchte, dass er standardmäßig Ubuntu startet, habe aber die Möglichkeit, Windows beim Booten auszuwählen. Dies ist besonders wichtig, wenn der Strom ausfällt und zurückkommt. Ich werde nicht einmal im Haus sein.

Ich begann mit der Installation von Ubuntu 17.04 auf meiner internen NVMe-Festplatte, die mit GPT partitioniert wurde, um die Hälfte der Festplatte zu verwenden, und einer separaten UEFI-Startpartition. GRUB bootet so gut, und beim Start wird das GRUB-Boot-Menü angezeigt, in dem ich alle Elemente auswählen kann, die GRUB kennt.

Dann habe ich Windows 10 Pro von einer kürzlich heruntergeladenen ISO installiert. Es installierte Windows Boot Manager auf derselben UEFI-Partition und ließ Ubuntu intakt (großartig!) Und das bootet gut in Windows 10.

Es hat jedoch "etwas" bewirkt, dass die UEFI-Firmware beim Einschalten sofort den Windows-Boot-Manager anstelle von GRUB auswählt. Die einzige Möglichkeit, Linux jetzt zu starten, besteht darin, den BIOS-Boot-Manager (F11 in meinem BIOS) zu verwenden und den GRUB-Bootloader manuell auszuwählen. Das UEFI-BIOS weiß, dass auf der UEFI-Partition mehrere bootfähige Installationen vorhanden sind, da ich im Boot-Manager zwischen diesen wählen kann. Wenn ich mich jedoch im Setup-Menü des UEFI-BIOS befinde, kann ich in der Auswahl der Startpriorität nur "UEFI boot my internal drive" auswählen. Außerdem kann ich nicht auswählen, welcher Bootloader auf dieser Partition verwendet werden soll . Standardmäßig wird Windows und nicht GRUB ausgewählt.

Das Internet (und diese Site) schlagen vor, dass der alte Weg, dies zu beheben, darin besteht, es auszuführen update-grub(damit GRUB Windows erkennt) und dann grub-install(um GRUB wieder auf das Gerät zu setzen). Ich habe dies getan, aber leider hat es immer noch das Verhalten als oben beschrieben, wobei das BIOS standardmäßig den Windows-Boot-Manager auswählt. ( update-grubFindet die Windows Boot Manager-Installation und fügt sie dem Menü hinzu. Dieser Menüpunkt funktioniert, wenn ich die GRUB-Partition im UEFI-Bootmanager manuell auswähle.)

Was kann ich tun, um GRUB zum "Standard" -Start auf meiner UEFI-Startpartition zu machen?

Verwenden eines MSI X399 Carbon-Motherboards.

Zweite Änderung: Da die richtige Antwort in einem Kommentar zu einer Antwort erwähnt wird, wiederhole ich sie hier:

"BCDEDIT" in an admin shell on Windows is the working solution. The others don't work.
Jon Watte
quelle
Sie müssen nur Windows und dann Linux installieren. Nicht umgekehrt. Ich habe genau das Gegenteil. Wenn der Strom ausfällt und dann zurückkommt, geht mein Computer in Grub und bootet in Linux, smh. Eine Sache ist jedoch, dass ich jedes System auf einem eigenen Laufwerk habe. Bei der Startreihenfolge wähle ich das Laufwerk mit Linux und Grub aus.
dmb
1
Es ist erstaunlich, wie viele Leute Dinge vorschlagen, die bereits von anderen vorgeschlagen wurden, und ich habe bereits gesagt, dass sie weder in meinem ursprünglichen Beitrag noch in den Kommentaren unten funktioniert haben. Die richtige Lösung war "BCDEDIT" in einer Windows-Admin-Shell. Keiner der anderen Vorschläge löste es (und die meisten hatte ich bereits gemäß meiner Frage versucht.)
Jon Watte

Antworten:

21

Es gibt verschiedene Möglichkeiten, dies zu tun, darunter:

  • Das EFI-Setup-Dienstprogramm - Die meisten EFIs bieten Setup-Dienstprogramme, auf die Sie zugreifen können, indem Sie beim Booten eine spezielle Taste drücken (normalerweise Esc, Del oder eine Funktionstaste; aber welche Taste es ist, variiert von System zu System). Diese bieten häufig, aber nicht immer eine Möglichkeit, die Startreihenfolge anzupassen. Wenn Ihre Firmware eine solche Option bietet, sollten Sie sie verwenden können, um GRUB an die oberste Position zu bringen. (GRUB wird wahrscheinlich aufgerufen ubuntu, da Sie es von dieser Distribution aus installiert haben.)
  • Eine EFI-Shell - Sie können den bcfgBefehl in einer EFI-Shell der Version 2 verwenden, wie im Arch Linux-Wiki beschrieben. Wenn Ihr System noch nicht mit einer leicht zugänglichen Shell eingerichtet ist, ist dieser Ansatz wahrscheinlich schwieriger zu verwenden als die anderen, aber er ist betriebssystemunabhängig.
  • EasyUEFI - Das Windows EasyUEFI- Programm eines Drittanbieters ist wahrscheinlich der einfachste Weg, um das zu tun, was Sie wollen. Sie können auf den ubuntuEintrag in der EasyUEFI-Liste klicken und ihn nach oben verschieben.
  • bcdedit- Der Windows- bcdeditBefehl kann die NVRAM-basierte Startreihenfolge ändern. Insbesondere das Öffnen eines Administrator- Eingabeaufforderungsfensters und das Eingeben bcdedit /set "{bootmgr}" path \EFI\ubuntu\shimx64.efi(optional gefolgt von bcdedit /set "{bootmgr}" description "ubuntu", um die Beschreibung sinnvoll zu halten) sollten den Trick tun.
  • efibootmgr- Dieses Linux-Tool kann die Startreihenfolge anpassen. Beginnen Sie, indem Sie sudo efibootmgralleine tippen , um die Optionen anzuzeigen. Notieren Sie die Nummer ( Boot####), die dem ubuntuEintrag zugeordnet ist, und die aktuelle Startreihenfolge (in der BootOrderZeile). ubuntuMit der -oOption können Sie dann eine neue Startreihenfolge mit dem Eintrag oben eingeben . Wenn die aktuelle Startreihenfolge beispielsweise 0000,0003,0007,0004 und ubuntu0007 lautet, geben Sie Folgendes ein sudo efibootmgr -o 0007,0000,0003,0004, um die Startreihenfolge anzupassen.
  • refind-mkdefault- Dieses Skript wird mit rEFInd geliefert und ist eine Möglichkeit, das vorhergehende Verfahren zu automatisieren. Wenn Sie rEFInd nicht verwenden, müssen Sie das Skript hier herunterladen und ausführbar machen ( chmod a+x refind-mkdefault). Sie würden es dann als sudo ./refind-mkdefault -L ubuntuoder ausführen sudo ./refind-mkdefault -L shimx64, um GRUB zum Standard-Starteintrag zu machen.

Bei jeder dieser Optionen treten potenzielle Probleme und Komplikationen auf. Der wahrscheinlichste Komplikationsfaktor ist, wenn alte oder alternative ubuntuStarteinträge vorhanden sind . Es ist wichtig, dass Sie die richtige Position in der Startreihenfolge an die oberste Position bringen. Wenn Sie den falschen verschieben, werden Sie entweder keine Verhaltensänderung oder etwas nicht funktionierendes Booten feststellen, was das Booten erschweren würde. Wenn Sie verwenden efibootmgr, BootCurrentkönnen Sie anhand der Zeile feststellen, welche Option Sie als Standard festlegen sollten.

Es gibt andere Möglichkeiten, die übertrieben sind. Eine Neuinstallation von GRUB (über Boot Repair oder grub-install) sollte zum Beispiel ausreichen. Bei diesen Ansätzen besteht jedoch die Gefahr, dass eine bekanntermaßen funktionierende GRUB-Konfiguration beschädigt wird.

Beachten Sie auch, dass einige EFIs fehlerhaft sind und es andere Probleme gibt, die es schwierig machen können, GRUB zum zuverlässigen Booten zu bringen. Sie können diese Fragen und Antworten auf AskUbuntu überprüfen, wenn Sie auf solche Probleme stoßen:

Rod Smith
quelle
Wie ich in der Frage beschrieben habe, konnte ich mit dem EFI-Setup-Dienstprogramm Ubuntu nicht als Standard auswählen, obwohl ich dies im manuellen Startmenü tun konnte. Ich würde einfach das Laufwerk auswählen und dann Windows starten. efibootmgr hat versucht, die Startreihenfolge zu ändern, aber das BIOS hat beim Neustart nicht darauf geachtet. EasyBCD hat nicht funktioniert - ich konnte keine weiteren Menüpunkte hinzufügen. "BCDEDIT" in einer Admin-Shell hat jedoch tatsächlich funktioniert. Vielen Dank für diese Option!
Jon Watte
Beachten Sie, dass EasyBCD und EasyUEFI zwei verschiedene Programme desselben Herstellers sind. Leider scheint die kostenlose Version von EasyUEFI nicht mehr verfügbar zu sein - es werden nur Testversionen angeboten. BOOTICE ist jedoch ein weiteres kostenloses Programm, mit dem die UEFI-Starteinstellungen bearbeitet werden können: chinesische Original-Site , englischsprachige Site mit Beschreibung und Screenshots .
TelcoM
Die Verwendung sudo efibootmgr -n 0002ist viel besser als die Änderung der aktuellen SO-Reihenfolge. Es ändert sich BootNext: 0001und bleibt BootCurrent: 0002für das nächste Mal erhalten, sodass Ihre aktuellen GRUB-Einträge unberührt bleiben. Fügen Sie einfach eine Bash mit hinzu chmod +xund wickeln Sie diesen Befehl zusammen mit dem Neustart ein.
m3nda
2

Ich habe genau dieses Problem in den letzten Wochen gehabt. Ich habe es mit diesen Optionen herausgefunden. Bevor Sie eines dieser Dinge tun, empfehle ich Ihnen, in Ihr BIOS / UEFI zu gehen und die Startreihenfolge zu überprüfen und sicherzustellen, dass zuerst installiert ist, wo grub installiert ist.

Wie ich sehe, haben Sie zwei Möglichkeiten.

Option 1

Ich würde Ihnen empfehlen, zuerst Windows 10 zu installieren . Dann installiere Ubuntu. Aber ich weiß, dass es ein Tabu ist, einfach "Software neu installieren" zu sagen, also biete ich auch eine Alternative an.

Option 2

Mit Ihrem aktuellen Setup würde ich Ihnen empfehlen, ein Live Ubuntu CD / Flash-Laufwerk zu starten und zu installieren und auszuführen boot-repair. Klicken Sie auf die Option "Empfohlene Reparatur" und befolgen Sie die Anweisungen. Gehen Sie es sorgfältig durch und lesen Sie alle Befehle, bevor Sie es ausführen. Dadurch wird die aktuelle Grub-Installation durch eine neue überschrieben, die sie hoffentlich beheben sollte.

Taterbotz
quelle
Danke für die Vorschläge, aber die hatte ich schon ausprobiert. Bei der ersten Installation habe ich zuerst Windows 10, dann Ubuntu 17.04 und dann Boot Repair verwendet. Es war immer noch standardmäßig Windows, und dann habe ich zuerst mit Ubuntu gelöscht und neu installiert, was mich dahin bringt, wo ich jetzt bin.
Jon Watte
Ich nehme an, Sie haben versucht, die Startreihenfolge in Ihrem UEFI anzupassen, oder?
Taterbotz
Ja, wie gesagt: "Wenn ich mich im Setup-Menü des UEFI-BIOS befinde, kann ich in der Auswahl der Startpriorität nur" UEFI boot my internal drive "auswählen. Dabei kann ich nicht auswählen, welcher Bootloader verwendet werden soll auf dieser Partition zu verwenden "
Jon Watte
2

Ich sehe mehrere Lösungen:

  1. Bearbeiten Sie Ihre UEFI, um die Standardeinstellung anzupassen. Unter Linux können Sie verwenden efibootmgr. Unter Windows bin ich mir nicht sicher, aber ich denke, Sie können eine Wiederherstellungsoption starten, mit der Sie die UEFI konfigurieren können. Oder Sie möchten lieber etwas wie rEFInd installieren.
  2. Ändern Sie den Ordnernamen auf der EFI-Partition. Ich denke, es bevorzugt einen Ordner namens oder greift darauf zurück boot.
  3. Verwenden Sie einfach den Windows-Bootloader. Ich denke, er kann so konfiguriert werden, dass andere Betriebssysteme gestartet werden.
Jiggunjer
quelle
Ich könnte die Startreihenfolge mit efibootmgr bearbeiten, aber das BIOS ignoriert sie und startet Windows trotzdem. Das Ändern des Startordnernamens (oder sogar das Kopieren von grub in "boot") funktioniert erst, wenn ich den Microsoft-Namen entferne. Der Windows-Bootloader bootet keine Nicht-Windows-Betriebssysteme (zumindest keine nicht signierten)
Jon Watte
@ JonWatte Vielleicht ist der uefi-Bootloader anders. Ich erinnere mich, dass ich Ubuntu vom Windows 7-Bootloader auf einem 32-Bit-BIOS-Computer gebootet habe. Vielleicht kann es noch kettenladen grub2? Da efibootmgres nicht funktioniert, weiß ich, dass ich MSI nicht kaufen werde.
Jiggunjer
Ja, dieses MSI-Motherboard hat auch einige andere Probleme und kehrt im Austausch für ein Gigabyte zu Amazon zurück.
Jon Watte
1

Ich hatte gerade meine Hauptplatine in meinem Laptop ersetzt und Grub verschwand vollständig.

Ich weiß, dass dies als behoben markiert ist, aber ich dachte, dass es für Sie nützlich sein könnte.

Damit grub als Boot-Option angezeigt wird. Ich musste dem BIOS einen EFI hinzufügen.

Ich ging in meinem BIOS zur "Boot List Option". Klicken Sie auf "Boot-Option hinzufügen" (mir ist bekannt, dass dies BIOS-spezifisch ist). Dies gab mir eine Option für den Dateinamen, der in meinem Fall war \EFI\ubuntu\grubx64.efiund gab ihm einen Namengrub

Ich habe dann den grubEintrag an den Anfang der Startsequenz verschoben und jetzt wird er als Standardeintrag angezeigt.

Das heißt, ich muss nur die richtige EFI-Datei suchen und an den Anfang Ihrer Startsequenz / -reihenfolge verschieben.

Wir s
quelle
1

Keine der oben genannten Optionen funktionierte bei mir mit einem alten HP 655-Laptop. Ich fand heraus, dass die Lösung darin besteht, den Windows-Boot-Manager inaktiv zu setzen:

sudo -s
efibootmgr
efibootmgr -b 4 --inactive

Ersetzen Sie 4 durch die Anzahl der Windows-Boot-Manager. Führen Sie efibootmgr erneut aus und Sie sollten sehen, dass der Stern verschwindet, um Inaktivität zu markieren.

Nachdem mein Computer gestartet wurde, können Sie das Startmenü und die Fenster weiterhin auswählen.

Cmazay
quelle
-2

Eine mögliche Lösung wäre das manuelle Bearbeiten der Datei / etc / default / grub.

sudo vim /etc/default/grub

Der Standardeintrag wird durch die GRUB_DEFAULT=Einstellung in / etc / default / grub bestimmt. Der erste "Menüeintrag" hat den Wert "0". Wenn Ubuntu der zweite Eintrag im Startbildschirm ist, setzen Sie GRUB_DEFAULT = 1.

Anschließend müssten Sie den Befehl ausführen, um die Grub-Konfiguration zu aktualisieren: update-grub

Eine weitere Option wäre die Installation des Grub-Customizers und die Verwendung der GUI zum Konfigurieren der Startpriorität.

Herr Himbeere
quelle
Das Problem liegt nicht bei Grub. Wie ich in dem Beitrag sagte, wenn ich das BIOS dazu bringen kann, die Grub UEFI-Startoption zu wählen, erhalte ich das Grub-Startmenü, in dem ich Windows oder Ubuntu auswählen kann. Dies ist das Menü, das ich standardmäßig haben möchte. Leider wählt das BIOS standardmäßig den Windows Boot Manager.
Jon Watte
Wie gesagt, Sie können das Problem in der Grub-Startreihenfolge beheben, indem Sie Ubuntu als erstes System konfigurieren, das gestartet wird. Verwenden Sie dazu den grub-customizer über die GUI. linuxandubuntu.com/home/…
Mr. Raspberry
Auch hier wird Grub nicht einmal vom BIOS gestartet. Die Reihenfolge der Grub-Stiefel spielt keine Rolle. GRUB_DEFAULT spielt keine Rolle. Das ist hier nicht das Problem.
Jon Watte