Frage

Wie kann ich eine Schleife im Dateisystem Linux erstellen? Ich möchte den gerichteten azyklischen Graphen (DAG) Eigenschaft des Linux-Dateisystem brechen. Ist das möglich? Ich habe diesen Zustand einmal gesehen, als ich die scratchbox Cross-Compiler auf meinem Ubuntu installiert.

Ich weiß nicht, wie es jetzt zu reproduzieren.

War es hilfreich?

Lösung

Einige andere Responder bereits beantwortet, wie eine Halterung mit dem Loopback-Gerät einzurichten, aber Sie speziell über bind Halterungen gefragt, die ein wenig anders sind. Wenn Sie eine Bindung verwenden möchten montieren, geben Sie einfach --bind in der Mount-Befehl. Zum Beispiel:

mount --bind /original/path /new/path

Dies wird die Position im Dateisystem zugänglich /original/path auch zugänglich durch /new/path machen. Beachten Sie, dass dies nicht folgende Einbindungspunkte! Angenommen, ich folgende Einbindungspunkte haben:

/something
/something/underneath/that

Nehmen wir nun an, ich bind für /something montieren machen:

mount --bind /something /new_something

ich in der Lage sein, Dateien über den Pfad /something/myfile wie /new_something/myfile zuzugreifen. Aber ich will nicht können Dateien zugreifen wie /something/underneath/that/otherfile über den Pfad /new_something/underneath/that/otherfile. Sie müssen eine separate bind Halterung für jedes Dateisystem einzurichten; oder wenn Sie einen relativ neuen Kernel haben, können Sie rbind Halterungen verwenden, die Sie folgen Einhängepunkte:

mount --rbind /something /new_something

Eine Warnung über rbind Mounts: sie den Fall nicht behandeln, in denen ein Dateisystem gemountet wird, nachdem die rbind Setup ist. Das heißt, nehme ich an eine Halterung wie folgt aus:

/something

Dann habe ich meine rbind wie oben auf, und und I montieren /something/underneath/that: die rbind wird nicht auf magische Weise die neuen sichtbar durch die rbind Lage montieren machen. Beachten Sie auch, dass offenbar aufgrund eines Fehlers im Kernel, man kann nicht eine rbind montieren aushängen.

Auch für den Fall, Sie meinten: „Wie richte ich Bind Mounts die Halterung (2) Systemaufruf?“: Sie haben die MS_BIND Flag angeben müssen (definiert in mount.h), wenn Sie mount(2) für eine regelmäßige bind nennen montieren. Für eine rbind montieren, müssen Sie MS_BIND und die undocument MS_REC Flag (definiert in linux/fs.h) angeben.

Ich hoffe, das hilft,

Eric Melski

Andere Tipps

Es sieht aus wie alle Antworten so weit über die Montage auf Loopback-Geräte sind, und nicht um eine Schleife zu schaffen mit bind Mounts .

Wie Sie wahrscheinlich entdeckt haben,

$ mkdir -p test/test
$ mount --bind test test/test

können Sie nur test/test/test zugreifen zu können, und nicht weiter. Nicht einmal

$ mount --rbind test test/test

funktioniert, weil die rekursive bind-mount geht effektiv durch an der Quelle vorhandene Halterungen zu finden und sie in der Zielbindungs.

Was haben Sie gefragt ist nicht möglich, da Bind Mounts nicht Einhängepunkte überqueren. Wenn Sie wirklich eine Dateisystem-Schleife simulieren wollen, versuchen Sie eine verwenden pseudo-bind montieren wie localfs . Ich habe mich nicht versucht, kann es einsperren, wenn sie versuchen, ein Dateisystem von selbst zur Verfügung gestellt zu lesen. Gerade jetzt habe ich versucht, einen NFS-Baum mit crossmnt exportieren und sie unter sich selbst montiert werden, aber nicht aus ähnlichen Gründen.

mount /path/to/device /path/to/mount/location -o loop

wobei / path / to / Gerät ist der Weg, um entweder die Partition, die Sie montieren möchten, oder den Pfad zu einem Disk-Image und / path / to / mount / Standort ist der Pfad zu dem Ordner, den Sie wollen, dass die Montage Gerät / Bild unter

Sie müssen unter Umständen auch die Art des Dateisystems wie so enthalten (die FAT16 / FAT32 verwendet):

mount /path/to/device /path/to/mount/location -o loop -t vfat

Sie können auch einen wollen von Grund auf neu erstellen:

Zuerst die Image-Datei erstellen und initialisieren es

dd if=/dev/zero of=/tmp/loop.img bs=1024k count=$IMG_SIZE

Als nächstes stellen Sie eine gültige Partition einen FS-Typ Ihrer Wahl mit

mkfs.ext3 -F /tmp/loop.img

Mount Ihr neues Bild

mkdir -p /mnt/image
mount /tmp/loop.img /mnt/image -o loop

Sie können jetzt erstellen / Kopieren von Dateien und Verzeichnisse in Ihrem neuen Bild.

Haben Sie Spaß,

Jeach!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top