Skip to content

Native macOS integration: DiskArbitration .fs bundle so ext drives auto-mount (no 'disk not readable' popup) #5

Description

@moonsoup

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions