Ich werde den Begriff BIOS unten verwenden, wenn ich mich auf Konzepte beziehe, die sowohl für neuere UEFI-Systeme als auch für traditionelle BIOS-Systeme gleich sind, da dies zwar eine UEFI-orientierte Frage ist, die "BIOS" -Hinweise jedoch besser mit z. B. der GRUB-Dokumentation zu tun haben , und "BIOS / UEFI" ist zu klobig. GRUB (eigentlich GRUB 2 - dies wird häufig mehrdeutig verwendet) ist der Bootloader, der von Linux installiert und zum Dual-Booten von Windows verwendet wird.
Zunächst ein Wort zur Laufwerks- und Startreihenfolge. Die Laufwerksreihenfolge bezieht sich auf die Reihenfolge, in der die Laufwerke physisch mit dem Bus auf der Hauptplatine verbunden sind (erstes Laufwerk, zweites Laufwerk usw.). Diese Informationen werden vom BIOS gemeldet. Startreihenfolgebezieht sich auf die Reihenfolge, in der das BIOS nach einem bootfähigen Laufwerk sucht. Dies muss nicht unbedingt mit der Laufwerksreihenfolge übereinstimmen und kann normalerweise über den BIOS-Setup-Bildschirm konfiguriert werden. Die Laufwerksreihenfolge sollte nicht konfigurierbar sein oder durch die Startreihenfolge beeinflusst werden, da dies ein sehr unfreundliches Unterfangen für das Betriebssystem wäre (theoretisch könnte dies jedoch zu einem stumpfen BIOS führen). Wenn Sie das erste Laufwerk ausstecken, wird wahrscheinlich das zweite Laufwerk das erste. Wir werden UUIDs bei der Konfiguration des Bootloaders verwenden, um Probleme wie dieses zu vermeiden (dies tun auch moderne Linux-Installer).
Der ideale Weg zu bekommen , was Sie wollen , ist in Bezug auf Linux auf dem zweiten Laufwerk zu installieren Laufwerk um und es dann zunächst in Bezug auf die Auswahl Boot - Reihenfolge der UEFI - Set-up verwendet. Ein zusätzlicher Vorteil davon ist, dass Sie dann die BIOS / UEFI-Startreihenfolge verwenden können, um das Windows-Laufwerk auszuwählen und Grub zu umgehen, wenn Sie möchten. Ich empfehle Linux auf dem zweiten Laufwerk, weil GRUB den nativen Windows-Bootloader "chainloaden" muss und der Windows-Bootloader immer davon ausgeht, dass er sich auf dem ersten Laufwerk befindet. Es gibt jedoch eine Möglichkeit, es auszutricksen, wenn Sie es andersherum bevorzugen oder brauchen.
Hoffentlich können Sie einfach eine Live-CD oder was auch immer verwenden und dies mithilfe des GUI-Installationsprogramms erledigen. Es sind jedoch nicht alle Installationsprogramme gleich, und wenn dies nicht funktioniert und Sie Probleme haben, wie z.
Ich habe Linux auf der ersten Festplatte installiert und kann jetzt Windows nicht mehr booten, oder
Ich habe Linux auf der zweiten Festplatte installiert, benutze aber die erste Festplatte für den Bootloader und kann jetzt nichts mehr booten!
Dann lies weiter. Im zweiten Fall sollten Sie zuerst versuchen, Linux erneut auf der zweiten Festplatte zu installieren. Stellen Sie diesmal sicher, dass der Bootloader dort installiert ist. Am einfachsten und kinderleichtesten ist es, das Windows-Laufwerk vorübergehend vom Computer zu entfernen, da davon ausgegangen wird, dass unabhängig von der Laufwerksreihenfolge keine zusätzlichen Komponenten installiert sind.
Sobald Sie Linux installiert haben und sichergestellt haben, dass es booten kann, schließen Sie das Windows-Laufwerk wieder an (falls Sie es entfernt haben - und denken Sie daran, wir möchten, dass es zuerst in der Laufwerksreihenfolge und das zweite Laufwerk zuerst in der Reihenfolge der Startreihenfolge) und fahren Sie mit dem nächsten Schritt fort.
Zugriff auf die GRUB-Konfiguration
Booten Sie Linux, öffnen Sie ein Terminal und
> su root
Sie werden nach dem Passwort von root gefragt. Von diesem Punkt an sind Sie der Superuser in diesem Terminal (um dies zu überprüfen, versuchen Sie es whoami
). Tun Sie also nichts Dummes. Sie sind jedoch immer noch ein normaler Benutzer in der GUI. Da wir eine Textdatei bearbeiten, müssen Sie, wenn Sie einen GUI-Editor bevorzugen, vorübergehend den Eigentümer dieser Datei und das Verzeichnis ändern, in dem sie sich befindet:
> chown -R yourusername /etc/grub.d/
Wenn Sie "Operation nicht erlaubt" erhalten, haben Sie nicht su
richtig. Wenn Sie bekommen chown: invalid user: ‘yourusername’
, haben Sie den letzten Befehl zu wörtlich genommen.
Sie können jetzt /etc/grub.d
in Ihrem Dateibrowser nach einer Datei mit dem Namen suchen 40_custom
. Es sollte so aussehen:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
Wenn Sie es nicht finden können, geben Sie im Root-Terminal die folgenden Befehle ein:
> touch /etc/grub.d/40_custom
> chmod 755 /etc/grub.d/40_custom
> chown yourusername /etc/grub.d/40_custom
Öffnen Sie es in Ihrem Texteditor, kopieren Sie den obigen Teil (beginnend mit #!/bin/sh
) und fahren Sie mit dem nächsten Schritt fort.
Hinzufügen einer Windows-Startoption
Kopieren Sie diese mit dem Texteditor am Ende der Datei:
menuentry "MS Windows" {
insmod part_gpt
insmod search_fs_uuid
insmod ntfs
insmod chain
}
Dies ist eine Liste der Module, die GRUB benötigt, um Dinge zu erledigen ( ntfs
möglicherweise überflüssig, sollte aber auch nichts tun). Beachten Sie, dass dies ein unvollständiger Eintrag ist - wir müssen einige wichtige Befehle hinzufügen.
Suchen des Windows Second Stage-Bootloaders
Ihre Linux-Installation hat Ihre Windows-Partition wahrscheinlich automatisch gemountet, und Sie sollten sie in einem Dateibrowser finden können. Wenn nicht, überlegen Sie, wie Sie das erreichen können (wenn Sie sich nicht sicher sind, stellen Sie eine Frage auf dieser Website). Sobald dies erledigt ist, müssen wir den Einhängepunkt kennen - dies sollte im Dateibrowser offensichtlich sein, z /media/ASDF23SF23/
. Um etwas Tipparbeit zu sparen, werden wir das in eine Shell-Variable schreiben:
win="/whatever/the/path/is"
Auf beiden Seiten des Gleichheitszeichens dürfen keine Leerzeichen stehen. Fügen Sie hier keine Elemente eines Windows-Pfads ein. Dies sollte auf den Ordner der obersten Ebene auf der Windows-Partition verweisen. Jetzt:
cd $win
find . -name bootmgfw.efi
Dies kann einige Minuten dauern, wenn Sie eine große Partition haben, aber höchstwahrscheinlich ist das Erste, wonach es ausspuckt, das, wonach wir suchen. Möglicherweise enthält das Dateisystem weitere Verweise, die lange goobledygook-Zeichenfolgen enthalten. Verwenden Ctrl-c
Sie diese Option , um den Suchvorgang zu stoppen, sobald Sie etwas Kurzes und Einfaches wie ./Windows/Boot/EFI/bootmgfw.efi
oder sehen ./EFI/HP/boot/bootmgfw.efi
.
Mit Ausnahme der .
am Anfang, denken Sie daran , diesen Weg für später; Sie können es in einer leeren Zeile unten in Ihren Texteditor kopieren, da wir es dort verwenden werden. Wenn Sie jetzt zu Ihrem vorherigen Verzeichnis zurückkehren möchten, verwenden Sie cd -
, obwohl es von hier an keine Rolle mehr spielt, wo Sie sich in der Shell befinden.
Einstellen der richtigen Parameter
GRUB muss in der Lage sein, den Startvorgang zu finden und an den Windows-Bootloader der zweiten Stufe weiterzuleiten. Wir haben bereits den Pfad auf der Windows-Partition, aber wir benötigen auch einige Parameter, um GRUB mitzuteilen, wo sich diese Partition befindet. Auf Ihrem System sollte ein Tool namens grub-probe
oder (z grub2-probe
. B. Fedora) installiert sein . Tippe grub
und drücke dann Tabzwei oder drei Mal; Sie sollten eine Liste mit dem einen oder anderen sehen.
> grub-probe --target=hints_string $win
Sie sollten eine Zeichenfolge sehen wie:
--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1
Kehren Sie zum Texteditor mit der GRUB-Konfiguration zurück und fügen Sie nach allen insmod
Befehlen (jedoch vor der schließenden geschweiften Klammer) eine Zeile ein, sodass Folgendes aussieht:
insmod chain
search --fs-uuid --set=root [the complete "hint bios" string]
}
Brechen Sie diese Zeile nicht um und lassen Sie es nicht zu, dass Ihr Texteditor dies tut. Es kann im Display herumlaufen - ein einfacher Weg, um den Unterschied festzustellen, besteht darin, die Zeilennummerierung zu aktivieren. Nächster:
> grub-probe --target=fs_uuid $win
Dies sollte eine kürzere Folge von Buchstaben, Zahlen und möglichen Bindestrichen wie "123A456B789X6X" oder "b942fb5c-2573-4222-acc8-bbb883f19043" zurückgeben. Fügen Sie das an das Ende der search --fs-uuid
Zeile nach dem Hinweis-BIOS-String ein, der durch ein Leerzeichen getrennt ist.
Als nächstes , wenn (und nur dann) von Windows auf dem zweite Laufwerk in Bezug auf ist Antrieb , um eine Zeile nach dem Hinzufügen search --fs-uuid
Zeile:
drivemap -s hd0 hd1
Dies ist "der Trick", der zuvor erwähnt wurde. Es ist nicht garantiert, dass es funktioniert, aber es tut nicht weh, es zu versuchen.
Schließlich sollte die letzte Zeile sein:
chainloader (${root})[the Windows path to the bootloader]
}
Um es klar zu sagen, zum Beispiel:
chainloader (${root})/Windows/Boot/EFI/bootmgfw.efi
Das ist es. Speichern Sie die Datei und überprüfen Sie in einem Dateibrowser, ob sie wirklich gespeichert wurde und wie sie aussehen sollte.
Fügen Sie GRUB die neue Menüoption hinzu
Dies geschieht mit einem Tool namens grub-mkconfig
oder grub2-mkconfig
; es wird in der Liste gewesen sein, mit der Sie Tabzuvor gefunden haben. Sie können auch einen Befehl aufrufen lassen update-grub
. Um dies zu überprüfen, geben Sie es einfach in das Root-Terminal ein. Wenn Sie "Befehl nicht gefunden" erhalten, müssen Sie grub-mkconfig
direkt verwenden. Wenn nicht (einschließlich eines längeren Fehlers), haben Sie gerade die Konfiguration festgelegt und können ein wenig nach unten scrollen.
Um grub-mkconfig
direkt verwenden zu können, müssen wir zuerst Folgendes finden grub.cfg
:
> find /boot -name grub.cfg
Dies wird wahrscheinlich /boot/grub/grub.cfg
oder sein /boot/grub2/grub.cfg
.
> grub-mkconfig -o /boot/grub/grub.cfg
update-grub
überprüft die Konfiguration automatisch auf Fehler. grub-mkconfig
wird nicht, aber es ist wichtig, dies zu tun, da es jetzt viel einfacher ist, mit ihnen umzugehen, als wenn Sie versuchen, die Maschine zu starten. Verwenden Sie dazu grub-script-check
(oder grub2-script-check
):
> grub-script-check /boot/grub/grub.cfg
Wenn dies (oder update-grub
) einen Fehler erzeugt, der eine Zeilennummer angibt, ist dies die Zeilennummer in grub.cfg, aber Sie müssen das entsprechende Teil in /etc/grub.d/40_custom
(die Datei in Ihrem Texteditor) korrigieren . Möglicherweise müssen Sie root sein, um die vorherige Datei anzuzeigen. Versuchen Sie es less /boot/grub/grub.cfg
im Terminal, drücken Sie :und geben Sie die Zeilennummer ein. Sie sollten Ihren Menüeintrag sehen. Suchen Sie den Tippfehler, korrigieren Sie ihn im Texteditor und führen Sie update-grub
oder grub-mkconfig
erneut aus.
Wenn Sie fertig sind, können Sie den Texteditor schließen und exit
das Terminal eingeben, um den Superuser-Modus zu verlassen.
Neustart!
Wenn Sie zum Grub-Menü gelangen, scrollen Sie schnell nach unten (vor Ablauf des Timeouts, normalerweise 5 Sekunden) zur Option "Windows" und testen Sie sie. Wenn Sie von grub eine SMS-Fehlermeldung erhalten, stimmt etwas mit der Konfiguration nicht. Wenn Sie eine Fehlermeldung von Windows erhalten , liegt das Problem zwischen Ihnen und Microsoft. Machen Sie sich keine Sorgen, Ihr Windows-Laufwerk wurde nicht geändert und Sie können es direkt starten, indem Sie es über das BIOS-Setup an die erste Stelle setzen (in Bezug auf die Startreihenfolge).
Wenn Sie wieder zu Linux zurückkehren, setzen Sie den Besitz des /etc/grub.d
Verzeichnisses und dessen Inhalt auf den ursprünglichen Zustand zurück:
sudo chmod 755 /etc/grub.d/40_custom
Verweise
chainload $({root})
sollte seinchainload (${root})
(ich kann es nicht bearbeiten, weil es eine zu kleine Änderung ist)./etc/grub.d
und es beim Generieren der Konfiguration nicht hinzugefügt wird, geschieht etwas Seltsames. Wenn Siegrub-mkconfig
ohne-o
Standardout ausgeführt werden, kann dies hilfreich sein, um zu bestätigen oder zu verweigern, dass Ihre Ergänzungen verarbeitet werden.