How to fix NTFS support on OSX Lion
After I upgraded my Mac to Lion this month, I’ve noticed that my NTFS drives stopped working. I’m using NTFS on my Windows XP partition and on a WD external drive. I’ve previously used MacFUSE and NTFS-3G, which is probably the most commonly used solution for people who want full NTFS access on OSX (as you probably know, by default OSX only provides read only support). However, that doesn’t work anymore on Lion. The problem is that MacFUSE is not maintained anymore and doesn’t work with a 64-bit kernel which is used by default in Lion.
First Google results usually point you to commercial solutions, but I’m not willing to pay for something as basic as filesystem support, which, frankly, Apple should have provided themselves long time ago. If you want to avoid paying, the right way is to replace latest stable MacFUSE with something that works on Lion.
Based on a few blog posts and comments I managed to find a way that worked for me, so I thought I’d put it all here in one place for others. The fastest way IMHO is to install packages from the command line, because - at least in case of NTFS-3G - it’s hard to tell from the website which version is the right one. I’m going to assume you haven’t lived under a rock for the last couple of years and you’re using Homebrew, not MacPorts. It’s not completely automatic - you’ll need to do a few things in the terminal, but it shouldn’t take more than a few minutes in total. Instructions
So here we go:
Just to be safe, remove old MacFUSE and NTFS-3G. You can use the “Uninstall” buttons in Preferences panels, but at least for MacFUSE that didn’t work for me, so if it doesn’t, just remove the panels from Preferences. You can reboot OSX just to be sure the old stuff is gone - your NTFS partitions should mount as read only now. Install latest Fuse4X (a fork of MacFUSE) and NTFS-3G packages: brew install fuse4x brew install ntfs-3g Follow the instructions in the auto-included fuse4x-kext package (brew info fuse4x-kext). Basically you have to copy one file from the Homebrew package directory into /System/Library using sudo. Follow the instructions from a blog post that explains how to make OSX use NTFS-3G when mounting drives. The post is long so just scroll to the part that says “Ok, at this point you should have a functional fuse4x and ntfs-3g install” and create an alternative /sbin/ntfs_mount script as described there. Two caveats:
the script needs to have a hardcoded UID of a specific user on whose behalf NTFS drives will be mounted. If you have a single user or if the user is the first one created in the system, the default values will just work. the script assumes MacPorts was used, so replace /opt/local/bin/ntfs-3g with /usr/local/bin/ntfs-3g for Homebrew
And that’s it, you should be able to unmount drives and mount them again using Disk Utility as read-write filesystems. If it doesn’t work, try to turn it off and on again. If it still doesn’t work, see if /var/log/ntfsmnt.log gives you any clues.
Update: it seems that OSX can overwrite the /sbin/ntfs_mount script during a system update, so if a NTFS drive suddenly goes readonly again, it’s probably that. You can keep a backup of the script at e.g. /sbin/ntfs_mount.rw so that you can restore it quickly if this happens.
Discussion in the ATmosphere