Früher habe ich Image-Dateien mit erstellt dd
, ein Dateisystem darauf eingerichtet mkfs
und mount
sie als gemountete Partitionen darauf zugegriffen. Später habe ich im Internet gesehen, dass viele Beispiele losetup
zuvor verwendet haben, um einen Loop-Geräteeintrag unter zu machen /dev
und ihn dann zu mounten. Ich konnte nicht sagen, warum man praktisch eine Bilddatei benötigen würde, um sich wie ein Endlosschleifengerät zu verhalten und einen eigenen /dev
Eintrag zu haben, während das gleiche Verhalten ohne den ganzen Aufwand erhalten werden kann.
Zusammenfassung: Warum muss in einem realen Szenario überhaupt ein /dev/loopX
Eintrag vorhanden sein, wenn das fs-Image nur ohne diesen bereitgestellt werden kann? Was nützt ein Loop-Gerät?
mount
klug genug ist, den Ärger für Sie zu machen. (wie Stephen Harris in seiner Antwort zeigt)Antworten:
Das Mounten muss normalerweise auf Blockgeräten erfolgen. Der Loop-Treiber fügt Ihrer Datendatei ein Block-Device-Frontend hinzu.
Wenn Sie einen Loop-Mount ohne durchführen, führt
losetup
das Betriebssystem einen im Hintergrund aus.z.B
Möglicherweise müssen Sie
losetup
direkt aufrufen, wenn in Ihrem Dateibild Partitionen eingebettet sind.zB wenn ich dieses Bild habe:
Das kann ich nicht direkt montieren
Aber wenn ich benutze
losetup
undkpartx
dann kann ich auf die Partitionen zugreifen:quelle
losetup
, nur Gebrauchmount -o loop,offset=$((512*2048))
, wo512
ist Sektorgröße, und2048
ist das, wasfdisk
als gabStart
die Partition.losetup
und schnell zu berechnenkpartx
. Lassen Sie die Werkzeuge die harte Arbeit erledigen :-)Dateisysteme erwarten, dass sie von Blockgeräten lesen und auf diese schreiben, aber Image-Dateien sind keine Blockgeräte. Loop-Geräte stellen ein Block-Gerät über eine Datei (oder ein anderes Block-Gerät, optional mit Remapping).
Beim Mounten von Images müssen in vielen Fällen keine Loop-Geräte berücksichtigt werden, da
mount
alles für Sie erledigt wird. Aber Loop-Geräte sind immer noch beteiligt.losetup -l -a
werde es ihnen zeigen.Siehe auch Was ist der Unterschied zwischen Halterung und -o loop montieren .
quelle
mount
?mount
kümmert sichlosetup
, Hinzufügen-o loop
usw.Sie scheinen unter Linux zu arbeiten und Linux verwendet einen falschen Namen für diese Funktion.
Ich habe diese Funktion 1988 unter SunOS-4.0 erfunden und nenne sie "
fbk
Datei emuliert BlocK-Gerät".Hintergrund ist, dass der Gerätetreiber ein Blockgerät über einer einfachen Datei emuliert. Sie benötigen dies, da ein Dateisystem keine einfache Datei als Hintergrundspeicher für ein Dateisystem verwenden kann. Es braucht eher ein Blockgerät und das ist es, was
fbk
emuliert.Seit einiger Zeit haben einige Leute das Programm
mount
ein bisschen schlauer gemacht und es gibt Mount-Implementierungen, die automatisch einefbk
Instanz für eine Datei erstellen, falls dasmount
Programm erkennt, dass das erwartete Argument ein Block-Gerät ist, dass es sich stattdessen um eine Plandatei handelt.quelle
lofi
Gerät ("Loopback-Datei") eingeführt, das ähnlich funktioniert. BSD führte sie unter dem Namenvnd
"vnode disk" ein, so dass das Konzept im Laufe der Jahre viele verschiedene Namen hatte.Auch wenn es nicht im Hintergrund zum Mounten von Dateisystemen aus Dateien benötigt wird, benötigen Sie es dennoch für jedes Setup, das einen Treiber oder ein Programm verwendet, das unbedingt ein Blockgerät erwartet. Denken Sie an nbd-Server (Network Block Device), zusammengesetzte Block-Gerätetreiber wie mdraid, lvm usw.
quelle