Loop Device Setup

14. Mai 2009 at 10:00

Mit einem Loop-Device kann man unter Linux nette Dinge machen: Man kann Dateien wie ein Gerät, z.B. eine Festplatte oder eine Partition (also ein Block Device) behandeln.

Normalerweise besteht eine Festplatte aus mehreren Partitionen. Diese werden uns dank udev im /dev Verzeichnis angezeigt und lassen sich mit Ihrem Namen /dev/sda1, /dev/sda2, … ansprechen.

Was aber, wenn nur ein Dump einer Partition in Form einer Datei vorliegt? Zum Beispiel wenn jemand eine komplette Kopie mit „dd if=/dev/sda3 of=/file“ erstellt hat. Hier hilft losetup.

Um eine Datei als sog. Loop-Device zu benutzen, muss es – sofern nicht schon vorhanden – erstmal erstellt werden:

dd if=/dev/zero of=/home/test bs=1M count=1k

Damit erstellen wir eine Datei mit eine Größe von 1 GB (1000 Blöcke [1k] zu je 1MB). Diese wird nun eingebunden.

losetup -f /home/test

Mit ‚losetup  -a‘ läßt sich jetzt herausfinden, welchen Gerätenamen unser Gerät nun erhalten hat, üblicherweise wird dies beim ersten Versuch /dev/loop0 sein. Man hätte übrigens mit ‚losetup -f‘ auch vorher schon nachsehen können, welches der nächste freie Gerätename ist – für Scripte ist dieser Weg wohl einfacher.

So, nun können wir /dev/loop0 benutzen wie eine normale Partition, z.B. so:

mkfs.ext3 /dev/loop0
mount /dev/loop0 /mnt
df -h /mnt

Nach dem entmounten läßt sich das Loop Device auch wieder entfernen:

umount /dev/loop0
losetup -d /dev/loop0

Damit ist unsere Datei auch wieder nur eine Datei.

Mit dem Parameter -e läßt sich übrigens auch ein verschlüsseltes Loop-Device erzeugen (z.B. losetup -e des -f file, siehe Manpage, doch nutze ich hier lieber LUKS, das in Kürze in einem Artikel erklärt wird.