Wie werden ISOs und andere Image-Dateitypen unter Linux gemountet?

Veröffentlicht: 2018-09-06

Mussten Sie jemals den Inhalt einer Bilddatei überprüfen? Vielleicht haben Sie vergessen, welche Version dieser Linux-Distribution das war. Es kann viele Gründe geben, ein Image doppelt zu überprüfen, aber wie macht man das, ohne es zu brennen? Finden wir es heraus, es ist keine zusätzliche Software erforderlich.

Jeder technisch versierte Linux-Benutzer sollte mit dem Mount- Befehl vertraut sein. Es ist ein sehr wichtiger Teil der allgemeinen Systemadministration. Aber viele wissen nicht, dass der Mount- Befehl tatsächlich viel mächtiger ist, als es auf den ersten Blick scheint.

Mounten von Image-Dateien in Linux

Wir können nicht nur ISO-Images, sondern sogar Images von Festplatten mit Partitionen schnell und einfach mounten.

Hier ist schnell ein Beispiel für das Mounten einer ISO-Datei.

mount -o loop disk_image.iso /path/to/mount/dir

Hier dient das Flag -o zum Übergeben von Mount-Optionen, und in diesem Fall teilen wir mount mit, dass wir das Image mithilfe eines Loopback-Geräts mounten möchten. Ein Loopback-Gerät ist ein wirklich nettes Konzept, das entwickelt wurde, um beim Mounten von Bilddateien zu helfen. Ein Loopback-Gerät ist ein Software-Pseudogerät, das als Mittelsmann fungiert und es dem System ermöglicht, die Datei so zu behandeln, als wäre es ein Blockgerät wie ein CD-ROM-Laufwerk, eine Festplatte usw. Dadurch haben wir viel mehr Flexibilität beim Umgang mit der Datei, z. B. das Ausführen von Dateisystemfunktionen (die davon ausgehen, dass ein zugrunde liegendes Blockgerät vorhanden ist) .

Das ist ziemlich cool, aber wer verwendet überhaupt noch ISOs, oder? Nun, Mount kann noch einiges mehr. Wenn Sie eine Image-Datei einer Festplatte haben (wie sie von dd oder etwas Ähnlichem stammt) , nennen wir sie hdd.img, dann können Sie die darin enthaltenen Dateisysteme tatsächlich auch mounten. Und wenn Sie vermuten, dass wir wieder ein Loopback-Gerät verwenden müssen, sind Sie auf dem richtigen Weg.

Aber wenn du das versuchst …

mount -o loop hdd.img /path/to/mount/dir

du wirst nicht viel glück haben.

Das liegt daran, dass die meisten Festplatten Partitionstabellen haben. CDs und DVDs haben normalerweise keine Partitionstabellen, da dies nicht zu ihren Anwendungsfällen passt. Wenn mount mit dem Mounten eines Volumes beginnt, erwartet es, auf ein Dateisystem zu stoßen, nicht auf eine Partitionstabelle.

Das heißt aber nicht, dass es nicht machbar ist. Um das Dateisystem zu mounten, müssen wir mount mitteilen, wo es sich in der Image-Datei befindet, mit einer Information, die an die Mount-Optionen übergeben wird. Die für mount erforderliche Information ist der Offset der Partition, dh die Anzahl der Bytes in der Image-Datei, wo die Partition beginnt . Es gibt verschiedene Möglichkeiten, das herauszufinden, aber fdisk erledigt die Arbeit für Sie.

fdisk -l hdd.img

Angenommen, fdisk teilt uns mit, dass der Startsektor 100 ist (dies ist nur ein Beispiel, es ist höchst unwahrscheinlich, dass dies in Ihrem speziellen Fall richtig ist) . Was wir jetzt tun müssen, ist diese Sektornummer zu nehmen und sie mit der Sektorgröße der Festplatte zu multiplizieren, von der das Image aufgenommen wurde, dies wird (höchstwahrscheinlich) 512 Bytes auf älteren Laufwerken und möglicherweise 4096 (4K) auf neueren sein. aber Sie sollten dies immer überprüfen, wenn Sie Laufwerke klonen (vielleicht fügen Sie es zur Sicherheit in den Dateinamen ein) . Die Sektorgröße ist die Anzahl der Bytes pro Sektor.

