Losetup: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 2: | Zeile 2: | ||
== Was ist ein Loop-Device? == | == Was ist ein Loop-Device? == | ||
Um auf ein Dateisystem zugreifen zu können, muss dieses als Gerät verfügbar sein | * Um auf ein Dateisystem zugreifen zu können, muss dieses als Gerät verfügbar sein | ||
* Ein '''loop device''' ist ein virtuelles Geräte, das als zugrundeliegenden Speicher eine Datei nutzt <!-- FIXME: Fuse --> | |||
* Damit ist es möglich Dateisystem-Abbilder einzubinden | |||
Ein '''loop device''' ist | |||
* | |||
== Beispiele == | == Beispiele == |
Version vom 7. Juli 2020, 14:52 Uhr
losetup (loop device setup) ermöglicht den Zugriff auf Dateisysteme in Dateien
Was ist ein Loop-Device?
- Um auf ein Dateisystem zugreifen zu können, muss dieses als Gerät verfügbar sein
- Ein loop device ist ein virtuelles Geräte, das als zugrundeliegenden Speicher eine Datei nutzt
- Damit ist es möglich Dateisystem-Abbilder einzubinden
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:
losetup /dev/loop0 beispiel.img mount /dev/loop0 /mnt/verzeichnis
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:
mount -o loop beispiel.img /mnt/verzeichnis
Ausgehängt werden kann das Gerät in beiden Fällen über den Befehl
umount /mnt/verzeichnis
Anwendungen
Informationen erhalten
- Ohne Optionen werden alle Loop-Geräte angezeigt.
- Wird nur Loop-Gerät als Argument angegeben, wird dessen Status angezeigt.
losetup [Loop-Gerät] losetup -l [-a] losetup -j Datei [-o Versatz]
Ein Loop-Gerät abhängen
losetup -d Loop-Gerät …
Alle zugehörigen Loop-Geräte abhängen
losetup -D
Ein Loop-Gerät einrichten
losetup [-o Versatz] [--sizelimit Größe] [--sector-size Größe] [-Pr] [--show] -f|Loop-Gerät Datei
- Es ist möglich, mehrere unabhängige Loop-Geräte für die gleiche zugrunde liegende Datei anzulegen. Diese Art der Einrichtung kann gefährlich sein, kann Datenverlust, Beschädigungen und Überschreibungen verursachen. Verwenden Sie während der Einrichtung --nooverlap mit --find, um dieses Problem zu vermeiden.
Größe eines Loop-Geräts ändern
losetup -c Loop-Gerät
Nutzung eines Loop-Geräts
# dd if=/dev/zero of=[../../~/file.img ~/file.img] bs=1024k count=10 # losetup --find --show [../../~/file.img ~/file.img] /dev/loop0 # mkfs -t ext2 /dev/loop0 # mount /dev/loop0 [../../mnt /mnt]
Feigabe eines Loop-Geräts
# umount /dev/loop0 # losetup --detach /dev/loop0
Image verwenden
Imagedatei auf das Gerät loop0 legen
losetup /dev/loop0 Imagedatei
Dateisystem einbinden
mount /dev/loop0 Mountpunkt
Umgebungsvariablen
LOOPDEV_DEBUG=all
- Debug-Ausgabe aktivieren
Optionen
-a, --all | zeigt den Status aller Loop-Geräte an. Beachten Sie, dass gewöhnliche Benutzer nicht auf alle Informationen zugreifen können. Siehe auch --list. Das frühere Format (wie es ohne --list ausgegeben wird) ist veraltet. |
-d, --detach Loop-Gerät … | hängt die Datei oder das Gerät aus, das dem oder den angegebenen Loop-Gerät(en) zugeordnet ist. Beachten Sie, dass der Kernel seit Linux v3.7 die »lazy device destruction« (lockere Gerätezerstörung) verwendet. Der Abhängevorgang gibt keinen EBUSY-Fehler mehr zurück, falls das Gerät aktiv vom System verwendet wird, aber es wird mit einer »autoclear«-Markierung versehen und später zerstört. |
-D, --detach-all | hängt alle zugehörigen Loop-Geräte ab. |
-f, --find [Datei] | sucht nach dem ersten ungenutzten Loop-Gerät. Wenn ein Datei-Argument vorhanden ist, wird das gefundene Gerät als Loop-Gerät verwendet. Anderenfalls wird einfach dessen Name ausgegeben. |
--show | zeigt den Namen des zugehörigen Loop-Geräts an, wenn die Option -f und das Argument Datei vorhanden sind. |
-L, --nooverlap | prüft auf Konflikte zwischen Loop-Geräten, um die Situation zu vermeiden, bei der die gleiche zugrunde liegende Datei von mehreren Loop-Geräten gemeinsam verwendet wird. Wenn die Datei bereits von einem anderen Gerät verwendet wird, dann wird das Gerät erneut verwendet, anstatt ein neues zu einzurichten. Diese Option ist nur zusammen mit --find sinnvoll. |
-j, --associated Datei -o Versatz | zeigt den Status aller Loop-Geräte an, die der angegebenen Datei zugeordnet sind. |
-o, --offset Versatz | verschiebt den Start der Daten um den angegebenen Versatz in Byte in der Datei oder dem angegebenen Gerät. Dem Versatz dürfen multiplikative Suffixe folgen; siehe oben. |
--sizelimit Größe | setzt das Ende der Daten auf nicht mehr als die angegebene Größe in Byte nach dem Anfang der Daten. Dem Versatz dürfen multiplikative Suffixe folgen; siehe oben. |
-b, --sector-size Größe | legt die logische Sektorengröße des Loop-Geräts in Bytes fest (seit Linux 4.14). Die Option darf sowohl beim Erstellen neuer Loop-Geräte als auch als einzelner Befehl zum Ändern der Sektorengröße eines bereits existierenden Loop-Geräts verwendet werden. |
-c, --set-capacity Loop-Gerät | zwingt den Loop-Treiber, die Größe der Datei neu einzulesen, der das angegebene Loop-Gerät zugeordnet ist. |
-P, --partscan | zwingt den Kernel, die Partitionstabelle auf einem neu erstellten Loop-Gerät einzulesen. Beachten Sie, dass das Einlesen der Partitionstabelle von den Sektorengrößen abhängt. Die standardmäßige Sektorengröße ist 512 Byte, anderenfalls müssen Sie die Option --sector-size zusammen mit --partscan verwenden. |
-r, --read-only | richtet ein schreibgeschütztes Loop-Gerät ein. |
--direct-io=on/off | aktiviert oder deaktiviert die direkten Ein-/Ausgaben für die zugrunde liegende Datei. Das optionale Argument kann entweder on oder off sein. Wird kein Argument angegeben, ist on die Vorgabe. |
-v, --verbose | aktiviert den ausführlichen Modus. |
-l, --list | Falls ein Loop-Gerät oder die Option -a angegeben ist, werden die Standardspalten für entweder das angegebene Loop-Gerät oder alle Loop-Geräte ausgegeben; die Vorgabe ist die Ausgabe von Informationen zu allen Geräten. Siehe auch --output,--noheadings, --raw und --json. |
-O, --output Spalte[,Spalte] … | gibt an, welche Spalten mit --list ausgegeben werden sollen. Mit --help erhalten Sie eine Liste aller unterstützten Spalten. |
--output-all | gibt alle verfügbaren Spalten aus. |
-n, --noheadings | zeigt bei der Ausgabe mit --list keine Überschriften an. |
--raw | verwendet das Rohformat für die Ausgabe mit --list. |
-J, --json | verwendet das JSON-Format für die Ausgabe mit --list. |
-V, --version | zeigt Versionsinformationen an und beendet das Programm. |
-h, --help | zeigt einen Hilfetext an und beendet das Programm. |
Multiplikatoren
Den Argumenten Größe und Versatz können die multiplikativen Suffixe KiB (=1024), MiB (=1024*1024) und so weiter für GiB, TiB, PiB, EiB, ZiB und YiB folgen (das »iB« ist optional, zum Beispiel ist »K« gleichbedeutend mit »KiB«) oder die Suffixe KB (=1000), MB (=1000*1000) und so weiter für GB, TB, PB, EB, ZB und YB.
Rückgabewert
losetup gibt 0 im Erfolgsfall und einen von 0 verschiedenen Wert bei einem Fehlschlag zurück. Wenn losetup den Status eines Loop-Geräts anzeigt, wird 1 zurückgegeben, falls das Gerät nicht eingerichtet ist und 2, falls ein Fehler aufgetreten ist, der die Statusermittlung des Geräts verhindert hat.
Dateien
/dev/loop[0..N]: Loop-Blockgeräte /dev/loop-control: Loop-Steuergerät
Interne Links
Weblinks
- Mounting a disk image using the loop device aus dem Benutzerhandbuch zu Bochs
- OSFMount - Mount Raw Disk Images in Windows
- util-linux