2009-04-08 12 views
8

¿Cómo creo un bucle en el sistema de archivos de Linux? Quiero romper la propiedad del gráfico acíclico dirigido (DAG) del sistema de archivos Linux. es posible? He visto esta condición una vez cuando instalé el compilador cruzado de scratchbox en mi Ubuntu.Crear un bucle en un sistema de archivos Linux

No sé cómo reproducirlo ahora.

+0

mi interpretación de esta pregunta es diferente de lo que parece que todo el mundo está respondiendo ... Estoy pensando que OP quiere una estructura de directorios infinitamente recursiva. Esto es posible crear usando enlaces duros, y quizás enlaces simbólicos, pero no sé cómo hacerlo con montaje, así que me abstendré de responder. – rmeador

+0

No se pueden enlazar directorios en un sistema de archivos UNIX "tradicional". – ephemient

+0

editó la pregunta – suresh

Respuesta

6

Algunos otros socorristas ya han respondido cómo configurar una montura utilizando el dispositivo de retroalimentación, pero usted específicamente preguntó acerca de los montajes bind, que son e un poco diferente. Si desea utilizar un montaje de vinculación, simplemente especifique --bind en el comando de montaje. Por ejemplo:

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

Esto hará que la ubicación del sistema de archivos accesible en /original/path también accesible a través de/new/path. Tenga en cuenta que esto no siguiendo los puntos de montaje! Por ejemplo, supongamos que tengo los siguientes puntos de montaje:

/something 
/something/underneath/that 

Supongamos ahora que hago un montaje para bind/something:

mount --bind /something /new_something 

voy a ser capaz de acceder a los archivos como /something/myfile través de la ruta /new_something/myfile. Pero voy a no ser capaz de acceder a archivos como /something/underneath/that/otherfile a través de la ruta /new_something/underneath/that/otherfile. Debe configurar un montaje bind por separado para cada sistema de archivos; o si tiene un relativamente nuevo, núcleo, puede utilizar rbind montajes, que do puntos de montaje del siguiente:

mount --rbind /something /new_something 

Una advertencia sobre rbind montajes: no manejan el caso en el que se monta un sistema de archivos después de la rbind es preparar. Es decir, supongamos que tengo un montaje como éste:

/something 

Entonces creé mi rbind que el anterior, y continuación montar Me /something/underneath/that: la rbind no será mágicamente hacer el nuevo montaje visible a través de la ubicación rbind. También tenga en cuenta que aparentemente debido a un error en el kernel, no puede desmontar un montaje rbind.

Además, en caso de que quería decir "¿Cómo puedo configurar montaje de vínculos utilizando el soporte (2) llamada al sistema?": Se debe especificar la bandera MS_BIND (definido en mount.h) cuando se llama mount(2) para un montaje normal bind . Para un montaje rbind, debe especificar MS_BIND y el indicador MS_REC (definido en linux/fs.h).

Espero que ayude,

Eric melski

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

donde/ruta/a/dispositivo es la ruta de acceso a la partición que desea montar, o la ruta de una imagen de disco, y/ruta/a/montaje/ubicación es la ruta de la carpeta que la posibilidad de montar el dispositivo/imagen bajo

también puede ser necesario incluir el tipo de sistema de archivos como tal (que utiliza FAT16/FAT32):

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

Parece que todas las respuestas hasta el momento están a punto de montaje en los dispositivos de bucle, y no crear un bucle usando bind mounts.

Como usted probablemente ha descubierto,

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

sólo se le permite acceder a test/test/test, y no más allá. Ni siquiera

$ mount --rbind test test/test 

obras, ya que el recurrente se unen para montaje va efectivamente a través de la búsqueda de los montajes existentes de la fuente y de consolidación en el objetivo.

Lo que ha solicitado no es posible, ya que los montajes de unión no cruzan puntos de montaje. Si realmente desea simular un bucle del sistema de archivos, intente utilizar un montaje pseudo-bind como localfs. No me he probado, puede bloquearse al intentar leer un sistema de archivos proporcionado por sí mismo. Justo ahora, traté de exportar un árbol NFS con crossmnt y montarlo debajo de sí mismo, pero falla por razones similares.

-1

También es posible que desee crear uno desde cero:

En primer lugar crear el archivo de imagen e inicializar que

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

A continuación, lo convierten en una partición válida utilizando un tipo FS de su elección

mkfs.ext3 -F /tmp/loop.img 

Monte su nueva imagen

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

Ahora puede crear/copiar archivos y directorios en su nueva imagen.

Diviértete,

Jeach!

+0

Esto ... no responde la pregunta ... – hintss

Cuestiones relacionadas