Dual-Boot-Fenster auf der zweiten Festplatte, UEFI / GPT-System

15

Ich möchte Linux installieren, aber ich möchte nicht riskieren, meine aktuelle Windows-Installation zu beschädigen, da ich viele Horrorgeschichten gehört habe. Zum Glück habe ich eine extra Festplatte. Kann ich Linux auf diesem und dann Dual-Boot-Windows installieren, ohne das Windows-Laufwerk ändern zu müssen?

Außerdem habe ich ein UEFI "BIOS" und das Windows-Laufwerk ist im GPT-Format.

Goldlöckchen
quelle

Antworten:

18

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.

  1. Ich habe Linux auf der ersten Festplatte installiert und kann jetzt Windows nicht mehr booten, oder

  2. 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 surichtig. Wenn Sie bekommen chown: invalid user: ‘yourusername’, haben Sie den letzten Befehl zu wörtlich genommen.

Sie können jetzt /etc/grub.din 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 ( ntfsmö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-cSie diese Option , um den Suchvorgang zu stoppen, sobald Sie etwas Kurzes und Einfaches wie ./Windows/Boot/EFI/bootmgfw.efioder 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-probeoder (z grub2-probe. B. Fedora) installiert sein . Tippe grubund 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 insmodBefehlen (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-uuidZeile 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-uuidZeile:

    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-mkconfigoder 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-mkconfigdirekt 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-mkconfigdirekt verwenden zu können, müssen wir zuerst Folgendes finden grub.cfg:

> find /boot -name grub.cfg

Dies wird wahrscheinlich /boot/grub/grub.cfgoder sein /boot/grub2/grub.cfg.

> grub-mkconfig -o /boot/grub/grub.cfg

update-grubüberprüft die Konfiguration automatisch auf Fehler. grub-mkconfigwird 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.cfgim 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-gruboder grub-mkconfigerneut aus.

Wenn Sie fertig sind, können Sie den Texteditor schließen und exitdas 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.dVerzeichnisses und dessen Inhalt auf den ursprünglichen Zustand zurück:

sudo chmod 755 /etc/grub.d/40_custom

Verweise

  • GRUB 2 Handbuch

  • Arch Linux Wiki GRUB Seite

    Arch hat einige der besten Dokumentationen, und ein Großteil davon (einschließlich dieser Seite) ist hauptsächlich für jede GNU / Linux-Distribution geeignet.

Goldlöckchen
quelle
2
Der technisch korrekte Begriff, nach dem Sie suchen, der auch nicht klobig ist, ist Firmware , die sich entweder als BIOS oder als UEFI präsentieren kann.
Milind R
Leider hat Firmware auch eine viel allgemeinere Bedeutung, da sie sich auf jede Software bezieht, die in Hardware eingebettet ist.
Kylotan
Auf meinem Desktop ist "chain" nicht als Befehl beim Booten zu verstehen, aber es ist chainloader in der 40_custom-Datei, die ich schreiben muss. Lassen Sie mich wissen, ob dies normal ist
FlogFR
Sehr schön! Wenn ich dies jedoch versuche, wird meine Windows 8-Installation nicht als Eintrag in grub2 angezeigt. Ich habe alle Syntaxfehler behoben und die Datei grub.cfg wurde fehlerfrei erstellt. Bitte beachten Sie auch, dass es einen Syntaxfehler gibt, wenn chainload zum ersten Mal erwähnt wird: chainload $({root})sollte sein chainload (${root})(ich kann es nicht bearbeiten, weil es eine zu kleine Änderung ist).
Sobek
@sobek Danke dafür - korrigiert. Wenn Sie einer Datei in etwas hinzugefügt haben /etc/grub.dund es beim Generieren der Konfiguration nicht hinzugefügt wird, geschieht etwas Seltsames. Wenn Sie grub-mkconfigohne -oStandardout ausgeführt werden, kann dies hilfreich sein, um zu bestätigen oder zu verweigern, dass Ihre Ergänzungen verarbeitet werden.
Goldlöckchen