Domanda

Come faccio a creare un loop del filesystem di Linux?Voglio rompere il grafo orientato aciclico (DAG) la struttura del filesystem di Linux.È possibile questo?Ho visto questa condizione una volta quando ho installato il scratchbox cross compilatore sul mio Ubuntu.

Non so come riprodurlo ora.

È stato utile?

Soluzione

Alcuni altri soccorritori hanno già risposto come impostare un monte utilizzando il dispositivo di loopback, ma è specificamente chiesto monti bind, che sono un po 'diverso. Se si desidera utilizzare un vicolo cieco di montaggio, basta specificare --bind nel comando mount. Ad esempio:

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

Questo renderà la posizione del file system accessibile a /original/path anche accessibile attraverso /new/path. Si noti che questo non seguenti punti di mount! Ad esempio, supponiamo di avere i seguenti punti di mount:

/something
/something/underneath/that

Ora supponiamo che io faccio un supporto bind per /something:

mount --bind /something /new_something

sarò in grado di accedere ai file come /something/myfile tramite il /new_something/myfile percorso. Ma io non in grado di accedere ai file come /something/underneath/that/otherfile tramite il /new_something/underneath/that/otherfile percorso. È necessario impostare un bind separata mount per ogni file system; o se si dispone di un relativamente nuovo kernel, è possibile utilizzare cavalcature rbind, che non seguo punti di montaggio:

mount --rbind /something /new_something

Un avvertimento su supporti rbind: essi non gestiscono il caso in cui un file system è montato dopo la rbind è stato configurato. Cioè, supponiamo di avere un supporto come questo:

/something

Poi ho impostato il mio rbind come sopra, e poi monto /something/underneath/that: il rbind non sarà magicamente far montare il nuovo visibile attraverso la posizione rbind. Anche essere consapevoli del fatto che, apparentemente a causa di un bug nel kernel, non si può smontare montare un rbind.

Inoltre, nel caso in cui si intende: "Come faccio a impostare monta legano con il supporto (2) chiamata di sistema?": È necessario specificare il flag MS_BIND (definito in mount.h) quando si chiama mount(2) per un bind regolare montaggio. Per montare un rbind, è necessario specificare MS_BIND e la bandiera MS_REC undocument (definito in linux/fs.h).

Speranza che aiuta,

Eric Melski

Altri suggerimenti

Sembra che tutte le risposte finora sono circa il montaggio su dispositivi di loopback, e non la creazione di un ciclo utilizzando monta bind .

Come probabilmente avete scoperto,

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

consente solo di accedere test/test/test, e non oltre. Nemmeno

$ mount --rbind test test/test

opere, perché il ricorsiva bind-mount efficace passa attraverso la ricerca supporti esistenti sulla sorgente e vincolante l'obiettivo.

Quello che hai chiesto non è possibile, dal momento che i supporti si legano non attraversano punti di montaggio. Se davvero si vuole simulare un ciclo filesystem, provare a utilizzare un supporto pseudo-bind come localfs . Non mi sono provato, può bloccare quando si cerca di leggere un file system fornito da sé. Proprio ora, ho provato l'esportazione di un albero di NFS con crossmnt e il montaggio sotto se stessa, ma fallisce per ragioni analoghe.

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

dove / path / to / dispositivo è il percorso o la partizione che si desidera montare, o il percorso ad un'immagine del disco, e / path / to / mount / location è il percorso della cartella che si desidera montare il dispositivo / immagine sotto

potrebbe essere necessario includere il tipo di file system in questo modo (che utilizza FAT16 / FAT32):

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

Si potrebbe anche voler creare uno da zero:

Prima di creare il file di immagine e inizializzare

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

A quel punto, la rendono un valido partizione utilizzando un FS tipo di vostra scelta

mkfs.ext3 -F /tmp/loop.img

Montare la nuova immagine

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

È ora possibile creare/copiare i file e le directory nella vostra nuova immagine.

Divertirsi,

Jeach!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top