Wir gehen der Einfachheit halber von einer Sektorgröße von 512 Bytes aus, und das würde uns einen Offset von 51.200 geben. Dieser Offset ist die Anzahl der Bytes im Bild, wo das Dateisystem beginnt. Wenn wir das wissen, können wir mount genau sagen, wo das Dateisystem zu finden ist.

mount -o ro,loop,offset=51200 hdd.img /path/to/mount/dir

HINWEIS: Ich habe diesem Beispiel auch die Option ro hinzugefügt, um zu zeigen, wie Sie ein Dateisystem als schreibgeschützt einhängen können. Dies ist besonders nützlich in forensischen Anwendungen, bei denen Sie die Datenintegrität aus Sicherheits- oder sogar rechtlichen Gründen nicht beeinträchtigen können. Häufig wird eine Image-Datei von der Festplatte mit einem speziellen Adapter namens Write-Blocker erstellt, der buchstäblich alle Schreibbefehle blockiert und nur Lesebefehle zulässt.

Das ist ziemlich viel Arbeit mit Mathematik und allem, aber es muss einen einfacheren Weg geben, oder? Das hängt davon ab, wie neu eine Linux-Distribution ist, die Sie verwenden, aber alles aus den letzten fünf Jahren oder so sollte keine Probleme haben.

Das Tool loosetup dient zum Einrichten von Loopback-Geräten. Sie fragen sich vielleicht, warum Sie ein Loopback-Gerät manuell einrichten möchten, wenn mount das alles für Sie erledigt. Erinnern Sie sich, wie mount wegen dieser lästigen Partitionstabelle nicht das gesamte Disk-Image mounten wollte? Nun, da die Partitionstabelle die gesamte Mathematik darüber enthält, wo sich Partitionen befinden (wo fdisk alle Informationen erhält) , wäre es viel einfacher, das System stattdessen darauf verweisen zu lassen. Wir können einfach ein Loopback-Gerät für das gesamte Disk-Image erstellen und dann das System anweisen, auf dem neu erstellten Loopback-Gerät nach Partitionen zu suchen.

losetup -f hdd.img

HINWEIS: Das an losetup übergebene Flag -f weist es einfach an, ein Loopback-Gerät mit einem noch nicht verwendeten Namen zu erstellen, z. B. /dev/loop1 , wenn /dev/loop0 bereits verwendet wird . Alternativ können Sie einen Gerätenamen wie /dev/loop0 übergeben, wenn dieses Gerät nicht existiert, wird losetup es erstellen, wenn ja, wird es der neu festgelegten Image-Datei neu zugewiesen.

Wenn der Befehl erfolgreich ist, sehen Sie das neu erstellte Loopback-Gerät unter /dev/ . Jetzt können Sie verwenden

partprobe /dev/loopback0

oder

kpartx -u /dev/loopback0

wenn Sie partprobe bzw. kpartx installiert haben. Parted sollte jedoch auf den meisten modernen Linux-Distributionen installiert werden.

Sobald dies erledigt ist, sollten Sie etwas wie /dev/loop0p1 in /dev/ sehen. Dies ist Ihre Partition, die Sie dann einfach einhängen können.

mount /dev/loop0p1 /path/to/mount/dir

Wie Sie wahrscheinlich feststellen werden, ist kein Loopback erforderlich. Denn darum haben wir uns bereits gekümmert.

Wir können dies jedoch noch einfacher machen, indem wir losetup ein einzelnes Flag hinzufügen.

losetup -f -P hdd.img

Das von uns verwendete -P -Flag weist losetup tatsächlich an, den Kernel die Partitionstabelle scannen zu lassen, sodass wir mit dem Mounten der gewünschten Partition fortfahren können.

Mit dem Obigen können Sie eine Vielzahl von Disk-Images mounten. Dabei spielt es keine Rolle, ob sie von optischen Medien, USB-Sticks, MBR-Partitionierung oder GPT stammen. Der Linux-Kernel kann mit so vielen verschiedenen Partitionstabellen und Dateisystemen umgehen, dass Sie es schwerer haben werden, etwas zu finden, das er nicht unterstützt.

Sicher, es könnte Tools geben, die das viel einfacher machen, aber wo bleibt der Spaß dabei? Ich habe diese Techniken bei der Datenwiederherstellung und der allgemeinen Systemadministration eingesetzt, und wie jede Art von Wissen ist es bei Bedarf äußerst wertvoll.

Lassen Sie uns in den Kommentaren unten wissen, ob Sie irgendwelche Tricks haben, die diese ergänzen würden.

Lesen Sie auch: