FUSE User mode file system on Windows
Filesystem in User SpacE (FUSE) is a software interface for developing file systems in user-mode without complexity of kernel interface programming. Crossmeta FUSE provides the same reference Linux FUSE API, so that programs can be ported with no or very little modifications. While it maintains the same API interface it does not inherit the limitations of transfer size and concurrent writes. It provides the following two components
- dynamically loadable fuse kernel module cxfuse.sys
- cxfuse.dll that is linked with FUSE application provides necessary implementation for interfacing with the FUSE kernel module.
Getting Started
The cxfuse user-space library offers two APIs:
- high-level, synchronous API
- low-level asynchronous API
In both cases, file system requests from the kernel are passed to the main program using callbacks. When using the high-level API, the callbacks may work with file names and paths instead of inodes, and processing of a request finishes when the callback function returns. When using the low-level API, the callbacks must work with inodes and responses must be sent explicitly using a separate set of API functions.
It comes with following classic “Hello, World” samples and real-world sshfs program on Windows
- hello using high-level FUSE API
- hello_ll using low-level FUSE API
- sshfs is a popular FUSE file system client that allows secure seamless access to remote files with standard SSH account login, as if they were local files.
Architecture
FUSE API
The high-level API that is primarily specified in fuse.h.
The low-level API that is primarily documented in fuse_lowlevel.h. You don’t have to learn any new API in Crossmeta FUSE as a true port of Linux FUSE 2.6
The Crossmeta wiki includes additional information on Crossmeta FUSE
Checkout our github project repository in cxfuse and start building your next great user mode file system.
DEPLOY & TEST
Obtain the latest Crossmeta FUSE system installer package that includes EV code signed FUSE driver modules for all Windows releases. The installer also contains the runtime Crossmeta system with additional FUSE programs sshfs and fuse-nfs.
- Extract All of the Crossmeta FUSE zip archive which also contains the setup.exe program
- Try to Run as Administrator while launching setup.exe
- The Crossmeta setup program will navigate you through the installation setups with easy to follow dialog. Usually you have to click Next
- Once the Crossmeta setup program finishes successfully the Crossmeta files will be available in the V: drive.
- There is no need to reboot the system.
- On subsequent Windows startup you have to manually start the Crossmeta drivers by typing
c:\program files\crossmeta> service_crossmeta start
- In case of unclean shutdown it is required to repair the Crossmeta root filesystem as follows
c:\program files\crossmeta> service_crossmeta check
- To unload Crossmeta drivers
c:\program files\crossmeta> service_crossmeta stop
- To uninstall the Crossmeta program
c:\program files\crossmeta> setup.exe /u