2009-04-08 72 views
8

如何在Linux文件系统中创建循环?我想打破Linux文件系统的有向无环图(DAG)属性。这可能吗?当我在我的Ubuntu上安装了scratchbox交叉编译器时,我曾经看到过这种情况。在Linux文件系统中创建循环

我不知道如何重现它。

+0

我对这个问题的解释不同于大家似乎正在回答的问题......我在想OP需要一个无限递归的目录结构。这可以创建使用硬链接,也许符号链接,但idk如何与装载,所以我不会回答。 – rmeador 2009-04-08 16:13:06

+0

您无法在“传统”UNIX文件系统中硬连接目录。 – ephemient 2009-04-08 16:32:14

回答

6

使用回送设备启动安装,但是您特别询问了有关bind安装座,其中ar有点不同。如果你想使用绑定挂载,你只需在mount命令中指定--bind即可。例如:

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

这将使系统位置在/original/path访问通过/new/path访问。请注意,这将会在安装点之后而不是!例如,假设我有以下挂载点:

/something 
/something/underneath/that 

现在假设我做一个bind挂载/something

mount --bind /something /new_something 

我将能够通过路径/new_something/myfile访问像/something/myfile文件。但我会不是能够通过路径/new_something/underneath/that/otherfile访问像/something/underneath/that/otherfile这样的文件。您必须为每个文件系统设置一个单独的bind装入;或者如果你有一个相对较新的内核,你可以使用rbind坐骑,这后续挂载点:

mount --rbind /something /new_something 

一个需要注意的有关rbind坐骑:后rbind是他们不处理一个文件系统安装的情况下建立。也就是说,假设我有一个安装这样的:

/something 

然后,我建立了我的rbind同上,然后我安装/something/underneath/that:该rbind不会神奇地让新通过rbind位置安装可见。另外请注意,显然是由于内核中的错误,您无法卸载rbind安装。

而且,万一你的意思是“我如何设置绑定安装使用mount(2)系统调用?”:当你调用mount(2)对于普通bind安装必须指定MS_BIND标志(在mount.h定义) 。对于rbind装载,您必须指定MS_BIND和非文档MS_REC标志(在linux/fs.h中定义)。

希望帮助,

埃里克Melski

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

其中/路径/到/设备是要么要装入的分区,或路径磁盘映像,和/路径的路径/到/安装/位置是路径到你的文件夹要下

来安装设备/图像,你可能还需要包括文件系统,像这样的类型(使用FAT16/FAT32):一些其他反应已经回答了如何设置

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

它看起来像所有的答案至今大约安装在环回设备,而不是创建一个使用bind mounts循环。

正如你可能已经发现,

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

只允许您访问test/test/test,并没有进一步。甚至没有

$ mount --rbind test test/test 

的工作,因为递归绑定安装有效地通过查找源上的现有坐骑并将其绑定到目标中。

由于绑定坐标不能跨越挂载点,因此您所要求的内容是不可能的。如果你真的想模拟一个文件系统循环,试试用像localfs这样的伪绑定安装。我没有尝试过自己,试图读取自己提供的文件系统时,它可能会锁定。刚才,我试着用crossmnt导出一个NFS树并将其安装在它自己的下面,但由于类似的原因失败了。

-1

您可能还需要创建一个从头开始:

首先创建映像文件并对其进行初始化

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

接下来,使其使用自己选择的FS型有效分区

mkfs.ext3 -F /tmp/loop.img 

登上你的新形象

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

您现在可以在新图像中创建/复制文件和目录。

玩得开心,

Jeach!