Code Monkey home page Code Monkey logo

fuse-t's Introduction

Abstract

FUSE-T is a kext-less implementation of FUSE for macOS that uses NFS v4 local server instead of a kernel extension.
The main motivation is to replace 'macfuse' project (https://osxfuse.github.io/) that implements its own kext to make fuse work. With each version of macOS it's getting harder and harder to load kernel extensions. Apple strongly discourages it thus making software distributions that use 'macfuse' difficult to install. Additionally, the 'macfuse' kext is unstable, may cause frequent system crashes and kernel lock-ups. Given those limitations many software publishers are unable to use 'macfuse' project anymore.

FUSE-T doesn't make use of kernel extension, it implements its own userspace server that converts between FUSE protocol and NFS and let macOS mount NFS volume instead of a kernel filesystem.

The main features of FUSE-T

  • Drop-in replacement for 'macfuse' (https://osxfuse.github.io/). API headers in libfuse are unchanged so there's no need to change anything in filesystem implementation. The APIs are compatible with 'macfuse' but differ from the Linux version of libfuse and this is because the 'macfuse' project was not updated in sync with the Linux version
  • Kext-less, no kernel extensions needed
  • NFSv4 protocol to better support macOS features such as extended attributes, file locks and others
  • Stable, easy to mount and unmount volumes with macOS built-in tools, no need for proprietary fusermount
  • Performance, FUSE-T offers much better performance and this is due to excellent macOS client side NFSv4 implementation

How FUSE-T works

When a filesystem issues a mount API call, libfuse launches a FUSE-T NFS server that exposes a local TCP port to the macOS mount proccess and another communication channel to libfuse. After that a macOS mount_nfs command is executed and NFS rpcs are getting called on the server. The server converts NFS rpc calls into FUSE requests that emulate original kernel-libfuse protocol. Those requests are executed in libfuse and corresponding FUSE filesystem, then the result is converted back to the macOS NFS client. After the filesystem process dies the NFS server terminates as well and it also unmounts the NFS folder mounted previously.

Other details

See wiki for more information.

Download the latest version of fuse-t:
https://github.com/macos-fuse-t/fuse-t/releases/download/1.0.33/fuse-t-macos-installer-1.0.33.pkg

if you have any questions or comments, contact me at [email protected]

Installing from brew

brew install macos-fuse-t/homebrew-cask/fuse-t

fuse-t's People

Contributors

macos-fuse-t avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.