Wenn ich ein bootfähiges USB-Laufwerk auf ein anderes USB-Laufwerk kopiere, wird dann ein doppeltes bootfähiges Laufwerk erstellt?

37

Ich dachte, es ist eine dumme Frage, aber eine Suche mit Google scheint darauf hinzudeuten, dass es nicht einmal möglich ist, Daten von einem bootfähigen Laufwerk auf ein anderes USB-Gerät zu kopieren oder einzufügen. Aber selbst wenn wir es kopieren könnten, warum sollte es dann nicht funktionieren? (Das erstellt ein Duplikat des bootfähigen Laufwerks.)

zar
quelle
2
Was meinst du mit "kopieren / einfügen"? Natürlich müssen Sie die Teile kopieren, die es tatsächlich zu einem bootfähigen Laufwerk machen (wie z. B. den Bootloader usw.), aber es gibt keinen Grund, warum dies nicht funktionieren sollte.
Jörg W Mittag

Antworten:

56

Durch einfaches Kopieren der Dateien wird kein bootfähiges Laufwerk erstellt. Es sind nicht nur die Dateien auf einem USB-Flash-Laufwerk, die ihn bootfähig machen, sondern auch die Partitionstabellenkonfiguration , die Metadaten zur Organisation des Laufwerkinhalts, die einem PC mitteilen , ob er bootfähig ist und ob es sich um MBR oder GPT handelt .

Wie auf cyberciti.biz vermerkt :

Jede Festplatte und Partition enthält eine Art Signatur und Metadaten / magische Zeichenfolgen. Die Metadaten, die vom Betriebssystem zum Konfigurieren von Datenträgern oder zum Anhängen von Treibern und Bereitstellen von Datenträgern auf Ihrem System verwendet werden.

Sie können das Flash-Laufwerk jedoch mit einer Reihe von Tools klonen, z. B. mit dd , EaseUS Todo Backup und dem hervorragenden Open Source- Programm Clonezilla und Rufus . (Danke an Alex für die Erinnerungen an dd und Rufus).

Es gibt sogar elektronische Geräte, die Flash-Laufwerke automatisch replizieren .

K7AAY
quelle
15
Eigentlich brauchen Sie nicht einmal dd: simple cperledigt die Arbeit - stellen Sie nur sicher, dass Sie es auf dem Geräteknoten anstatt auf dem Dateisysteminhalt verwenden.
Ruslan
Das ist überraschend. Oder vielleicht nicht. Aber zumindest für mich.
Jörg W Mittag
1
'cat <source> destination' funktioniert in Ordnung, da das Ziel kein Schütze als die Quelle ist.
ysdx
@JoL du hast den (jetzt gelöschten) Kommentar von Jörg noch nicht gesehen. Meins war eine Antwort auf seine Behauptung, cpdie einfach den Geräteknoten kopieren würde. Um Verwirrung zu vermeiden, habe ich jetzt auch meinen Kommentar gelöscht.
Ruslan
21

Beim Kopieren werden nur Dateien in formatierten Partitionen kopiert. Sie werden nicht in der Lage sein, spezielle Dinge zu tun, die für den Boot-Vorgang notwendig sind, wie das Setzen der Boot-Flags, das Schreiben des Bootloaders oder manchmal sogar das Kopieren normaler Dateien an die richtige Stelle (read: sector) in der Partition und das Festlegen der Dateiattribute / Berechtigungen. Sofern Sie nicht das Glück haben, diese Dinge zur Verfügung zu haben, müssen Sie aufgrund einer vorherigen Erstellung der Bootdiskette, eines Formatierungstools, das den Bootloader in den MBR schreibt, usw. weitere Schritte ausführen, um die Diskette bootfähig zu machen


Insbesondere beim Booten im BIOS-Modus sucht das BIOS nach dem ersten Sektor (MBR), um festzustellen, ob eine gültige Boot-Signatur 0xAA55 vorliegt . Wenn ja, wird dieser Sektor geladen und die Steuerung an den Bootloader im MBR übertragen. Der MBR beschreibt die Partitionskonfiguration, daher kann er nicht in der Partition liegen und ist nicht das, was Sie mit normalen Tools kopieren können.

