FSKit running example project

Hello there,

I am wanting to create a custom FSKit extension, and am trying to get the sample passthrough project running:

https://developer.apple.com/documentation/fskit/building-a-passthrough-file-system

I have just followed the basic instructions from the tutorial above, so have:

  • Selected my team for the signing certificate (required for FSKit module).
  • Built and run.
  • Enabled "Passthrough file system" under "File System Extensions".
  • Made a test directory to mount to: mkdir ~/test

But when I run the mount command, I get the following error:

mount -t passthrough ~/Documents ~/test

mount: Loading resource: The operation couldn’t be completed. (com.apple.extensionKit.errorDomain error 2.)
mount: exec /Library/Filesystems/passthrough.fs/Contents/Resources/mount_passthrough for /Users/xxxxxxxx/test: No such file or directory
mount: /Users/xxxxxxxx/test failed with 72

The contents of /Library/Filesystems/ is empty, so I don't know if allowing the extension is meant to add something to this directory or not.

Any help would be much appreciated!

Answered by josephhivo in 887192022

Hi there,

Many thanks for the response. I ended up finding the solution:

It works if I set the mount target to be any folder in the Home directory, so long as the folder is not inside one of the default folders (Eg. Documents, Desktop, Downloads, etc.)

So these work:

  • mount -t passthrough ~/Documents ~/test
  • mount -t passthrough ~/Downloads ~/test/best

But these will not work:

  • mount -t passthrough ~/Documents ~/Desktop/test
  • mount -t passthrough ~/Documents ~/Downloads/test

I tried these after restarting my computer too, so I don't know whether restarting had an effect or not.

In the sample project guide, each time the mount target is mentioned it is prefixed with "For example...", so I assumed I could use a target located elsewhere like in ~/Desktop

Regards,

IME the sample works in general. I’ve helped other folks in your situation:

  • In this thread the issue was that they’d not signed their code.
  • In this thread was the problem was cleared by a restart.

Please check those and reply back here if you continue to have problems.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Hi there,

Many thanks for the response. I ended up finding the solution:

It works if I set the mount target to be any folder in the Home directory, so long as the folder is not inside one of the default folders (Eg. Documents, Desktop, Downloads, etc.)

So these work:

  • mount -t passthrough ~/Documents ~/test
  • mount -t passthrough ~/Downloads ~/test/best

But these will not work:

  • mount -t passthrough ~/Documents ~/Desktop/test
  • mount -t passthrough ~/Documents ~/Downloads/test

I tried these after restarting my computer too, so I don't know whether restarting had an effect or not.

In the sample project guide, each time the mount target is mentioned it is prefixed with "For example...", so I assumed I could use a target located elsewhere like in ~/Desktop

Regards,

so long as the folder is not inside one of the default folders

D’oh!

So, yeah, that’s not surprising. When I read through the read me for the sample, I had a gut feeling that using the Documents folder is a mistake, and it seems that my gut was right.

Those folders are protected by MAC and you can run into all sorts of weird issues when using them for stuff like this. I have some background to this in On File System Permissions.

Thanks for the sticking with this and for closing the loop here. I’ve filed a bug against the sample’s read me suggesting that it use some other directory (r. 176624484).

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

FSKit running example project
 
 
Q