How to mount custom FSKit-based file system in Finder?

Hi,

I'm working with the new FSKit framework and have successfully implemented a custom file system using FSUnaryFileSystem. Mounting the file system via Terminal works perfectly — I can create, delete, and browse files and directories as expected.

Since /Volumes is protected on modern macOS systems, I cannot mount my file system there directly. Instead, I mount it into a different writable directory (e.g., /tmp/MyFS) and then create a symbolic link to it in a user-visible location such as ~/Downloads/MyFS.

Finder does see the symlink and displays it with a "Volume" icon, but clicking it results in an error — it cannot be opened. It seems like Finder does not treat the symlinked mount as a fully functional volume.

Is there a proper way to register or announce a FSKit-mounted file system so that Finder lists it as a real volume and allows access to it? Are there additional steps (APIs, notifications, entitlements, or Info.plist keys) required to integrate with Finder?

Any insight would be greatly appreciated.

Thanks!

I'm working with the new FSKit framework and have successfully implemented a custom file system using FSUnaryFileSystem. Mounting the file system via Terminal works perfectly — I can create, delete, and browse files and directories as expected.

What's the command you're actually using to mount in Terminal? Assuming the "general" mount infrastructure is correctly identifying your filesystem, then I'd expect DiskArb to be able to take care of all of this. Have you tried mounting through "diskutil", particularly the "basic" mount command of:

diskutil mount <device path>

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

Thanks for the response!

I'm currently using the plain mount command because I need to explicitly specify my custom file system (e.g., using -t myfs), which diskutil mount doesn’t support — it assumes known file system types and doesn’t allow passing a custom FS type parameter.

If I try diskutil mount /dev/disk36, it responds with “Volume(s) mounted successfully”, but as expected, the volume doesn't show up in Finder. In Disk Utility, the disk appears as “Apple read/write Media - Uninitialized”, and if I attempt to format it, my custom FSKit-based file system is not listed as an available format.

Additionally, if I try to format the disk manually using:

diskutil eraseDisk MyFS Test /dev/disk36 I get the error:

MyFS does not appear to be a valid file system format

So currently, I'm relying on mounting the FS manually via Terminal, and everything works at the file system level — but I’m still looking for a way to expose it properly to Finder as a recognized and accessible volume.

Any insight into how to achieve that — possibly by integrating with Disk Arbitration or notifying the system in another way — would be greatly appreciated.

First off, sorry for the delay getting back to you on this, I've been busy with WWDC prep.

I'm currently using the plain mount command because I need to explicitly specify my custom file system (e.g., using -t myfs), which diskutil mount doesn’t support — it assumes known file system types and doesn’t allow passing a custom FS type parameter.

If I try diskutil mount /dev/disk36, it responds with “Volume(s) mounted successfully”, but as expected, the volume doesn't show up in Finder. In Disk Utility, the disk appears as “Apple read/write Media - Uninitialized”, and if I attempt to format it, my custom

I need to look into this more. Can you file a bug on this and then post the bug number back here?

__
Kevin Elliott
DTS Engineer, CoreOS/Hardware

@nikolajpognerebko For the not appearing in Finder issue, in my experiments I saw that if you've only implemented a stub attributes(_:of:) that doesn't return some of the attributes requested, the volume might not appear in Finder. For example right now I have an implementation that returns attributes for:

  • uid
  • gid
  • mode
  • flags
  • fileID
  • type
  • size
  • accessTime
  • changeTime
  • modifyTime
  • birthTime
  • linkCount
  • parentID

and my volume appears in Finder when I navigate to where I mounted it. If I remove some of the attributes (e.g. if I don't set modifyTime) then it no longer appears. (I'm not sure the minimum set of attributes you need to support for it to appear in Finder so you might be able to get away with not implementing some of the above.)

Not sure if other things can cause this, but if you're using a dummy implementation for testing that doesn't fully implement this then this could be one thing to check.

How to mount custom FSKit-based file system in Finder?
 
 
Q