Da der MBR zu klein ist, um nützlich zu sein, teilen die meisten modernen Bootloader den Bootvorgang in mehrere Stufen auf , wobei der Bootcode im MBR die nächste Stufe lädt. Die weiteren Intra-Stufen werden wiederum häufig in Regionen außerhalb der Trennwände gelegt . Einige mögen es in den EBR stellen , aber Grub legt seine zweite Stufe normalerweise in den leeren Bereich zwischen der ersten Partition und dem MBR, der als Post-MBR-Lücke bezeichnet wird. Das ist der Grund, warum, wenn man die Partitionen nicht richtig ausrichtet, kein Platz für Grub vorhanden ist, um den Boot-Code abzulegen, was zu einem Einbettungsfehler führt

Viele Bootloader wie LILO oder alte Windows / DOS-Bootloader enthalten auch Hardcode- Informationen im MBR, wie die Position der nächsten Stufe oder der Systemdateien. Sie arbeiten nicht mit dem Lesen der Partitionsdaten, sondern mit dem Lesen eines hartcodierten Sektors, da es zu viel Code erfordert, um das Dateisystem zu analysieren, das nur sehr schwer in winzige Bereiche wie den MBR oder die Lücke nach dem MBR gequetscht werden kann. Sogar Grub unterstützt eine solche harte Codierung . Das heißt, einige Systemdateien müssen sich Sektor für Sektor genau am richtigen Ort befinden , was Sie mit einer normalen Kopie nicht erreichen können. Aus diesem Grund sehen Sie "nicht verschiebbare Systemdateien". Wenn Sie den Windows-Defragmentierer ausführen oder Dateisysteme verkleinern, was manchmal nicht richtig ist, weil Windows nur zu ängstlich ist, diese Dateien zu verschieben, obwohl moderne Bootloader viel intelligenter sind und sich nicht um solche Dinge kümmern.

Schließlich müssen Sie auch die Boot-Partition als aktiv festlegen , damit der Bootloader weiß, was gebootet werden soll. Dies muss durch ein Partitionierungswerkzeug oder manuelles Hex-Editieren erfolgen, da es sich auch außerhalb des Partitionsbereichs befindet.


In der UEFI sind die Dinge viel einfacher. Es kennt FAT-Dateisysteme (und noch mehr Dateisysteme bei nicht standardmäßigen Implementierungen). Daher werden Startdateien in der EFI-Systempartition AKA ESP gespeichert . Die UEFI lädt die * .efi-Anwendungen in den ESP, der dann die Betriebssysteme lädt.

Die UEFI-Firmware unterstützt das Booten von Wechseldatenträgern wie USB-Sticks. Zu diesem Zweck muss ein Wechseldatenträger mit einem FAT12-, FAT16- oder FAT32-Dateisystem formatiert werden, während ein Bootloader gemäß der Standard-ESP-Dateihierarchie gespeichert werden muss oder indem ein vollständiger Pfad eines Bootloaders zum System bereitgestellt wird Bootmanager.

Im Grunde müssen Sie nur die * .efi-Datei (en) auf den ESP kopieren und die Systemdateien in den richtigen Ordner legen. Es gibt jedoch immer noch ein kleines Problem, da die FAT-Partition, die die * .efi-Datei enthält, in der MBR- oder GPT-Tabelle außerhalb der Partitionen als ESP markiert werden muss. Dies kann nicht durch Kopieren wie oben ausgeführt werden. Insbesondere muss der Partitionstyp in MBR von 0Ch / 0Bh / whatever zu EFh und in GPT zu C12A7328-F81F-11D2-BA4B-00A0C93EC93B geändert werden , da das ESP nicht tatsächlich auf FAT12 / 16/32, sondern auf einem unabhängigen Dateisystem basiert die FAT-Dateisystemfamilie


Und es gibt noch viele andere Partitionierungsschemata wie BSD Disk Label oder APM, die zum Booten anders modifiziert werden müssen. Oder die USB-Sticks wurden möglicherweise ohne Partitionstabelle formatiert (AFAIK Windows führt dies standardmäßig aus). Daher ist es anders, sie bootfähig zu machen. Es gilt jedoch dasselbe Limit: Sie müssen nicht partitionierte Bereiche ändern

