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

6385
zar

Ich dachte, es wäre eine Art dumme Frage, aber eine Suche mit Google scheint darauf hinzudeuten, dass es nicht einmal möglich ist, Daten auf einem bootfähigen Laufwerk auf einen anderen USB-Stick zu kopieren / einzufügen. Aber selbst wenn wir es kopieren konnten, warum sollte es nicht funktionieren? (das erstellt ein doppeltes bootfähiges Laufwerk)

36
Was meinst du mit "Kopieren / Einfügen"? Offensichtlich müssen Sie die Teile kopieren, die * sie * tatsächlich zu einem startfähigen Laufwerk machen (wie dem Bootloader usw.), aber es gibt keinen Grund, warum dies nicht funktionieren sollte. Jörg W Mittag vor 5 Jahren 2

4 Antworten auf die Frage

56
K7AAY

Durch einfaches Kopieren der Dateien wird kein startfähiges Laufwerk erstellt. Es sind nicht nur die Dateien auf einem USB-Flashlaufwerk, die das Booten ermöglichen, sondern auch die Konfiguration der Partitionstabelle, die Metadaten über die Organisation des Laufwerksinhalts, die einem PC mitteilen, ob er bootfähig ist, und ob es sich um MBR oder GPT handelt .

Wie bei cyberciti.biz festgestellt :

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 zum Bereitstellen von Datenträgern auf dem System verwendet werden.

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

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

Eigentlich brauchen Sie nicht einmal `dd`: einfach` cp` erledigt die Arbeit - verwenden Sie es einfach auf dem Geräteknoten anstelle von Dateisysteminhalten. Ruslan vor 5 Jahren 15
Das ist überraschend. Oder vielleicht nicht. Aber zumindest für mich. Jörg W Mittag vor 5 Jahren 0
'cat <source> destination' funktioniert gut, da das Ziel kein Schütze ist als die Quelle. ysdx vor 5 Jahren 1
@JoL Du hast den (jetzt gelöschten) Kommentar von Jörg nicht gesehen. Meine war eine Antwort auf seine Behauptung, dass "cp" einfach den Geräteknoten kopieren würde. Um Verwirrung zu vermeiden, habe ich jetzt auch meinen Kommentar gelöscht. Ruslan vor 5 Jahren 0
21
phuclv

Beim Kopieren werden nur Dateien in formatierten Partitionen kopiert. Sie können keine für den Startvorgang erforderlichen Dinge ausführen, wie das Festlegen der Startflags, das Schreiben des Bootloaders oder manchmal das Kopieren normaler Dateien an die richtige Stelle (read: sector) in der Partition und das Festlegen der Attribute der Dateien / Berechtigungen. Wenn Sie nicht das Glück haben, diese Dinge zur Verfügung zu haben, aufgrund einer vorherigen Erstellung eines Startdatenträgers, eines Formatierungstools, das den Bootloader in den MBR schreibt, usw., müssen Sie weitere Schritte ausführen, um den Datenträger 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 vorhanden ist . Wenn ja, wird der Sektor geladen und die Steuerung an den Bootloader im MBR übertragen. Der MBR beschreibt die Partitionskonfiguration, daher kann sie nicht in der Partition liegen und kann nicht mit normalen Tools kopiert werden.

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 oftmals in Regionen außerhalb der Trennwände abgelegt . Einige mögen es in den EBR aufnehmen, 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. Wenn Sie also die Partitionen nicht richtig ausrichten, gibt es keinen Platz für grub, um den Boot-Code einzugeben, was zu Fehlern beim Einbetten führt

Viele Bootloader wie LILO oder alte Windows / DOS-Bootloader enthalten auch Hartcode- Informationen im MBR, wie die Position der nächsten Stufe oder der Systemdateien. Sie funktionieren nicht durch Lesen der Partitionsdaten, sondern lesen stattdessen einige hartcodierte Sektoren, da zu viel Code erforderlich ist, um das Dateisystem zu analysieren, das sehr schwierig ist, in winzige Bereiche wie die MBR- oder Post-MBR-Lücke zu quetschen. Sogar Grub unterstützt eine solche harte Codierung . Das bedeutet, dass sich einige Systemdateien Sektor für Sektor genau am Ort befinden müssen, was mit einer normalen Kopie nicht möglich ist. Aus diesem Grund sehen Sie "nicht bewegliche Systemdateien". Bei der Ausführung von Windows-Defragmentierungsprogrammen oder beim Verkleinern von Dateisystemen ist dies manchmal nicht unbedingt korrekt, da Windows nur zu viel Angst hat, diese Dateien zu verschieben, obwohl moderne Bootloader viel intelligenter sind und sich nicht für solche Dinge interessieren.

