Loop device
# Loop device

Unter unixoiden Systemen ist ein loop device (oder auch englisch loopback device ‚Schleifenschaltungsgerät‘) ein virtuelles Blockgerät, das keinem physischen Gerät entspricht, sondern als zugrundeliegendes Volume eine Datei nutzt. Da der Betriebssystemkernel nur Dateisysteme einhängen (mounten) kann, die sich auf Blockgeräten befinden, werden Loop-Geräte in der Regel genutzt, um Dateisysteme aus Speicherabbildern einzubinden.

Nützlich ist dieses Verfahren überall dort, wo echte Datenträger simuliert werden sollen, z. B. weil die Benutzung physischer Geräte zu teuer, zu umständlich, zu langsam oder aus anderen Gründen nicht erwünscht ist.

Mithilfe von Loop-Geräten und spezieller Treiber können auch Dateisysteme transparent komprimiert oder verschlüsselt werden, z. B. mit cloop oder dm-crypt, wobei ein virtuelles Gerät, wie ein loop device, gem. dem Unix-Grundsatz „Alles ist eine Datei“ auch auf ein physisches Gerät abgestützt sein kann.

## Beispiele

Das Einhängen eines Festplattenabbilds in den Dateibaum erfordert im Prinzip zwei Schritte:

* Die Datei, die das Festplattenabbild enthält, wird mit einem Geräteknoten (device node) im Spezialverzeichnis /dev verknüpft (Kommando losetup).
* Dieses spezielle Gerät (loop device) wird unterhalb eines Verzeichnisses in den Dateibaum eingehängt (Kommando mount).

Diese beiden Schritte können entweder getrennt erfolgen oder durch Angabe entsprechender Optionen mit einem einzigen Aufruf des Dienstprogrammes mount gemeinsam durchgeführt werden. Der erste Schritt kann mit dem Kommando losetup unter Linux oder lofiadm unter SunOS ausgeführt werden. Wenn beispiel.img eine normale Datei ist, die ein Abbild mit einem Dateisystem enthält, und /mnt/verzeichnis ein Verzeichnis auf einem Linux-Computer ist, kann der Systemverwalter (Super user) folgende Kommandos ausführen:

Das erste Kommando verknüpft den Loop-Geräteknoten /dev/loop0 mit der normalen Datei beispiel.img. Das zweite Kommando hängt dieses Pseudogerät an der Stelle /mnt/verzeichnis in den Dateibaum ein, so als wäre /dev/loop0 eine ganz normale Festplatte oder ein Festplattenabschnitt (Partition).

Das Dienstprogramm mount ist in der Lage, die gesamte Prozedur in einem einzigen Schritt ausführen:

Ausgehängt werden kann das Gerät in beiden Fällen über den Befehl

### Festplattenimages

Bei Festplattenimages im Rohformat (raw format) handelt es sich in der Regel um eine Partitionierung nach dem MBR- oder GPT-Schema. D. h. vor der eigentlichen Partition, die man mounten möchte, befindet sich der Master boot record oder die GUID partition table. Um eine Partition innerhalb des Festplattenimages dennoch mounten zu können, muss somit dem Mount-Befehl ein Offset übergeben werden, an dem die Partition beginnt. Dieser Offset kann, sofern die Festplattengeometrie des Festplattenimages bekannt ist, mit der Formel Offset = Bytes pro Block · Blöcke pro Zylinder berechnet werden oder mit folgendem Befehl ausgegeben werden („hd.raw“ steht hierbei für die Festplattenimagedatei im Rohformat):

Dieser Offset wird dann für die entsprechende Partition unter der Spalte „Start“ in Bytes aufgelistet und kann nun dem Mount-Befehl übergeben werden.

Beispiel für einen Offset von 32256 Bytes:

## Microsoft Windows

Für Windows existieren z. B. das quelloffene WinCDEmu oder die proprietäre Freeware Daemon Tools. Diese emulieren ausschließlich CD- bzw. DVD- bzw. Blu-ray-Laufwerke und somit – anders als das loop device – keine beliebigen Massenspeicher, wie Festplatten oder USB-Sticks. Die Daten können allerdings in verschiedenen Image-Formaten vorliegen, etwa wie sie von verschiedenen Windows-Brennprogrammen erzeugt werden. Ab Windows 8 sind ISO-Dateien ohne zusätzliche Programme direkt einbindbar.

Die Freeware OSFMount kann auch Festplatten-Images (z. B. von Unix-dd) einbinden. Ab Windows 7 kann Festplattenabbildern im Virtual-Hard-Disk-Format über die Datenträgerverwaltung ein Laufwerksbuchstabe zugewiesen werden. U. a. mit dem Hilfsprogramm VHD tool können Rohdatenabbilder in das VHD-Format konvertiert werden.