phuclv
quelle
1
Das ist die richtige Antwort.
Margaret Bloom
Es ist die gründlichste Antwort, ja, aber ich glaube nicht, dass sie korrekter ist als die akzeptierte Antwort, die IMO auf einfache Weise auf eine einfach gesetzte Frage beantwortet.
Ian Kemp
@ IanKemp das Problem mit der akzeptierten Antwort ist nicht, dass es einfach ist (das ist gut), aber dass es technisch bestenfalls mehrdeutig ist :)
Margaret Bloom
Wenn Sie ein USB-Stick-Volume mit dem Windows-Dienstprogramm "diskpart" oder einem Partitionsmanager eines Drittanbieters als aktiv markieren, wird der Stick durch Kopieren des Inhalts eines Windows Vista / 7/8/10-ISO-Images zum Windows-Boot-Stick. beim booten passiert nichts mit ramdrive oder weiterem einbauen. Nachdem Sie also einen Stick als aktiv markiert haben, benötigen Sie lediglich eine kleine Boot-Image-Datei (bootmgr und bootmgr.efi unter Windows, denke ich) auf dem Stick. Kein Bedarf an komplexen Werkzeugen. Ich würde eine einfache Befehlszeilenprozedur unter Linux erwarten, viel einfacher als Windows.
Red.Wave
3

Herkömmlicherweise erforderte der BIOS-Start eine spezielle unsichtbare Markierung. Hier einige Beispiele :

  • Wenn MBR-partitioniert ("Festplatte"), dann innerhalb der Partitionstabelle
  • Wenn Diskette / Super-Diskette ("ZIP-Laufwerk"), im Grunde das gesamte Laufwerk ohne Partitionstabelle formatiert, dann innerhalb der ersten paar Bytes
  • Wenn CD, dann El Torito

In diesen Fällen können Sie Dateien nicht einfach kopieren. Das resultierende Laufwerk kann nicht mehr gestartet werden, da diese speziellen Markierungen fehlen.

Der UEFI-Start ist jedoch besonders, intelligenter und behebt speziell diese Probleme. Wie immer empfehle ich, diesen Blog-Beitrag zu lesen, um UEFI eine vereinfachte Einführung zu geben. Beachten Sie insbesondere den Fallback-Boot-Abschnitt. Auch darauf wird hier etwas näher eingegangen .

Alles, was Sie dazu benötigen, ist eine Datei in einem bestimmten Pfad in einer Partition, die von der Firmware durchsucht wird. Für eine optimale Kompatibilität 1 sollte dies eine FAT32-formatierte Partition sein, die als EFI-Systempartition auf einer GPT-partitionierten Festplatte gekennzeichnet ist. Die meisten Firmware-Versionen durchsuchen jedoch auch (einzelne) Partitionen auf MBR-partitionierten und nicht-partitionierten (Superfloppy) Festplatten.

Dies bedeutet, dass Sie für den UEFI-Start nur eine FAT32 1- formatierte Einzelpartition mit einem Fallback-Starteintrag benötigen . Auf einer x86_64-Architektur bedeutet dies, dass Sie nur eine \EFI\BOOT\BOOTx64.EFIDatei benötigen . Sie können einfach von einem Flash-Laufwerk auf ein anderes kopieren, einschließlich dieser Datei, und alles sollte funktionieren.


1 FAT32 und GPT sind standardmäßig erforderlich. MBR und Superfloppy sind nicht AFAIK, aber die Unterstützung für sie ist bei Desktop-Hardware ziemlich universell. Laptop ist etwas esoterischer; Tablets sind ein Kinderspiel, und Mac EFI ist einzigartig.

2 Der UEFI-Standard erfordert FAT32-Unterstützung. Einige Firmware unterstützen möglicherweise auch NTFS (obwohl dies alles andere als garantiert ist), und Sie können tatsächlich einen NTFS-Treiber in einen FAT32-ESP einbetten.

Bob
quelle
0

Es kommt darauf an, was Sie mit "kopieren" meinen.

Kopieren und Einfügen in die GUI Ihres Betriebssystems? Nein, das funktioniert nicht - einige Dateien, die ein bootfähiger USB-Stick benötigt, werden als "versteckt" / unsichtbar betrachtet und nicht kopiert.

Es gibt Kopiertypen, die funktionieren. Dies wird oft als "Imaging" eines neuen USB bezeichnet, um vom "Kopieren" seines Inhalts zu unterscheiden. Die gebräuchlichste Methode hierfür ist ein Befehlszeilentool. Bei Bedarf stehen jedoch grafische Optionen zur Verfügung.

Das sollte Hintergrund genug sein, um Ihre Suche auf Kurs zu bringen!

Sapphon
quelle