В чем разница от exfat-fuse и exfat-nofuse?
До сих пор я никогда не задумывался над этим словом, но потом увидел, что оно есть.
Судя по поискам в Интернете, они не дают четкого объяснения разницы. В чем разница между и ?
Например, что по сравнению с этим с точки зрения производительности и преимуществ?nofuse
позволяет запустить флешку во время загрузки иfuse
нет? Вот что меня интересует.
3 ответа
Это два разных водителя. Один из них создается с помощью FUSE, другой — модуль ядра.
FUSE — это платформа, которая позволяет писать драйверы файловой системы в «пространстве пользователя», то есть как отдельные службы, а не как модули ядра. Это значительно упрощает разработку за счет снижения производительности.
Файловые системы на основе FUSE могут работать несколько медленнее, чем встроенные в ядро, поскольку каждая операция проходит через несколько переключений контекста — от вашей программы к ядру и соответствующему сервису FUSE (который должен считывать данные с устройства, поэтому обратно в ядро и out), то ответ снова обрабатывается ядром и доставляется вашему процессу. В этом нет ничего особенного по сравнению, например, с базами данных, которые также работают как службы, но это замедляет работу по сравнению с файловыми системами, которые работают непосредственно как часть ядра.
Однако драйверы на основе FUSE, такие как exfat-fuse, могут быть установлены независимо от текущего ядра (интерфейс специально предназначен для стабильности), по сравнению с драйверами на основе ядра, такими как ZFS, которые необходимо адаптировать к каждой новой основной версии ядра и модуль необходимо перекомпилировать отдельно для каждой минорной версии (часто на машине пользователя).
Таким образом, для файловых систем, которые (пока) не являются частью ядра Linux (независимо от причины), использование FUSE является распространенным выбором, поскольку оно упрощает написание и развертывание драйвера — именно поэтому exfat-fuse стал широко использоваться. (Поскольку драйверы представляют собой обычные программы, FUSE также позволяет легко создавать собственные файловые системы, такие как sshfs, ftpfs или wikipediafs.)
Однако на данный момент пакет exfat-nofuse устарел (ну, оба они устарели), поскольку текущие версии ядра имеют встроенный драйвер exFAT, поэтому ни один из внешних драйверов больше не нужен.
Аналогичным образом, драйвер NTFS «ntfs-3g» также основан на FUSE, хотя в какой-то момент он, вероятно, будет заменен новым встроенным в ядро драйвером «ntfs3».
Отfuse(8)
:
FUSE (Файловая система в пользовательском пространстве) — это простой интерфейс для программ пользовательского пространства для экспорта виртуальной файловой системы в ядро Linux. FUSE также стремится предоставить непривилегированным пользователям безопасный метод создания и монтирования собственных реализаций файловой системы.
The nofuse
, означает, что он обрабатывается исключительно модулем ядра.
У вашего ядра есть метод взаимодействия с оборудованием. Этот метод (и само ядро) работает в кольце 0, что означает его привилегированность. Код файловой системы может содержать руткит. Более того, вам необходимо иметь права root, чтобы установить модуль ядра, реализующий драйвер файловой системы. Вы также должны быть пользователем root, чтобы настроить точку монтирования.
FUSE означает, что драйвер файловой системы работает в пользовательском пространстве. Модуль в ядре соединяет код, который выполняется от имени обычного пользователя. Это означает, что след уязвимости меньше и более универсален. Начинающая реализация драйвера FUSE будет опираться на тот же мост ядра, что и любой другой драйвер FUSE.
Здесь ваш дистрибутив предоставляет два метода для exfat: один на основе ядра, другой в FUSE.