Losetup: Unterschied zwischen den Versionen

Aus Foxwiki
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
<!-- FIXME: Fuse -->
* 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 eine Virtuelle Gerätedatei, die keinem physischen Gerät entspricht, sondern als zugrundeliegenden Speicher eine Datei nutzt.
 
* Loop-Geräte werden genutzt, um als Dateien vorliegende Dateisystem-Abbilder einzubinden.
** Nützlich ist dieses Verfahren überall dort, wo echte Datenträger simuliert werden sollen.
** Mithilfe von Loop Devices und spezieller Treiber können auch Dateisysteme transparent komprimiert oder verschlüsselt werden.


== 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:

  1. Die Datei, die das Festplattenabbild enthält, wird mit einem Geräteknoten (device node) im Spezialverzeichnis /dev verknüpft (Kommando losetup).
  2. 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

  1. Linux:Befehl:losetup

Weblinks

  1. Mounting a disk image using the loop device aus dem Benutzerhandbuch zu Bochs
  2. OSFMount - Mount Raw Disk Images in Windows
  3. util-linux