到目前為止,我從未仔細思考過這個詞fuse
,但後來我發現確實有nofuse
。
根據我在互聯網上所做的搜索,他們沒有清楚地解釋其中的差異。fuse
和 和有什麼差別nofuse
?
例如,在性能和優勢方面與此有何fuse
不同?允許您在啟動時啟動閃存驅動器,但不允許?這就是我感興趣的地方。nofuse
nofuse
fuse
答案1
他們是兩個不同的司機。其中一個是使用 FUSE 建立的,另一個是核心模組。
FUSE 是一個框架,允許在「用戶空間」中編寫檔案系統驅動程序,即作為獨立服務而不是核心模組。這使得發展很多更容易,但代價是性能較低。
基於 FUSE 的檔案系統可能比核心中的檔案系統慢一些,因為每個操作都會經歷多次上下文切換 - 從程式到核心再到相應的 FUSE 服務(必須從設備讀取數據,因此返回到核心並再次輸出),然後內核再次處理回复並將其傳遞給您的進程。與也作為服務運行的資料庫相比,它沒有什麼特別的,但與直接作為核心一部分運行的檔案系統相比,它確實使速度變慢。
然而,基於FUSE 的驅動程式(如exfat-fuse)可以安裝,無論目前運行的核心如何(該介面專門是為了穩定),相比之下,基於核心的驅動程式(如ZFS)必須適應每個新的主要核心版本和此模組必須為每個次要版本單獨重新編譯(通常在使用者的電腦上)。
因此,對於尚未成為 Linux 核心一部分的檔案系統(無論出於何種原因),使用 FUSE 是一種常見的選擇,因為它使驅動程式更易於編寫和更容易部署——這就是 exfat-fuse 變得普遍使用的原因。 (由於驅動程式是普通程序,FUSE 還可以輕鬆建立自訂檔案系統,如 sshfs、ftpfs 或 wikipediafs。)
不過,此時「exfat-nofuse」套件已經過時了(好吧,兩個都其中已過時),因為當前的核心版本有一個內建exFAT 驅動程序,因此不再需要任何外部驅動程式。
同樣,「ntfs-3g」NTFS 驅動程式也是基於 FUSE 的,儘管它可能在某個時候被新的核心「ntfs3」驅動程式所取代。
答案2
從fuse(8)
:
FUSE(使用者空間中的檔案系統)是使用者空間程式將虛擬檔案系統匯出到 Linux 核心的簡單介面。 FUSE 還旨在為非特權使用者提供一種安全的方法來建立和掛載自己的檔案系統實作。
, 表示它nofuse
純粹由核心模組處理。
答案3
您的核心有一種與硬體對話的方法。此方法(以及核心本身)在 Ring 0 中運行,這意味著它具有特權。檔案系統代碼可以包含 rootkit。此外,您必須是 root 才能安裝實作檔案系統驅動程式的核心模組。您還必須是 root 才能設定掛載點。
FUSE 表示檔案系統驅動程式在使用者空間中運作。核心中的模組橋接以普通使用者身分執行的程式碼。這意味著漏洞的影響範圍更小、更普遍。 FUSE 驅動程式的新手實作將依賴與其他 FUSE 驅動程式相同的核心橋。
這裡你的發行版提供了兩種 exfat 方法,一種是基於核心的,一種是在 FUSE 中。