2011-05-06 59 views
1

我正在爲我正在製作的項目製作一個自定義文件系統。目前我正在用Python和fusepy編寫它,但它讓我想知道如何在Linux中編譯非用戶空間文件系統。是否有需要使用的特定庫或需要執行的函數才能使mount命令正常工作。總的來說,我不確定整個過程是如何工作的。製作一個新的文件系統

+6

我很好奇你爲什麼選擇這樣做。 :)有沒有需要現有的文件系統不符合? – corsiKa 2011-05-06 21:21:47

回答

2

是的,你會編程到內核接口,特別是至少the VFS layer編輯Better link [1]

'全' 的文件是在內核樹:http://www.mjmwired.net/kernel/Documentation/filesystems/vfs.txt。當然,熔絲內核模塊被編程爲完全相同的接口

但是,這不是你所說的庫。它是一個內核組件,它本質上是內核組件,所以內核不必知道文件系統是如何實現與其中一個協同工作的。

[1] 谷歌錯了:先打是不是最好的:)

1

總之:Linux是單內核的一些模塊的裝載能力。這意味着每個內核功能(文件系統,調度程序,驅動程序,內存管理等)都是稱爲Linux的一個大型程序的一部分。可加載模塊只是運行時鏈接的一種特殊方式,它允許用戶根據需要選擇這些功能,但它們大多仍作爲單個程序開發。

因此,要創建一個新的文件系統,只需將新的C源代碼文件添加到內核代碼中,定義文件系統必須執行的操作。然後,創建一個初始化函數,分配一個新的VFS結構實例,用適當的函數指針填充它並向VFS註冊。

請注意,FUSE只不過是一個用戶級可訪問的API來執行相同的操作,所以FUSE掛鉤對應於(大致)VFS操作。

相關問題