Goal
Make macOS treat ext2/3/4 drives like native volumes: auto-probe on insert, auto-mount, show in Finder, eject normally, and NO "The disk you inserted was not readable" popup.
Mechanism
A DiskArbitration filesystem bundle at /Library/Filesystems/fuse-ext2.fs (same mechanism Apple's exfat.fs/msdos.fs use): Contents/Info.plist registers the Linux media types (MBR 0x83, GPT 0FC63DAF..., partitionless) and points DiskArbitration at a .util that probes via dumpe2fs and mounts via fuse-ext2.
Status (this fork)
- Built + unit-tested (probe recognizes ext / rejects non-ext / correct loadable_fs exit codes) — all green.
- Files:
tools/macosx/fuse-ext2.fs/Contents/Info.plist, Contents/Resources/fuse-ext2.util.in, scripts/90_install_fs_bundle.sh (+ test).
- Installed to
/Library/Filesystems/fuse-ext2.fs on a macOS 26 test box.
NOT yet verified — needs a reboot
diskarbitrationd reads its fs-bundle list only at boot, and SIP forbids restarting it live (launchctl kickstart / killall both refused). So the bundle is staged but inactive until a reboot. Open question: whether macOS 26 (FSKit era) still consults third-party /Library/Filesystems bundles at all — the reboot + insert-an-ext-drive test is the moment of truth. If ignored, native integration would need an FSKit module instead.
Behavior choices baked into the .util
- Clean fs → auto-mount rw;
needs_recovery (dirty journal) → mount ro (fuse-ext2 doesn't replay journals).
Goal
Make macOS treat ext2/3/4 drives like native volumes: auto-probe on insert, auto-mount, show in Finder, eject normally, and NO "The disk you inserted was not readable" popup.
Mechanism
A DiskArbitration filesystem bundle at
/Library/Filesystems/fuse-ext2.fs(same mechanism Apple'sexfat.fs/msdos.fsuse):Contents/Info.plistregisters the Linux media types (MBR 0x83, GPT0FC63DAF..., partitionless) and points DiskArbitration at a.utilthat probes viadumpe2fsand mounts viafuse-ext2.Status (this fork)
tools/macosx/fuse-ext2.fs/Contents/Info.plist,Contents/Resources/fuse-ext2.util.in,scripts/90_install_fs_bundle.sh(+ test)./Library/Filesystems/fuse-ext2.fson a macOS 26 test box.NOT yet verified — needs a reboot
diskarbitrationdreads its fs-bundle list only at boot, and SIP forbids restarting it live (launchctl kickstart/killallboth refused). So the bundle is staged but inactive until a reboot. Open question: whether macOS 26 (FSKit era) still consults third-party/Library/Filesystemsbundles at all — the reboot + insert-an-ext-drive test is the moment of truth. If ignored, native integration would need an FSKit module instead.Behavior choices baked into the .util
needs_recovery(dirty journal) → mount ro (fuse-ext2 doesn't replay journals).