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

Debian:Erstellen eines bootfähigen Windows 10-Installations-USB-Laufwerks mit Terminal (dd)

Ich möchte verstehen, was vor sich geht

Rufus-Entwickler hier.

Was viel zu viele Leute nicht verstehen, weil Linux-ISOs diese Methode anwenden, aber dies ist im Wesentlichen ein MAJOR HACK NAMENS 'ISOHYBRID' , ist, dass Sie in den meisten Fällen nicht einfach ein ISO-Image nehmen und es Byte für Byte auf ein USB-Laufwerk kopieren und erwarten können, dass es auch bootet.

Das liegt daran, dass das ISO-Format und die zugrunde liegenden Dateisysteme, die es verwendet (ISO9660 oder UDF ) sind für optisches Booten ausgelegt, was ein völlig anderes Biest ist als normales HDD- oder USB-Booten. Zum einen haben optische Medien und daher (normale) ISO-Images keine Partitionstabelle, die (normalerweise) für das Booten von Festplatte oder USB unerlässlich ist, und sie haben auch (normalerweise) keinen Master Boot Record, a.k.a. MBR, der für das Booten des BIOS unerlässlich ist.

Das bedeutet, wenn Sie eine 1:1-Kopie einer normalen Datei erstellen ISO, wie z. B. Windows, auf eine Diskette, und versuchen Sie zu booten, und das wird passieren:

  • Ein BIOS-System oder UEFI-System im Legacy/CSM-Modus sieht keinen MBR und insbesondere nicht den 0x55 0xAA Sequenz in den allerletzten 2 Bytes des MBR, die anzeigt, dass eine Festplatte BIOS-bootfähig ist. Daher ist es nicht möglich, diese Festplatte im BIOS-Modus zu booten.
  • Ein UEFI-System wird (normalerweise) UDF nicht mounten oder ISO9660 Partitionen von einer Festplatte oder einem Flash-Laufwerk-Medium, denn selbst wenn es Treiber für diese Dateisysteme enthält, wird der resultierenden Festplatte, die Sie erstellt haben, ein MBR fehlen oder GPT Partitionstabelle. Beim Booten einer normalen Festplatte sucht UEFI zuerst nach einer Partition und dann nach einem Bootloader (z. B. /efi/boot/bootx64.efi ) auf dieser Partition. Also, wenn es kein MBR gibt oder GPT Partitionstabelle auf dem Medium, was bei einer normalen ISO der Fall sein wird , dann spielt es keine Rolle, ob die ISO eine Bootloader-Datei enthält, da die UEFI-Firmware die Partition, auf der sie sich befindet, nicht mounten kann.

Was Dienstprogramme wie Rufus also tun, wenn sie ein bootfähiges Datenträgermedium von einem Windows-ISO erstellen, das ein vollständig standardmäßiges optisches Medienabbild ist, ist:

  • Erstellen Sie eine Partitionstabelle, entweder MBR oder GPT entsprechend der Auswahl des Benutzers, und erstellen Sie mindestens eine Partition, die normalerweise FAT32 verwendet oder NTFS als Dateisystem (beachten Sie, dass es völlig andere Dateisysteme verwendet als das, was eine ISO verwendet).
  • Falls MBR verwendet wird, ein bisschen Code im MBR das den sekundären Bootloader findet, auf dem relevanten MBR Partition, die dazu bestimmt ist, die Ausführung des Windows-Kernels im Festplattenmodus von dieser Partition aus zu starten. Oh, und es sorgt auch dafür, dass die 0x55 0xAA Bootmarker wird am Ende von MBR hinzugefügt damit das BIOS die Festplatte als bootfähig ansieht. Dann kopiert es auch den Inhalt der ISO auf eine FAT32 oder NTFS Partition.
  • Falls GPT verwendet wird, überprüft Rufus, ob tatsächlich eine UEFI-Bootloader-Datei vorhanden ist, z. B. /efi/boot/bootx64.efi (Nun, eigentlich tut es das, bevor Sie GPT auswählen können, da es nicht viel Sinn macht, zu versuchen, ein bootfähiges GPT-Laufwerk zu erstellen, wenn kein UEFI-Bootloader vorhanden ist) und kopiert es dann zusammen mit den restlichen ISO-Dateien. typischerweise auf einen FAT32 Partition, seit dem Booten von einem FAT32 Partition ist eine zwingende Anforderung von UEFI (aber das bedeutet nicht, dass UEFI nicht von NTFS booten kann oder exFAT wenn Sie über die entsprechenden UEFI-Treiber verfügen, was praktisch sein kann, wenn Sie eine Windows-ISO mit einer Datei haben, die größer als 4 GB ist, da FAT32 solche Dateien nicht aufnehmen kann).

