Files
markbase/docs/FUSE_INSTALLATION_VERIFICATION.md
2026-05-18 17:02:30 +08:00

5.9 KiB

FUSE-T Installation Verification Report

Date: 2026-05-17
Status: Successfully Installed and Verified


Installation Summary

Installation Command

sudo installer -pkg ~/Downloads/fuse-t-1.2.6.pkg -target /
# Password: accusys
# Result: The install was successful.

Binary Location

Found at: /Library/Application Support/fuse-t/bin/go-nfsv4

FUSE-T binary: ✓ Installed
  Path: /Library/Application Support/fuse-t/bin/go-nfsv4
NFS-T binary: ✓ Available (go-nfsv4)
Active FUSE mounts: 0

Package Structure

/Library/Application Support/fuse-t/
├── bin/
│   ├── go-nfsv4 -> go-nfsv4-1.2.6 (symlink)
│   └── go-nfsv4-1.2.6 (20MB binary)
├── lib/
│   ├── libfuse3.4.dylib
│   ├── libfuse-t-1.2.6.dylib
│   └── libfuse3.dylib
├── include/fuse3/
│   ├── fuse.h
│   ├── fuse_common.h
│   ├── fuse_lowlevel.h
│   └── ...
├── pkgconfig/
│   ├── fuse3.pc
│   └── fuse-t.pc
├── cfg/
├── LICENSE.rtf
└── uninstall.sh

Binary Verification

go-nfsv4 Options

$ "/Library/Application Support/fuse-t/bin/go-nfsv4" --help

Usage of go-nfsv4:
  --attrcache               cache attributes (default true)
  --attrcache-timeout int   non-default attribute cache timeout (sec)
  --backend string          backend (default "nfs")
  --bonjour                 advertise smb service using bonjour (default true)
  -c, --console             output logs to console
  -d, --debug               debug mode
  --dontbrowse              don't browse mount option
  -l, --listen_addr string  nfs server listen address
  --location string         location (default "fuse-t")

Backend Types Supported

  • nfs (default) - NFSv4 backend
  • fskit - FSKit backend (macOS 26+)
  • smb - SMB3 backend

MarkBase Integration

Updated Backend Detection

// src/fuse/backend.rs
pub fn detect_fuse_t_binary() -> bool {
    Path::new("/Library/Application Support/fuse-t/bin/go-nfsv4").exists()
}

pub fn get_fuse_t_path() -> Option<PathBuf> {
    if detect_fuse_t_binary() {
        Some(PathBuf::from("/Library/Application Support/fuse-t/bin/go-nfsv4"))
    } else {
        None
    }
}

Status Check

$ cargo run -- fuse status

=== FUSE Status ===
FUSE-T binary: ✓ Installed
  Path: /Library/Application Support/fuse-t/bin/go-nfsv4
NFS-T binary: ✓ Available (go-nfsv4)
Active FUSE mounts: 0

macOS version: 26.4.1
Recommended backend: fskit

Unit Test Result

$ cargo test fuse::backend::tests::test_fuse_t_binary_detection

running 1 test
test fuse::backend::tests::test_fuse_t_binary_detection ... ok
test result: ok. 1 passed; 0 failed; 0 ignored

FUSE-T vs Expected Path

Expected Path (Documentation)

  • /usr/local/bin/fuse-t Not found
  • /usr/local/bin/nfs-t Not found

Actual Path (Installed)

  • /Library/Application Support/fuse-t/bin/go-nfsv4 Found

Binary Name

  • go-nfsv4 (not fuse-t or nfs-t)
  • Version: 1.2.6
  • Size: 20MB

Reason for Difference

FUSE-T uses a unified binary (go-nfsv4) that supports multiple backends:

  • NFSv4 backend (--backend nfs)
  • FSKit backend (--backend fskit)
  • SMB3 backend (--backend smb)

Next Steps

Phase 2: Real FUSE Mount

Ready to Implement:

  1. Use /Library/Application Support/fuse-t/bin/go-nfsv4 binary
  2. Select backend (--backend nfs or --backend fskit)
  3. Implement real mount() function
  4. Test with warren user (12,659 nodes)

Mount Command Example:

# NFSv4 backend
"/Library/Application Support/fuse-t/bin/go-nfsv4" \
  --backend nfs \
  --location /tmp/test_fuse \
  /Volumes/MarkBase_test

# FSKit backend (macOS 26+)
"/Library/Application Support/fuse-t/bin/go-nfsv4" \
  --backend fskit \
  --location /tmp/test_fuse \
  /Volumes/MarkBase_test

Testing Plan

  1. Simple Mount Test

    # Create test directory
    mkdir -p /tmp/test_source
    echo "Hello FUSE" > /tmp/test_source/test.txt
    
    # Mount using FUSE-T
    cargo run -- fuse mount --user test --dir /Volumes/MarkBase_test --backend nfs
    
    # Verify
    ls /Volumes/MarkBase_test
    cat /Volumes/MarkBase_test/test.txt
    
  2. Warren User Mount

    cargo run -- fuse mount --user warren --dir /Volumes/MarkBase_warren --backend fskit
    
    # Expected: 12,659 nodes visible
    ls /Volumes/MarkBase_warren | wc -l
    
  3. Unmount Test

    cargo run -- fuse unmount --dir /Volumes/MarkBase_test
    mount | grep MarkBase  # Should be empty
    

Installation Success Criteria

Criteria Expected Actual Status
Package installed Success Success
Binary exists
Binary path Correct path /Library/.../bin/go-nfsv4
Binary size ~20MB 20MB
Version 1.2.6 1.2.6
Libraries dylib files ✓ Found
Headers fuse3/*.h ✓ Found
Unit test Pass Pass

Documentation Updates

Updated Files:

  • src/fuse/backend.rs - Added detect_fuse_t_binary() and get_fuse_t_path()
  • src/main.rs - Updated status command to use correct path
  • docs/FUSE_INSTALLATION.md - To be updated with actual path

Key Learnings:

  1. FUSE-T binary is NOT at /usr/local/bin/fuse-t
  2. Actual location: /Library/Application Support/fuse-t/bin/go-nfsv4
  3. Binary name: go-nfsv4 (unified multi-backend binary)
  4. Supports --backend parameter (nfs, fskit, smb)

Conclusion

FUSE-T Installation Status: Fully Verified

Next Phase: Ready to implement real FUSE mount functionality

Critical Path:

  1. Implement mount() using go-nfsv4 binary Binary found
  2. Test NFSv4 backend Ready
  3. Test FSKit backend Ready
  4. Mount warren user (12,659 nodes) Ready

Report Generated: 2026-05-17 11:45
Status: Installation Complete, Verification Complete, Ready for Phase 2