Bisher habe ich mich nie mit diesem Wort beschäftigt fuse
, aber dann habe ich gesehen, dass es das gibt nofuse
.
Nach meinen Recherchen im Internet wird der Unterschied nicht klar erklärt. Was ist der Unterschied zwischen fuse
und nofuse
?
Was ist beispielsweise im Hinblick auf Leistung und Nutzen fuse
anders als hier? Ermöglicht das Starten eines Flash-Laufwerks beim Booten und nicht? Das ist es, was mich interessiert.nofuse
nofuse
fuse
Antwort1
Es handelt sich um zwei verschiedene Treiber. Einer davon wird mit FUSE erstellt, der andere ist ein Kernelmodul.
FUSE ist ein Framework, das es ermöglicht, Dateisystemtreiber im „Userspace“ zu schreiben, also als eigenständige Dienste statt als Kernelmodule. Dies macht die Entwicklungvieleinfacher, auf Kosten einer geringeren Leistung.
FUSE-basierte Dateisysteme können etwas langsamer sein als solche im Kernel, da jeder Vorgang mehrere Kontextwechsel durchläuft – von Ihrem Programm zum Kernel zum entsprechenden FUSE-Dienst (der Daten von einem Gerät lesen muss, also zurück in den Kernel und wieder hinaus), dann wird die Antwort wieder vom Kernel verarbeitet und an Ihren Prozess übermittelt. Das ist nichts Besonderes im Vergleich zu Datenbanken, die beispielsweise auch als Dienste laufen, aber es macht die Dinge langsamer im Vergleich zu Dateisystemen, die direkt als Teil des Kernels laufen.
Allerdings können FUSE-basierte Treiber wie exfat-fuse unabhängig vom aktuell laufenden Kernel installiert werden (die Schnittstelle ist speziell auf Stabilität ausgelegt), im Gegensatz zu kernelbasierten Treibern wie ZFS, die an jede neue Hauptversion des Kernels angepasst werden müssen.UndDas Modul muss für jede Nebenversion separat neu kompiliert werden (häufig auf dem Computer des Benutzers).
Für Dateisysteme, die (noch) nicht Teil des Linux-Kernels sind (unabhängig vom Grund), ist die Verwendung von FUSE eine gängige Wahl, da es das Schreiben des Treibers vereinfacht.Undeinfacher zu implementieren – deshalb wird exfat-fuse häufig verwendet. (Da es sich bei den Treibern um normale Programme handelt, erleichtert FUSE auch die Erstellung benutzerdefinierter Dateisysteme wie sshfs, ftpfs oder wikipediafs.)
Zu diesem Zeitpunkt ist das Paket 'exfat-nofuse' jedoch veraltet (alsobeidevon ihnen sind veraltet), da aktuelle Kernel-Versionen eineeingebautexFAT-Treiber, daher wird keiner der externen Treiber mehr benötigt.
Ebenso basiert der NTFS-Treiber „ntfs-3g“ auf FUSE, wird jedoch wahrscheinlich irgendwann durch den neuen, im Kernel integrierten Treiber „ntfs3“ ersetzt.
Antwort2
Ausfuse(8)
:
FUSE (Filesystem in Userspace) ist eine einfache Schnittstelle für Userspace-Programme, um ein virtuelles Dateisystem in den Linux-Kernel zu exportieren. FUSE soll auch nicht privilegierten Benutzern eine sichere Methode bieten, ihre eigenen Dateisystemimplementierungen zu erstellen und zu mounten.
Das nofuse
bedeutet, dass es ausschließlich von einem Kernelmodul gehandhabt wird.
Antwort3
Ihr Kernel verfügt über eine Methode, mit der Hardware zu kommunizieren. Diese Methode (und der Kernel selbst) läuft in Ring 0, was bedeutet, dass sie privilegiert ist. Dateisystemcode kann ein Rootkit enthalten. Darüber hinaus müssen Sie Root sein, um ein Kernelmodul zu installieren, das einen Dateisystemtreiber implementiert. Sie müssen auch Root sein, um den Einhängepunkt einzurichten.
FUSE bedeutet, dass der Dateisystemtreiber im Benutzerbereich ausgeführt wird. Ein Modul im Kernel stellt eine Brücke zu Code her, der als normaler Benutzer ausgeführt wird. Dies bedeutet, dass der Platzbedarf für Sicherheitslücken kleiner und universeller ist. Eine unerfahrene Implementierung eines FUSE-Treibers wird auf dieselbe Kernelbrücke angewiesen sein wie jeder andere FUSE-Treiber.
Hier bietet Ihre Distribution zwei Methoden für Exfat, eine ist kernelbasiert, die andere ist in FUSE.