MacPorts を使用して OS X Lion に NTFS-3G を読み書き可能にインストールする

MacPorts を使用して OS X Lion に NTFS-3G を読み書き可能にインストールする

私はLion上でうまく動作するMacPortsを持っています。

sudo port install ntfs-3g

エラーなしでコンパイルされます。ただし、NTFS 形式の外部ドライブを接続すると、読み取り専用になります。また、Snow Leopard インストール時にあったような NTFS-3G の環境設定アイコンがありません。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

フェルナンド・フィゲイレドが言及され、リンクされた役職MacPorts の ntfs-3g ビルドの使用についてですが、ページにアクセスしようとすると、ページが壊れていました (404)。ただし、Google キャッシュから取得することはできました。ブログ投稿の最後の重要な部分をここに投稿しました。基本的に、後で自分でもう一度見つけられるようにするためです。 :-)

説明書:

  1. ポート経由でntfs-3gをインストールするsudo port install ntfs-3g
  2. Mac OSの組み込みNTFSサポートを廃止sudo mv /sbin/mount_ntfs /sbin/mount_ntfs.orig
  3. 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 のシェル スクリプトの内容:

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

関連情報