My meager guide to mounting exFAT partitions with unsupported cluster sizes in macOS clearly needed a dollop of detail. The following steps were tested in macOS 14.6.1 with macFUSE 4.8.0 and exFAT 1.4.0:
(Though required as of Sonoma, Sequoia's FSKit (which implements a file system in user space) may render this unnecessary. In the meantime, Apple warns: "Kexts are no longer recommended for macOS. Kexts risk the integrity and reliability of the operating system. Users should prefer solutions that don’t require extending the kernel and use system extensions instead.")
Start up in macOS Recovery
Click Options → Continue Utilities → Startup Security Utility → Security Policy...
Change from "Full Security" to "Reduced Security" → enable "Allow user management of kernel extensions from identified developers" → click OK → enter password → click OK → Restart
Download and run the PKG installer (Universal binary that supports macOS 10.9 through 14(!))
When "System Extension Blocked" appears, click "Open System Settings"
Click "Allow" under "System software from developer 'Benjamin Fleischer' was blocked from loading." → enter password twice when prompted → click "Restart"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install autoconf automake pkg-config
git clone https://github.com/relan/exfat.git && cd exfat && autoreconf --install && ./configure && make
While installing to /usr/local/sbin/ is possible via sudo make install
, running from the fuse subdirectory after compiling is fine, e.g., sudo ./fuse/mount.exfat-fuse /dev/disk2s2 ~/mnt
exFAT for FUSE: If you opted to install in step 5.2, run sudo make uninstall
from the exfat directory. Otherwise, simply delete the exfat directory created in step 5.1.
Homebrew:
Uninstall packages installed via brew: brew list | xargs brew uninstall --force
Clean up any remaining files: brew cleanup --prune=all
Uninstall Homebrew: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
If you ran (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/yourusername/.zprofile
and eval "$(/opt/homebrew/bin/brew shellenv)"
as instructed after the Homebrew installation completed, you may also want to remove eval "$(/opt/homebrew/bin/brew shellenv)"
from ~/.zprofile or simply delete ~/.zprofile altogether if there are no other lines in it.
macFUSE: Run /Extras/Uninstaller.app from the mounted DMG.
Security Settings: Repeat steps 1.1 & 1.2, then switch "Reduced Security" back to "Full Security".
Apple's Virtualization Framework cannot load third party kexts by default, returning: "System Extension Error - An error occurred with your system extensions during startup and they need to be rebuilt before they can be used. Go to Privacy & Security System Settings to re-enable them." Steven Michaud outlines a workaround in his Running Third Party Kernel Extensions on Virtualization Framework macOS Guest VMs.
Homebrew alternatives include MacPorts (replace pkg-config
with pkgconfig
), Conda, pkgsrc, and Fink.
/mac | Aug 10, 2024