До сих пор я никогда не задумывался над этим словом 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 «ntfs-3g» также основан на FUSE, хотя в какой-то момент он, скорее всего, будет заменен новым встроенным в ядро драйвером «ntfs3».
решение2
Отfuse(8)
:
FUSE (Filesystem in Userspace) — это простой интерфейс для программ пользовательского пространства для экспорта виртуальной файловой системы в ядро Linux. FUSE также стремится предоставить безопасный метод для непривилегированных пользователей для создания и монтирования собственных реализаций файловой системы.
Символ nofuse
, означает, что он обрабатывается исключительно модулем ядра.
решение3
У вашего ядра есть метод общения с оборудованием. Этот метод (и само ядро) работает в Ring 0, что означает, что он является привилегированным. Код файловой системы может содержать руткит. Более того, вам нужно быть root, чтобы установить модуль ядра, реализующий драйвер файловой системы. Вам также нужно быть root, чтобы настроить точку монтирования.
FUSE означает, что драйвер файловой системы работает в пользовательском пространстве. Модуль в ядре подключается к коду, который выполняется как обычный пользователь. Это означает, что след уязвимости меньше и более универсален. Реализация драйвера FUSE для новичков будет полагаться на тот же мост ядра, что и любой другой драйвер FUSE.
Здесь ваш дистрибутив предоставляет два метода для exfat: один основан на ядре, а другой — в FUSE.