TEXF (Version 1) is a custom Unix-like filesystem designed and built entirely from scratch. Using Go and the cross-platform FUSE library cgofuse, it can be compiled and mounted natively on Linux, macOS (using macFUSE or FUSE-T), and Windows (using WinFSP).
- Built from Scratch: Custom disk layout and logical block manager.
- Cross-Platform: Support for Linux, macOS, and Windows.
- Robust Layout: Superblock, allocation bitmaps, inode table, and data blocks.
- Complete Path Support: Supports all standard path characters, using standard Unix
/delimiters. - Symlinks & Directory Nesting: Fully supports nested directories, symbolic links, hard links count, and file modes.
- Large File Support: Single, double, and triple indirect block mapping to support massive files.
The filesystem uses 4096-byte blocks organized in sequential order:
- Block 0 (Superblock): Global volume attributes and configuration mapping.
- Blocks 1 to B_bb (Block Bitmap): Allocation status tracking for data blocks.
- Blocks B_bb+1 to B_ib (Inode Bitmap): Allocation status tracking for inodes.
- Blocks B_ib+1 to B_it (Inode Table): Contains 128-byte
Inoderecords (32 inodes per 4KB block). - Blocks B_it+1 to N-1 (Data Blocks): Direct/indirect indices, file contents, and directory entries.
Ensure you have Go installed on your system. Run make to compile the filesystem formatter and mount utilities:
makeThis builds two executables in your workspace:
mkfs.texf: Filesystem format utility.texf-mount: FUSE mounting daemon.
To format a disk image or raw partition with the TEXF filesystem:
# To format a virtual disk image:
dd if=/dev/zero of=verify_disk.img bs=4096 count=4096
./mkfs.texf verify_disk.img
# To format a physical USB stick (e.g., /dev/sda):
sudo ./mkfs.texf /dev/sdaTo mount a formatted partition or disk image:
# Create mountpoint
mkdir -p ./mnt
# Mount in the foreground with user permissions enabled:
sudo ./texf-mount /dev/sda ./mnt -f -o allow_other-f: Runs FUSE in the foreground (prevents runtime environments from reaping the daemon process).-o allow_other: Grants access permissions to regular users (such as your logged-in user profile) when mounted viasudo.
To run the automated verification script that creates an image, formats it, mounts it, reads/writes file data, verifies directory creation, check symlinks, and performs cleanup:
./verify_mount.sh