Extend native file handling in OS X (was OSXFUSE)

FUSE for macOS

FUSE for macOS

  -  6.2 MB  -  Open Source
FUSE for macOS (was OSXFUSE) allows you to extend macOS's native file handling capabilities via third-party file systems. It is a successor to MacFUSE, which has been used as a software building block by dozens of products, but is no longer being maintained.

FUSE for Mac Features
As a user, installing the FUSE for macOS software package will let you use any third-party FUSE file system. Legacy MacFUSE file systems are supported through the optional MacFUSE compatibility layer.

As a developer, you can use the FUSE SDK to write numerous types of new file systems as regular user space programs. The content of these file systems can come from anywhere: from the local disk, from across the network, from memory, or any other combination of sources. Writing a file system using FUSE is orders of magnitude easier and quicker than the traditional approach of writing in-kernel file systems. Since FUSE file systems are regular applications (as opposed to kernel extensions), you have just as much flexibility and choice in programming tools, debuggers, and libraries as you have if you were developing standard macOS applications.

How It Works
In more technical terms, FUSE implements a mechanism that makes it possible to implement a fully functional file system in a user-space program on macOS. It provides multiple APIs, one of which is a superset of the FUSE API (file system in user space) that originated on Linux. Therefore, many existing FUSE file systems become readily usable on Mac.

The FUSE for Mac OS software consists of a kernel extension and various user space libraries and tools. It comes with C-based and Objective-C-based SDKs. If you prefer another language (say, Python or Java), you should be able to create file systems in those languages after you install the relevant language bindings yourself.

The filesystems repository contains source code for several exciting and useful file systems for you to browse, compile, and build upon, such as sshfs, procfs, AccessibilityFS, GrabFS, LoopbackFS, SpotlightFS, and YouTubeFS.

  • FUSE 4.10.1 Screenshots

    The images below have been resized. Click on them to view the screenshots in full size.

    FUSE 4.10.1 Screenshot 1
  • FUSE 4.10.1 Screenshot 2

What's new in this version:

Update libfuse 3 to version 3.17.1:
- Some macOS specific features require FUSE API extensions that break compatibility with the vanilla FUSE API. Setting the compile-time flag FUSE_DARWIN_ENABLE_EXTENSIONS to 0, when building a file system, disables those API extensions. By default, the macOS specific API extensions are enabled.

Please note:
- The macOS specific libfuse 3 API extensions might not be stable, yet. This means that libfuse 3 file systems that are built for macFUSE 4.10.1 might need to be updated to work with future macFUSE releases.

Add support for arbitrary file system block sizes:
- The macOS kernel imposes no restrictions on the block size of a file system, neither should we. macFUSE supports file system block sizes between 128 B and 1 MB. The specified I/O size (-oiosize=...) is rounded down to the next multiple of the file system block size, if necessary.
- The device block size (-oblocksize=...) needs to be a power of two and may not exceed 4 KB on Intel Macs and 16 KB Apple Silicon Macs.

- Address code signing issue. The bundled download helper ksurl needs to be code signed individually to make its origin transparent. In previous releases, ksurl was only code signed indirectly as component of the update tool. For details, see #1062.
- Declare the maximum size of extended attributes. pathconf(..., _PC_XATTR_SIZE_BITS) returns the number of bits that are required to store the maximum extended attribute size in bytes, in our case 25, which equals a maximum extended attribute size of 33,554,431 bytes (~ 32 MB).