fuser icon indicating copy to clipboard operation
fuser copied to clipboard

macOS 15+: FSKit support

Open vanyasem opened this issue 1 year ago • 4 comments

macOS Sequoia (15+) adds an official API for user-space file systems called FSKit: https://developer.apple.com/documentation/fskit/ Would it be feasible for fuser to support it instead of relying on macFUSE on macOS 15+ targets?

Announcement article: https://eclecticlight.co/2024/06/26/how-file-systems-can-change-in-sequoia-with-fskit/ An example implementation written in Swift: https://github.com/KhaosT/FSKitSample

Apple added FSKit support to Xcode starting with version 16.1 beta Retail Xcode 16.0 lacks the support for FSKit

That would allow user-space operation on macOS without relying on FUSE-T which was proposed a few times already: https://github.com/cberner/fuser/pull/225, https://github.com/cberner/fuser/issues/273

vanyasem avatar Oct 20 '24 17:10 vanyasem

This is very recent, but I believe FSKit support has been recently added in macFUSE version 5.0.0. If this is just a library wrapper, then just adding the -obackend=fskit like mentioned here would suffice.

Or in the binding case: MountOption::CUSTOM("backend=fskit".to_string())

Edit: Just giving a small try on one of the demo does not seem to be working out of the box. Looks related to this issue: https://github.com/macfuse/macfuse/issues/1071

nicolaspapp avatar May 15 '25 17:05 nicolaspapp

Looks like there might still be a few changes required on the binding to support FSKit. I'm able to make the System Extension work but getting the following error when switching backends:

{ code: 45, kind: Uncategorized, message: "Operation not supported" }

nicolaspapp avatar May 16 '25 12:05 nicolaspapp

Just a follow up here. I'm able to run the FSKit backend in the C examples. It does still break when running the -obackend=fskit option with the rust bindings. INIT method is returning empty. My guess is that the bindings is using the kernel channel connection instead of using the callback pointers. FSKit does no longer run the kernel extension and that's why it probably is not sending any message.

@cberner are there any plans to include callbacks as an alternative to the kernel channel into the bindings?

nicolaspapp avatar Jun 30 '25 19:06 nicolaspapp

Nope. I have stopped maintaining the MacOS support

cberner avatar Jun 30 '25 19:06 cberner