Schließlich müssen Sie auch die Bootpartition als aktiv festlegen, damit der Bootloader wissen kann, was zu booten ist. Dies muss durch ein Partitionierungswerkzeug oder durch manuelles Bearbeiten des Hex-Sektors erfolgen, da es sich auch außerhalb des Partitionsbereichs befindet.


In UEFI ist es viel einfacher. Es kennt FAT-Dateisysteme (und noch mehr Dateisysteme bei nicht standardmäßigen Implementierungen). Daher werden Boot-Dateien in der EFI-Systempartition AKA ESP gespeichert . Die UEFI lädt die * .efi-Anwendungen in das ESP, wodurch die Betriebssysteme geladen werden.

Die UEFI-Firmware unterstützt das Starten von Wechseldatenträgern wie USB-Flash-Laufwerken. Zu diesem Zweck muss ein Wechseldatenträger mit einem FAT12-, FAT16- oder FAT32-Dateisystem formatiert werden, während ein Bootloader gemäß der standardmäßigen 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 das ESP kopieren und die Systemdateien im richtigen Ordner ablegen. 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 geschehen. Insbesondere muss der Partitionstyp in MBR von 0Ch / 0Bh / was auch immer in EFh und in GPT in C12A7328-F81F-11D2-BA4B-00A0C93EC93B geändert werden, da das ESP nicht FAT12 / 16/32, sondern ein unabhängiges Dateisystem ist die FAT-Dateisystemfamilie


Und es gibt noch viele andere Partitionierungsschemata wie BSD-Plattenlabel oder APM, die zum Booten unterschiedlich modifiziert werden müssen. Oder die USB-Sticks wurden möglicherweise ohne eine Partitionstabelle formatiert (AFAIK Windows macht dies standardmäßig), weshalb es unterschiedlich sein kann, diese bootfähig zu machen. Es gilt jedoch dasselbe Limit: Sie müssen nicht partitionierte Bereiche ändern

Das ist die richtige Antwort. Margaret Bloom vor 5 Jahren 1
Es ist die * gründlichste * Antwort, ja, aber ich glaube nicht, dass sie korrekter ist als die akzeptierte Antwort, die von der IMO auf einfache Weise beantwortet wird. Ian Kemp vor 5 Jahren 0
@IanKemp das Problem mit der akzeptierten Antwort ist nicht, dass es einfach ist (das ist gut), sondern dass es im besten Fall technisch mehrdeutig ist :) Margaret Bloom vor 5 Jahren 0
3
Bob

Normalerweise erforderte das BIOS-Boot einen speziellen unsichtbaren Marker. Hier einige Beispiele :

  • Wenn MBR-partitioniert ("Festplatte"), dann innerhalb der Partitionstabelle
  • Bei Floppy / Superfloppy ("ZIP-Laufwerk") wird grundsätzlich 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 ist nicht startfähig, da diese speziellen Markierungen fehlen.

Allerdings ist UEFI - Boot - Spezial, intelligenter und befasst sich speziell mit diesen Fragen. Wie immer empfehle ich, diesen Blogbeitrag für eine vereinfachte Einführung in UEFI zu lesen . Beachten Sie besonders den Fallback-Boot-Abschnitt. Dies wird auch hier etwas ausführlicher besprochen .

Dazu benötigen Sie lediglich eine Datei in einem bestimmten Pfad in einer Partition, die von der Firmware durchsucht wird. Für eine optimale Kompatibilität 1, ja, sollte dies in einer GPT-partitionierten Festplatte als EFI - Systempartition markierte eine FAT32-formatierte Partition sein. Die meiste Firmware durchsucht jedoch auch (einzelne) Partitionen auf MBR-partitionierten und nicht partitionierten (Superfloppy) -Datenträgern.

Das bedeutet, dass Sie für den UEFI-Start wirklich nur eine FAT32 1- formatierte Einzelpartition mit einem Fallback-Starteintrag benötigen . Bei 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 werden vom Standard benötigt. 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 Gewinnspiel, und Mac EFI ist einzigartig.

2 Der UEFI-Standard erfordert die Unterstützung von FAT32. Möglicherweise unterstützt einige Firmware auch NTFS (obwohl dies bei weitem nicht garantiert ist), und Sie könnten tatsächlich einen NTFS-Treiber in ein FAT32-ESP einbetten.

0
Sapphon

Es hängt davon ab, was Sie mit "Kopie" meinen.

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

Es gibt Kopiertypen, die funktionieren werden. Dies wird oft als "Imaging" eines neuen USB bezeichnet, um ihn vom "Kopieren" zu unterscheiden. Die gebräuchlichste Methode hierfür ist ein Befehlszeilentool. Grafische Optionen sind jedoch verfügbar, wenn Sie sie benötigen.

Das sollte genug Hintergrund sein, um Ihre Suche auf den richtigen Weg zu bringen!