Nun, das obige funktioniert nur, wenn die sekundären Bootloader (d. h. diejenigen, die von Windows stammen und die Rufus nicht modifiziert) darauf ausgelegt sind, beide zu unterstützen optischer und normaler Start, was normalerweise bedeutet, dass sie beide UDF verarbeiten müssen oder ISO9660 und FAT32 oder NTFS Dateisysteme sowie die anderen Unterschiede, die sich beim Booten von der Festplatte im Vergleich zum optischen Booten ergeben. Aber Microsoft hat seinen Bootloader genau dafür entwickelt, was klug ist , denn wenn Ihr Zielsystem UEFI ist, bedeutet dies Sie (normalerweise, solange das Problem mit der maximalen Dateigröße von 4 GB von FAT32 erhebt seinen hässlichen Kopf nicht) benötigen kein Dienstprogramm, um eine ISO in einen bootfähigen USB zu konvertieren, aber Sie können diesen USB einfach in FAT32 formatieren und die ISO-Dateien darauf kopieren (Dateikopie, nicht Byte-Kopie), und Sie haben ein bootfähiges Medium.

Und jetzt, wo wir das alles durchgegangen sind, kann ich schimpfen und erklären Sie, warum ich glaube, dass die Betreuer von Linux-Distributionen, die normalerweise klüger sind, ihren Benutzern tatsächlich einen schlechten Dienst erweisen, selbst wenn sie versuchen, ihnen zu helfen:

Fast alle Neuere Linux-Distributionen verwenden einen MAJOR HACK namens "IsoHybrid", wo es jemandem gelang, einen Weg zu finden, einen ISO9660 zu machen optisches Image tarnt sich als reguläres Disk-Image mit einer Partitionstabelle, einem MBR und alles ... Mit anderen Worten, die meisten Linux-ISOs, die Sie heutzutage finden, sind missbrauchend das ISO9660-Dateisystem, um es so aussehen zu lassen, wie es nie entworfen wurde:eine doppelte Festplatte und ein optisches Image.

Offensichtlich ist das Ziel, eine ISO zu erstellen, die auch kann mit dem dd verwendet werden Befehl, auch wenn eine ISO niemals in der Lage sein sollte, auf diese Weise zu arbeiten. Und ich stimme zu, dass das theoretisch großartig klingt, denn die Möglichkeit, ein einziges Bild für völlig unterschiedliche Zwecke zu verwenden, sollte für Benutzer großartig sein, aber in der Praxis führt dies zu Problemen, die oft übersehen werden:

  • Viele Betreuer von Linux-Distributionen möchten sich nicht die Mühe machen, ein sekundäres Dateisystem zu verwenden, das Windows einhängen kann (z. B. werden sie ext verwenden als "sekundäres" Dateisystem auf ISO9660 ), was bedeutet, dass viel der Windows-Benutzer, die zum ersten Mal ein bootfähiges Laufwerk erstellen, um Linux zu verwenden, sind sehr verwirrt darüber, warum sie nicht mehr auf den Inhalt ihres Flash-Laufwerks zugreifen können. Noch schlimmer ist es, wenn der „IsoHybrid“ auch noch eine EFI-Systempartition (ESP) enthält, denn dann haben diese Nutzer den Eindruck, dass ihr Laufwerk komplett geschrumpft ist. Wenn Sie auf reddit oder anderswo gehen, werden Sie viele Beiträge von Benutzern finden, die völlig verwirrt darüber sind, was mit ihren USB-Medien passiert ist, was keinen guten ersten Linux-Eindruck hinterlässt ...
  • Viele Betreuer von Linux-Distributionen konzentrieren sich so sehr darauf, ISOHybrid zum Laufen zu bringen, dass sie die Möglichkeit, ein bootfähiges UEFI-Medium zu erstellen, indem sie einfach den Inhalt auf einen FAT32 kopieren, völlig missachten formatierte Partition, was wirklich sollte immer die bevorzugte Methode zum Erstellen von bootfähigen UEFI-Laufwerken sein (weil es normalerweise viel weniger riskant ist, eine Partition zu formatieren und dann Dateien zu kopieren, als die Verwendung von dd Befehl). Aus diesem Grund haben wir mehrere Probleme gesehen, die zu einer unterdurchschnittlichen Benutzererfahrung mit Manjaro, Ubuntu ... führen. Dies ist eigentlich mein Hauptstreitpunkt mit "ISOHybrid":Es sollte nicht als Entschuldigung dienen, etablierte Mittel aufzugeben bootfähiges Medium erstellen!
  • GPT und "ISOHybrid" können problematisch sein, da die sekundäre GPT-Tabelle bei Verwendung von dd als beschädigt angesehen wird ... was tatsächlich zu einem BSOD unter Windows 7 führt (aber das ist wirklich eher ein Windows-Bug als ein ISOHybrid-Problem). Trotzdem nicht die beste Erfahrung für Windows-Leute, die bootfähige Laufwerke erstellen ...
  • Und schließlich, weil "ISOhybrids" so präsentiert werden, als ob sie die natürlichsten Medien der Welt wären (was sie sicherlich nicht sind), werden Leute wie Sie dazu gebracht zu glauben, dass jedes ISO-Image mit dd , wenn es die Ausnahme ist eher als die Regel. Dies ist sehr bedauerlich, da es TONNENweise Verwirrung bei den Benutzern hervorruft, da einige Linux-Benutzer Leuten, die bootfähige Windows-Medien erstellen möchten, sagen, dass sie nur dd verwenden können sollten wenn das ganz sicher nie funktionieren wird! Wenn Sie außerdem ein Linux-ISO von vor 10 Jahren auswählen, bin ich ziemlich zuversichtlich, dass Sie feststellen werden, dass fast keines davon tatsächlich zum Erstellen eines bootfähigen Mediums mit dd verwendet werden kann weil dieses "IsoHybrid"-Ding eigentlich eine neue Entwicklung ist.

