使用 MacPorts 在 OS X Lion 上安装可读写的 NTFS-3G

使用 MacPorts 在 OS X Lion 上安装可读写的 NTFS-3G

我在 Lion 上有一个运行良好的 MacPorts。当我运行

sudo port install ntfs-3g

它确实编译成功,没有错误。但是,当我连接 NTFS 格式的外部驱动器时,它是只读的。并且没有 NTFS-3G 的“首选项”图标,就像我在 Snow Leopard 安装中看到的那样。NTFS-3G 驱动程序是否处于活动状态?我该如何找出并修复此问题?

更新:MacFUSE 与 NTFS-3G 一起安装,作为依赖项,安装后我确实重新启动了。ntfs-3g 命令在命令行中可用,但我真的希望所有 NTFS 驱动器都使用它自动安装并具有读写支持。

答案1

检查一下,它详细说明了如何通过 MacPorts 使 ntfs-3g 工作,以及如何通过带有修补版本的 MacFuse 的旧版本的 NTFS-3G 使其工作:

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

您无法通过 MacPorts 使 ntfs-3g 工作的原因在于 ntfs-3g 默认仍依赖于 MacFuse。卸载 ntfs-3g 和 macfuse 端口,然后安装 fuse4x,再安装 ntfs-3g。如下所示:

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

您必须使用一些特定的选项进行安装,请查看上面的帖子。

答案2

MacFuse 仅提供 32 位接口,无法在 64 位 Lion 内核下工作。请阅读系统日志以了解相关错误消息。

您必须等待 MacPort 更改依赖项才能使用较新的 fuse4x()。

答案3

Fernando Figueiredo 提到并链接到邮政关于使用 MacPorts 的 ntfs-3g 版本,但当我尝试访问该页面时,它已损坏(404)。不过我能够从 Google 缓存中获取它。我已将博客文章末尾的重要部分发布在这里。基本上这样我以后就可以自己再次找到它了。:-)

指示:

  1. 通过 ports 安装 ntfs-3gsudo port install ntfs-3g
  2. 放弃 Mac OS 内置的 ntfs 支持sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig
  3. 创建 shell 脚本以使用 ntfs-3g(见下文)
  4. 修复文件权限sudo chmod 0755 /sbin/mount_ntfs
  5. 修复文件所有权sudo chown 0:0 /sbin/mount_ntfs
  6. USER_ID使用以下输出更新脚本默认值id -u
  7. GROUP_ID使用以下输出更新脚本默认值id -g

步骤3的shell脚本内容:

#!/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 $?;

相关内容