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 oderISO9660
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, einMBR
fehlen oderGPT
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 keinMBR
gibt oderGPT
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
oderGPT
entsprechend der Auswahl des Benutzers, und erstellen Sie mindestens eine Partition, die normalerweiseFAT32
verwendet oderNTFS
als Dateisystem (beachten Sie, dass es völlig andere Dateisysteme verwendet als das, was eine ISO verwendet). - Falls
MBR
verwendet wird, ein bisschen Code imMBR
das den sekundären Bootloader findet, auf dem relevantenMBR
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 die0x55
0xAA
Bootmarker wird am Ende vonMBR
hinzugefügt damit das BIOS die Festplatte als bootfähig ansieht. Dann kopiert es auch den Inhalt der ISO auf eineFAT32
oderNTFS
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 einenFAT32
Partition, seit dem Booten von einemFAT32
Partition ist eine zwingende Anforderung von UEFI (aber das bedeutet nicht, dass UEFI nicht vonNTFS
booten kann oderexFAT
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 aufISO9660
), 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 vondd
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 nurdd
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 mitdd
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 neuerdingsexFAT
) und extrahieren Sie die ISO-Dateien darauf. Jetzt, wenn SieNTFS
verwenden oderexFAT
, 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
oderFAT32
--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