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.