GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Dual-Boot-Windows auf zweiter Festplatte, Uefi/gpt-System?

Ich würde gerne 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 zusätzliche Festplatte. Kann ich Linux darauf installieren und dann Windows doppelt booten, ohne das Windows-Laufwerk ändern zu müssen?

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

Akzeptierte Antwort:

Ich werde den Begriff BIOS verwenden unten, wenn auf Konzepte verwiesen wird, die für neuere UEFI-Systeme und traditionelle BIOS-Systeme gleich sind, da dies zwar eine UEFI-orientierte Frage ist, aber über das „BIOS“ zu sprechen besser mit z. B. der GRUB-Dokumentation und „BIOS/UEFI“ zusammenhängt zu klobig. GRUB (eigentlich GRUB 2 – dies wird oft mehrdeutig verwendet) ist der Bootloader, der von Linux installiert und zum Dual-Booten von Windows verwendet wird.

Zunächst ein Wort zur Laufwerks- und Boot-Reihenfolge. Fahrreihenfolge 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. Startreihenfolge bezieht sich auf die Reihenfolge, in der das BIOS nach einem bootfähigen Laufwerk sucht. Dies ist nicht unbedingt identisch mit der Laufwerksreihenfolge und kann normalerweise über den BIOS-Setup-Bildschirm konfiguriert werden. Die Laufwerksreihenfolge sollte nicht konfigurierbar sein oder von der Startreihenfolge beeinflusst werden, da dies eine sehr Betriebssystem-unfreundliche Sache wäre (aber theoretisch könnte ein stumpfes BIOS). Wenn Sie das erste Laufwerk ausstecken, wird das zweite Laufwerk wahrscheinlich zum ersten. Wir werden UUIDs bei der Konfiguration des Bootloaders verwenden, um Probleme wie diese zu vermeiden (zeitgenössische Linux-Installer tun dies auch).

Der ideale Weg, um das zu bekommen, was Sie wollen, ist die Installation von Linux auf dem zweiten Laufwerk in Bezug auf die Laufwerksreihenfolge und wählen Sie es dann zuerst in Bezug auf die Startreihenfolge aus mit dem UEFI-Setup. 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. Der Grund, warum ich Linux auf dem zweiten Laufwerk empfehle, ist, dass GRUB den nativen Windows-Bootloader „verketten“ muss und der Windows-Bootloader immer davon ausgeht, dass es sich auf dem ersten Laufwerk befindet. Es gibt jedoch eine Möglichkeit, es auszutricksen, wenn Sie es umgekehrt bevorzugen oder brauchen.

Hoffentlich können Sie einfach eine Live-CD oder was auch immer verwenden und dies mit dem GUI-Installationsprogramm erledigen. Nicht alle Installer sind jedoch gleich, und wenn dies vermasselt wird, haben Sie Probleme wie:

  1. Auf dem ersten habe ich Linux installiert Festplatte und jetzt kann ich Windows nicht booten, oder

  2. Ich habe Linux auf der zweiten Festplatte installiert, aber die erste Festplatte für den Bootloader verwendet, und jetzt kann ich nichts mehr booten!

Dann lesen Sie weiter. Im zweiten Fall sollten Sie zuerst versuchen, Linux auf der zweiten Festplatte neu zu installieren, und dieses Mal sicherstellen, dass der Bootloader dorthin geht. Der einfachste und narrensicherste Weg, dies zu tun, wäre, das Windows-Laufwerk vorübergehend vom Computer zu entfernen, da wir davon ausgehen, dass darauf nichts installiert ist, unabhängig von der Laufwerksreihenfolge.

Sobald Sie Linux installiert und sichergestellt haben, dass es booten kann, schließen Sie das Windows-Laufwerk wieder an (falls Sie es entfernt haben – und denken Sie daran, dass wir es idealerweise zuerst in Bezug auf die Laufwerksreihenfolge und das zweite Laufwerk zuerst in Bezug auf den Start möchten Bestellung) und fahren Sie mit dem nächsten Schritt fort.

Auf die GRUB-Konfiguration zugreifen

Starten 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 mit whoami ), also mach nichts Dummes. Sie sind jedoch immer noch ein normaler Benutzer in der GUI, und da wir eine Textdatei bearbeiten werden, müssen wir, wenn Sie einen GUI-Editor bevorzugen, vorübergehend den Eigentümer dieser Datei und das Verzeichnis, in dem sie sich befindet, ändern:

> chown -R yourusername /etc/grub.d/

Wenn Sie „Vorgang nicht erlaubt“ erhalten, haben Sie su nicht ausgeführt richtig. Wenn Sie chown: invalid user: ‘yourusername’ erhalten , Sie haben den letzten Befehl zu wörtlich genommen.