Soweit ich weiß, hat Microsoft keine Pläne, für ihre Windows-ISOs auf den "Hack" ISOHybrid umzusteigen, was bedeutet, dass Sie wahrscheinlich nie in der Lage sein werden, dd zu verwenden um ein bootfähiges USB-Medium daraus zu erstellen, und wenn Sie daher ein bootfähiges Windows-Medium von einer ISO erstellen möchten, müssen Sie entweder:

  • (UEFI) Muss ein Laufwerk mit einem Dateisystem formatieren, von dem Windows booten kann (NTFS , FAT32 und neuerdings exFAT ) und extrahieren Sie die ISO-Dateien darauf. Jetzt, wenn Sie NTFS verwenden oder exFAT , müssen Sie möglicherweise auch ein wenig zusätzliche Arbeit leisten ...
  • (BIOS/Legacy) Sie müssen ein Laufwerk mit einem Dateisystem formatieren, von dem Windows booten kann (NTFS oder FAT32 -- exFAT wird nicht funktionieren, da Microsoft nie BIOS-Bootloader dafür veröffentlicht hat) und dann die relevante Bootloader-Kette erstellen, vom MBR-Boot-Code bis zu den Volume-Boot-Records.

Es ist eigentlich nicht so kompliziert zu erreichen, aber es erfordert etwas mehr Arbeit als eine 1:1-Kopie aus einer ISO-Datei.

Ich hoffe, das beantwortet Ihre Frage.


dd ist nicht das richtige Tool, um einen bootfähigen Windows-USB-Stick zu erstellen. Der einfachste Weg ist die Verwendung von woeusb .

Installieren:

sudo apt-get install devscripts equivs gdebi-core
cd WoeUSB
./setup-development-environment.bash
mk-build-deps
sudo gdebi woeusb-build-deps_3.3.1_all.deb
dpkg-buildpackage -uc -b
sudo gdebi ../woeusb_3.3.1_amd64.deb

Jetzt ist die Paketversion 3.3.1 , im Falle einer Paketaktualisierung den Befehl ./setup-development-environment.bash die aktuelle Version drucken, sollten Sie sie in den obigen Befehlen ersetzen.

Verwendung:

Sie können die GUI verwenden, führen Sie woeusbgui aus vom Endgerät. Oder Sie können die CLI verwenden:

Unmounten Sie das USB-Gerät (wichtig). Führen Sie dann Folgendes aus:

sudo woeusb -v --device /path/to/windows.iso /dev/sdc

Linux
  1. So erstellen Sie ein bootfähiges USB-Laufwerk mit dem dd-Befehl

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

  3. Installieren Sie Java in Ubuntu 20.10 mit Terminal

  4. Erstellen eines PC-bootfähigen USB-Sticks mit einer .iso-Datei auf einem MAC

  5. Wie erstelle ich ein bootfähiges Windows 10-Image in Debian?

So installieren Sie Debian Linux einfach

So installieren Sie Windows 11 auf Ubuntu 20.04 mit VirtualBox

So installieren Sie Skype auf Almalinux 8 mit dem Terminal

Installieren Sie Debian 11 Bullseye auf VirtualBox

Installieren Sie Teamviewer unter Debian 11 oder 10 über das Befehlsterminal

Installieren von DEB in Debian-Systemen mit GUI oder Terminal – 2 Möglichkeiten