2009-04-08 50 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!