Sie können nun zu /etc/grub.d navigieren in Ihrem Dateibrowser und suchen Sie nach einer Datei namens 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 und fügen Sie ihn ein (beginnend mit #!/bin/sh ) und weiter zum nächsten Schritt.

Verwandte:Bash:Umschalt + Pfeiltasten machen A, B, C, D?

Hinzufügen einer Windows-Startoption

Kopieren Sie dies und fügen Sie es mit dem Texteditor am Ende der Datei ein:

menuentry "MS Windows" {
        insmod part_gpt
        insmod search_fs_uuid
        insmod ntfs
        insmod chain
}

Dies ist eine Liste von Modulen, die GRUB benötigt, um Dinge zu erledigen (ntfs kann überflüssig sein, sollte aber auch nicht schaden). Beachten Sie, dass dies ein unvollständiger Eintrag ist — Wir müssen einige wichtige Befehle hinzufügen.

Den Windows Second Stage Bootloader finden

Ihre Linux-Installation hat wahrscheinlich Ihre Windows-Partition automatisch gemountet und Sie sollten sie in einem Dateibrowser finden können. Wenn nicht, finden Sie einen Weg, dies zu erreichen (wenn Sie sich nicht sicher sind, wie, 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 Tipparbeit zu sparen, schreiben wir das in eine Shell-Variable:

win="/whatever/the/path/is"

Auf beiden Seiten des Gleichheitszeichens dürfen keine Leerzeichen stehen. Nicht Fügen Sie hier alle Elemente eines Windows-Pfads ein. Dies sollte auf den Ordner der obersten Ebene auf der Windows-Partition zeigen. Jetzt:

cd $win
find . -name bootmgfw.efi

Dies kann ein paar Minuten dauern, wenn Sie eine große Partition haben, aber höchstwahrscheinlich ist das erste, was es ausspuckt, das, wonach wir suchen; Möglicherweise gibt es im Dateisystem weitere Verweise, die lange goobledygook-Strings enthalten - das sind es nicht. Verwenden Sie Ctrl-c um die Suche zu stoppen, sobald Sie etwas Kurzes und Einfaches wie ./Windows/Boot/EFI/bootmgfw.efi sehen oder ./EFI/HP/boot/bootmgfw.efi .

Außer . merken Sie sich diesen Weg am Anfang für später; Sie können es in Ihren Texteditor in eine leere Zeile unten kopieren, da wir es dort verwenden werden. Wenn Sie jetzt zu Ihrem vorherigen Verzeichnis zurückkehren möchten, verwenden Sie cd - , obwohl es ab jetzt egal ist, wo Sie sich in der Shell befinden.

Die richtigen Parameter einstellen

GRUB muss in der Lage sein, den Boot-Prozess zu finden und an den Windows-Bootloader der zweiten Stufe zu übergeben. Wir haben bereits den Pfad auf der Windows-Partition, aber wir brauchen auch einige Parameter, um GRUB mitzuteilen, wo sich diese Partition befindet. Auf Ihrem System sollte ein Tool namens grub-probe installiert sein oder (auf z. B. Fedora) grub2-probe . Geben Sie grub ein und drücken Sie dann Tab zwei- oder dreimal; Sie sollten eine Liste mit dem einen oder anderen sehen.

> grub-probe --target=hints_string $win

Sie sollten eine Zeichenfolge wie die folgende sehen:

--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1

Gehen Sie zurück zum Texteditor mit der darin enthaltenen GRUB-Konfiguration und fügen Sie nach allen insmod eine Zeile hinzu Befehlen (aber vor der schließenden geschweiften Klammer), sodass es so aussieht:

    insmod chain
    search --fs-uuid --set=root [the complete "hint bios" string]
}

Unterbrechen Sie diese Zeile nicht und erlauben Sie Ihrem Texteditor nicht, dies zu tun. Es kann in der Anzeige herumlaufen – eine einfache Möglichkeit, den Unterschied zu erkennen, besteht darin, die Zeilennummerierung zu aktivieren. Weiter:

> grub-probe --target=fs_uuid $win

Dies sollte eine kürzere Zeichenfolge aus Buchstaben, Zahlen und möglichen Bindestrichen wie „123A456B789X6X“ oder „b942fb5c-2573-4222-acc8-bbb883f19043“ zurückgeben. Fügen Sie das am Ende von search --fs-uuid hinzu Zeile nach dem Bios-String des Hinweises, getrennt durch ein Leerzeichen.

Als nächstes, wenn (und nur wenn) Windows befindet sich in Bezug auf die Laufwerksreihenfolge auf dem zweiten Laufwerk , fügen Sie nach search --fs-uuid eine Zeile hinzu Zeile:

    drivemap -s hd0 hd1

Das ist der bereits erwähnte „Trick“. Beachten Sie, dass es nicht garantiert funktioniert, aber es schadet nicht, es zu versuchen.

Schließlich sollte die letzte Zeile lauten:

    chainloader (${root})[the Windows path to the bootloader]
}

