Install NTFS-3G with read-write on OS X Lion using MacPorts

7

3

I have a nicely working MacPorts on Lion. When I run

sudo port install ntfs-3g

it does compile without errors. However, when I attach a NTFS-formatted external drive, it's read only. And there is no Preferences icon for NTFS-3G, like there was in my Snow Leopard install. Is the NTFS-3G driver active? How can I find out and fix this?

UPDATE: MacFUSE got installed along with NTFS-3G as a dependency and I did reboot after installing. The ntfs-3g command is available at the command line but I would really like all NTFS drives to be mounted using it automatically and with read-write support.

Tomas Andrle

Posted 2011-07-28T19:31:51.847

Reputation: 2 892

FWIW, Paragon's brand new NTFS 9.0 for Mac OS X is available for free today on Giveaway of the Day. Link The catch is that you have register for a serial # today.

– afrazier – 2011-07-28T19:55:40.950

That worked. Thanks for the tip @afrazier, what a coincidence. Still curious if NTFS read-write is possible on Lion with free software only though, because I'm going to run into this again one day and it won't be another Giveaway day I'm afraid. – Tomas Andrle – 2011-07-28T20:31:55.663

@TomA Had to delete my answer as I couldn't test it -- only running 10.6 now. ntfs-3g should actually be able to do that, but I'm not sure if MacPorts has the newest version or if there even is one yet. – slhck – 2011-07-28T20:44:35.787

Have you tried Tuxera's NTFS-3g installer? I don't have access to a Lion system yet, but it's always worked before. Or try the tips for turning on Apple's built in r/w support from Snow Leopard and see if they still work. – afrazier – 2011-07-28T20:46:59.293

Answers

4

Check this, it details how to make ntfs-3g work through through MacPorts, and also how to make it work through an older version of NTFS-3G with a patched version of MacFuse:

http://fernandofig.wordpress.com/2011/08/08/ntfs-write-support-on-osx-lion-with-ntfs-3g-f/

The reason you couldn't make ntfs-3g work through MacPorts is that ntfs-3g still depends on MacFuse by default. Uninstall the ntfs-3g and macfuse ports, then install fuse4x, and then ntfs-3g. Like this:

sudo port uninstall macfuse ntfs-3g
sudo port clean --all macfuse ntfs-3g
sudo port install fuse4x
sudo port install ntfs-3g

You'll have to use some specific options for mounting, check the post above.

Fernando Figueiredo

Posted 2011-07-28T19:31:51.847

Reputation: 61

Its sad that the page link is dead now :( – Petriborg – 2013-12-12T16:14:33.473

I've updated the link. Please note though that this post is a bit old at this point, there a few newer posts explaining the situation. It should still work though, if you stick to using fuse4x (instead of OSXFuse, which is supposed to replace both fuse4x and MacFuse) – Fernando Figueiredo – 2014-02-09T19:05:43.687

0

MacFuse only provides a 32-bit interface which does not work under the 64-bit Lion kernel. Read system log for related error messages.

You'll have to wait for MacPort to change the dependency to use the newer fuse4x (ticket).

billc.cn

Posted 2011-07-28T19:31:51.847

Reputation: 6 821

1I thought that recent Macs were shipping with 64-bit Snow Leopard kernels since last year? – afrazier – 2011-07-28T23:38:53.030

0

Fernando Figueiredo mentioned and linked to a post about using MacPorts' ntfs-3g build, but when I tried to go to the page, it was broken (404). I was able to fetch it from Google cache though. I've posted the important part from the end of the blog post here. Basically so I can find it again myself later. :-)

Instructions:

  1. Install ntfs-3g via ports sudo port install ntfs-3g
  2. Move aside built-in Mac OS ntfs support sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig
  3. Create shell script to use ntfs-3g (see below)
  4. Fix file permissions sudo chmod 0755 /sbin/mount_ntfs
  5. Fix file ownership sudo chown 0:0 /sbin/mount_ntfs
  6. Update script USER_ID default with output from id -u
  7. Update script GROUP_ID default with output from id -g

The content of the shell script for step 3:

#!/bin/bash
VOLUME_NAME="${@:$#}"
VOLUME_NAME=${VOLUME_NAME#/Volumes/}
USER_ID=501
GROUP_ID=20
TIMEOUT=20
if [ `/usr/bin/stat -f "%u" /dev/console` -eq 0 ]; then
        USERNAME=`/usr/bin/defaults read /library/preferences/com.apple.loginwindow | /usr/bin/grep autoLoginUser | /usr/bin/awk '{ print $3 }' | /usr/bin/sed 's/;//'`
        if [ "$USERNAME" = "" ]; then
                until [ `stat -f "%u" /dev/console` -ne 0 ] || [ $TIMEOUT -eq 0 ]; do
                        sleep 1
                        let TIMEOUT--
                done
                if [ $TIMEOUT -ne 0 ]; then
                        USER_ID=`/usr/bin/stat -f "%u" /dev/console`
                        GROUP_ID=`/usr/bin/stat -f "%g" /dev/console`
                fi
        else
                USER_ID=`/usr/bin/id -u $USERNAME`
                GROUP_ID=`/usr/bin/id -g $USERNAME`
        fi
else
        USER_ID=`/usr/bin/stat -f "%u" /dev/console`
        GROUP_ID=`/usr/bin/stat -f "%g" /dev/console`
fi

/opt/local/bin/ntfs-3g \
         -o volname="${VOLUME_NAME}" \
         -o local \
         -o negative_vncache \
         -o auto_xattr \
         -o auto_cache \
         -o noatime \
         -o windows_names \
         -o user_xattr \
         -o inherit \
         -o uid=$USER_ID \
         -o gid=$GROUP_ID \
         -o allow_other \
         "$@" &> /var/log/ntfsmnt.log

exit $?;

Petriborg

Posted 2011-07-28T19:31:51.847

Reputation: 142