Wie / warum schreibt cat eine bootfähige ISO auf ein Gerät?

15

Ich habe kürzlich entdeckt, dass ich einen bootfähigen USB-Stick aus einer ISO-Datei erstellen kann, indem ich einfach cat(oder dd) benutze .

Ich kann keine Informationen darüber finden, wie das funktioniert. Warum sollte

cat my.iso > /dev/sdb && sync

Nehmen Sie diese Datei und schreiben Sie alle darin enthaltenen Dateien im bootfähigen Format auf ein Gerät?

Matte
quelle
Ich hätte nie gedacht, catanstelle von zu verwenden, ddwenn Sie liveUSBs machen
Rob
3
Es stand in der Anleitung zu "Tails", dem Live-Tor-Bild. Ich habe ein bisschen gegoogelt (bevor ich hier gefragt habe) und es scheint, dass dd das war, was die Leute für diese Art von Dingen verwendet haben, aber Katze scheint jetzt das bevorzugte Werkzeug zu sein. Ich denke, es ist einfacher, da Sie sich nicht die Mühe machen müssen, benannte Parameter für Ein- / Ausgabedetails anzugeben.

Antworten:

14

Eine ISO-Datei ist ein vollständiges, formatiertes Dateisystem-Image. Alles catoder ddnichts ist eine bitweise Kopie dieses Dateisystem-Images auf Ihr Zielmedium.

Hinter den Kulissen spielt sich keine Magie ab. Die Vorbereitung des ISO-Dateisystems erfolgte im Voraus (häufig mit einem speziellen Tool). Alles was Sie cattun müssen, ist diese Sammlung von Bytes herauszuschreiben. Es interpretiert das .isoüberhaupt nicht und versteht auch nicht, dass es versucht, überhaupt ein bootfähiges Wechselmedium zu erstellen.
Der Kernel und der Gerätetreiber müssen ordnungsgemäß unterstützt werden, damit das writes auf diesem Medium funktioniert. Dort geht ein bisschen "Magie" vor sich, da beschreibbare optische Medien nicht genau so funktionieren wie herkömmliche Festplatten. Diese Magie besteht jedoch nicht darin, den Inhalt der ISO-Datei zu interpretieren.

Sie können die .isoDatei direkt einhängen, ohne sie zu brennen, indem Sie einen Loop-Mount verwenden (falls auf Ihrem Betriebssystem so etwas verfügbar ist). Auf ähnliche Weise können Sie eine Datei erstellen, die beispielsweise ein ext4Dateisystem enthält, und Sie können dies catauf einer Partition tun.

Matte
quelle
1
und dann einfach sicherstellen, dass die Daten wirklich in Ihre Partition geschrieben haben (anstatt nur gepuffert)
yuyichao
@yuyichao Sync sollte das abdecken, oder? Edit: Mir ist gerade aufgefallen, dass ich auf einen 6-jährigen Kommentar geantwortet habe
Manchineel
5

Dies funktioniert, weil das ISO-Image mit verarbeitet wurde isohybrid, wodurch ein normaler Syslinux-Bootloader in das ISO-Image installiert wird. Dies ist möglich, weil iso9660 normalerweise nicht die ersten paar Sektoren des Images verwendet, sodass ein mehr oder weniger normaler Festplatten-Bootloader dort platziert werden kann. Beim Brennen auf eine optische Platte wird diese ignoriert und das BIOS startet die Platte mit der herkömmlichen el torito-CD-ROM-Startmethode. Wenn das Image auf einem Flash-Laufwerk abgelegt wird, wird der Syslinux-Bootsektor geladen.

Psusi
quelle