Nur um das klarzustellen, 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 so aussieht, wie sie sollte.

Neue Menüoption zu GRUB hinzufügen

Dies geschieht mit einem Tool namens grub-mkconfig oder grub2-mkconfig; es wird in der Liste gewesen sein, die Sie mit Tab gefunden haben vorhin. Möglicherweise haben Sie auch einen Befehl namens 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 verwenden direkt. Wenn nicht (einschließlich eines längeren Fehlers), haben Sie gerade die Konfiguration festgelegt und können ein wenig nach unten blättern.

Um grub-mkconfig zu verwenden direkt, müssen wir zuerst grub.cfg finden :

> find /boot -name grub.cfg

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

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

update-grub scannt die Konfiguration automatisch auf Fehler. grub-mkconfig nicht, aber es ist wichtig, dies zu tun, da es jetzt viel einfacher ist, mit ihnen umzugehen, als wenn Sie versuchen, die Maschine zu booten. Verwenden Sie dazu grub-script-check (oder grub2-script-check ):

> grub-script-check /boot/grub/grub.cfg

Wenn dies (oder update-grub ) erzeugt einen Fehler, der eine Zeilennummer angibt, das ist die Zeilennummer in grub.cfg, aber Sie müssen den entsprechenden Teil in /etc/grub.d/40_custom korrigieren (die Datei in Ihrem Texteditor). Möglicherweise müssen Sie jedoch root sein, um sich die vorherige Datei anzusehen, also versuchen Sie es mit less /boot/grub/grub.cfg Klicken Sie im Terminal auf : , und geben Sie die Zeilennummer ein. Sie sollten Ihren Menüeintrag sehen. Finden Sie den Tippfehler, korrigieren Sie ihn im Texteditor und führen Sie update-grub aus oder grub-mkconfig nochmal.

Verwandte:In-Memory- und Festplatten-Hybrid?

Wenn Sie fertig sind, können Sie den Texteditor schließen und exit eingeben im Terminal, um den Superuser-Modus zu verlassen.

Neu starten!

Wenn Sie zum Grub-Menü gelangen, scrollen Sie schnell (bevor das Timeout abläuft, normalerweise 5 Sekunden) zur Option „Windows“ und testen Sie es. Wenn Sie einen SMS-Fehler von Grub erhalten, stimmt etwas mit der Konfiguration nicht. Wenn Sie eine Fehlermeldung von Windows erhalten , liegt dieses Problem zwischen Ihnen und Microsoft. Machen Sie sich jedoch keine Sorgen, Ihr Windows-Laufwerk wurde nicht geändert und Sie können es direkt booten, indem Sie es über das BIOS-Setup an die erste Stelle setzen (in Bezug auf die Boot-Reihenfolge).

Wenn Sie wieder zu Linux zurückkehren, geben Sie den Besitz von /etc/grub.d zurück Verzeichnis und seinen Inhalt in ihren ursprünglichen Zustand:

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

Referenzen

  • GRUB 2-Handbuch

  • Arch Linux Wiki GRUB-Seite

    Arch hat einige der besten Dokumentationen, die es gibt, und vieles davon (einschließlich dieser Seite) ist größtenteils auf jede GNU/Linux-Distribution anwendbar.


Linux
  1. Installieren Sie Linux Mint mit Windows 8 | Dual-Boot-Windows 8 und Linux Mint 12

  2. So starten Sie Windows 10 und MX Linux dual

  3. fsck ein NTFS-Laufwerk unter Linux

  4. Erstellen Sie ein bootfähiges Windows 10-USB-Laufwerk (UEFI) von Linux

  5. Dual-Boot Windows + Linux mit Verschlüsselung

Ändern Sie die Startreihenfolge in Windows Linux Dual Boot mit Grub Customizer

So booten Sie Linux Mint und Windows 10 doppelt [Anfängerhandbuch]

Beheben Sie, dass Grub für Windows- und Linux-Dual-Boot-Systeme nicht angezeigt wird

So booten Sie Antergos Linux und Windows UEFI doppelt

Wie man Fedora und Windows dual bootet

Wie installiere ich Dual Boot Windows und Kali Linux?