CROSSMETA File Systems for Windows. The first release of Crossmeta with 64-bit drivers for. Crossmeta 1.0.4 release with EXT4 file system support is available. Crossmeta file system drivers MindNode Lite, Ricoh aficio 1515f driver, Skrewdriver old albion. The first release of Crossmeta with 64-bit drivers for Windows. Crossmeta 1.0.4 release with EXT4 file system support is available for download from [[Files]].
Crossmeta provides BSD style POSIX file system operations to Windows programs using standard NT kernel interfaces. In addition, it has support for fork/wait for process management, and more potential to offer other Unix-like environment. It has ash shell (Almquist shell) plus tiny versions of many common UNIX utilities, sed, awk, grep, and diff etc. Crossmeta provides all these within the standard Win32 subsystem in Windows NT, without segregation.
Crossmeta Advantage
Dynamic kernel modules
Crossmeta is fully functional dynamic loadable module, that can be loaded on demand. And when not used, the complete kernel drivers can be unloaded.Just like any other dynamic loadable module, Crossmeta cannot be unloaded when applications have active references.
Not a separate subsystem in Windows
Crossmeta runs within WIN32 subsystem and supports WIN32/WIN64 binaries.
fork and wait support
Crossmeta has basic support for fork, which is efficient light-weight fork andis Copy-On-Write as in other POSIX systems.The wait() syscall can be used to harvest return status of forked processes.
Unlink of open files
Just like any other POSIX system, Crossmeta supports deletion and rename ofopen files.Only when the reference to unlinked inode becomes zero, the file gets deleted automatically.
POSIX file system operations
Since Crossmeta includes BSD VFS it supports all the standardchown, chmod, hardlinks, symbolic links, and rename, etc VFS calls in its own VFS namespace.
Mounting and Unmoung File systems
With mount/unmount on a directory the file system is best visualized as a tree, rooted as it were, at /. /dev, /usr, /home, and the other directories in the root directory are branches, which may have their own branches, such as /usr/local, and so on.
Support for file systems
Crossmeta has impressive support for following file systems
Filesystem | rw | Journal |
---|---|---|
XFS | Read/Write | Journnal (Log ver2, No support for delay-log) |
EXT2 | Read/Write | None |
EXT3 | Read/Write | No Journal |
EXT4 | Read/Write | No Journal |
ReiserFs | Read | - |
Apple HFS+ | Read | No Journal |
FUSE User mode file system
Filesystem in Userspace (FUSE) is a software interface for developing file systems in user-mode without kernel interface programming. Crossmetaprovides the same reference Linux FUSE API, so that programs can be ported with no or very little modifications.It comes with following classic 'Hello, World' sampleshello using high-level FUSE APIhello_ll using low-level FUSE APIsshfs 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.
Pseudo character devices
Crossmeta provides character devices such as
- zero
- Can be used as source of endless zero
- null
- Can be used as output sink to discard data
- loop
- a pseudo device that makes ordinary file accessible as a block device
- The windows volume devices appear as BSD style disksda0, da0s1 .. da1, .. etc
Using file images VHD
Attach or Detach of VHD image in Windows Disk management will appear as PnP disk inside Crossmeta.Other ordinary flat file images can be used as disk with loop pseud-device support and losetup command.
Crossmeta Kernel
Standard NT kernel mode file system driver with BSD VFS operations.It includes
- namecache for caching name lookups
- buffercache for directory or metadata caching
- regular files uses NT Cache manager (pagecache)
rootfs
The grandfather of UNIX file systems, FFS/UFS, serves as default root file system in Crossmeta.
winfs
The loop back filesystem in Crossmeta to access other Windows files systems NTFS, etc. Winfs automatically reflects any modification made outside Crossmeta to these native file systems.
regfs
Readonly access to NT Registry hive. With this file system the registry keys appear as directories and the registry values appear as files with binary data.
devfs
Pseudo file system to expose Crossmeta devices, /dev/null, zero, loop, da0.. etc
dmesg
Crossmeta provides the standard klog device for viewing the kernel informational or debug messages from Crossmeta.
sysctl
To retrieve kernel state and allows processes with appropriate privilege to set kernel state.The state to be retrieved orset is described using a Management Information Base' (
MIB') stylename, described as a dotted set of components.
User mapping
Crossmeta uses one-to-one mapping of NT user name (SID) to BSD passwd db file withe same username, uid, gid, and groups. Unknown names are mapped to nobody
Network
NFS file systemCrossmeta provides version 2 and 3 NFS server and client services over UDP protocol.
Summary
Crossmeta provides practical POSIX environment in Windows Environment that is easy to install and use and is available in very small memory footprint.The common UNIX utilities are hard-linked files that is less than 300KB and the Crossmeta kernel driver is also under 300KB.
Crossmeta FUSE for Windows
Crossmeta FUSE (Filesystem in Userspace) is the easiest way to port your favorite FUSE programs to Windows. It is a set of kernel-mode and user mode software that works with Crossmeta Kernel. The project home page is https://crossmeta.io
POSIX File system semantics are provided by
This means symbolic links, hardlinks, mount, etc are available readily for easy integration with your FUSE program.
Multi-threaded FUSE DLL in userspace
Hides all the complexity of interfacing with kernel-mode driver interface and provides both the popular APIs
- Fuse high-level, synchronous API
- Fuse low-level, asynchronous API.
Fuse mounts are managed in NT kernel namespace and is available to all Windows applications.
Examples
FUSE comes with following examples.hello.cThe 'Hello World' sample FUSE program shows uses the high-level API by including fuse.h. It shows how easy it is to get started. Only changes required was manual initialization, since MSVC is compiler being used here. If using MinGW cross compile environment with gcc the following is not applicable.
Changed to
hello_ll.cThe same 'Hello World' program using the FUSE Low level API by including fuse_lowlevel.h
. Once again only changes required was the manual initialzation of fuse_operations
structure.
Updated Build information from Blog
Build Environments
Uses standard Microsoft DDK Build environment that comes with compiler and necessary header files. No need to install Visual Studio Compiler. The most convenient way is to use the Microsoft DDK build environment.
Install Microsoft DDK 7.1 and start command shell with DDK build environment set to i386.
Installation
- Download [Crossmeta 2.0] (https://github.com/crossmeta/cxfuse/releases/latest)
- Extract crossmeta-fuse_2_0_1.zip to %TEMPtempcrossmeta
- Launch elevated cmd prompt (Administrator) console
- cd %TEMP%crossmeta
- Run setup.exeFollow instructions to install Crossmeta Release 2.0 software.
No reboot required
Check Crossmeta kernel is up and running
Start cxfuse service
The CROSSMETA FUSE kernel mode driver service was started successfully.
Run hello.exe with mount point in the Crossmeta namespace, which is any directory in V: drive
copy C:userusercxfuselibw2kfreei386hello.exe
From another command window
To stop the FUSE program, just issue umount /mnt
Freeware Driver Update
Summary
What Is File System
With Crossmeta FUSE for Windows, it is not only easy to port FUSE programs but also the fastest with no or minimal changes required to your existing FUSE program. Also the Crossmeta kernel provides the necessary POSIX APIs without dependency on yet another software package.