OS X で NTFS を簡単に読み書きする方法のまとめ
やってみたら思ったより苦労してしまったので、ここに書いておきます。OS X で NTFS を読み書きするには、今のところ MacFUSE + ntfs-3g を利用するのが一般的です。でも一般的に紹介されている方法では「ボリューム名を自動で取得できない」とか「外付けのNTFSなHDDを自動的にマウントできない」なんて状態だったので、ちょっとした小技を開発(?)してみました。まず MacFUSE と ntfs-3g をインストールしましょう。インストール方法はいくつかあるのですが、私は MacPorts を利用しました。MacPortsのインストール方法については割愛します。 1.MacFUSE (fusefs) をインストール $ sudo port install fusefs 2.ntfs-3g をインストール $ sudo port install ntfs-3gん~、MacPortsって便利ですね♪でも実は最初 port selfupdate を忘れて2~3分はまりました。場合によっては port sync も必要ですかね。ntfs-3g のインストールができたら、次はスクリプトを1つ用意します。エディタは何でも良いので、以下の内容のファイルを作りましょう。なお、赤の部分はそれぞれの環境に応じて書き換えてください。それから OS X のバージョンによっては ruby が入っていないかもしれないので、そんな時は ruby を導入するか、別の言語で書いてください(^-^;#!/usr/bin/rubymountPoint = ARGV[ARGV.size - 1]volumeName = File.basename(mountPoint)deviceName = ARGV[ARGV.size - 2]system(%(/opt/local/bin/ntfs-3g #{deviceName} "#{mountPoint}" -o volname="#{volumeName}",locale=ja_JP.UTF-8,default_permissions))※最後の「system(」から「_permissions))」までは連続した1行です。途中で改行しないでください。これを ~/test.rb という名前で保存したとして説明を続けます。最後にこのスクリプトを、OS X が元々 NTFS のマウントに使っているコマンドと置き換えます。 1.毎回 sudo するのは面倒なのでスーパーユーザーになってしまいます $ sudo su 2.オリジナルの mount_ntfs を保存しておきます # mv /sbin/mount_ntfs /sbin/mount_ntfs.old 3.先ほど作成したスクリプトを配置します # mv ~/test.rb /sbin/mount_ntfs # chown root:wheel /sbin/mount_ntfs # chmod 555 /sbin/mount_ntfs以上で準備完了です。これで OS X が NTFS をマウントしようとした時は自動的に ntfs-3g でマウントされるようになりました(^-^)余談ですが、私はこの方法に行き着く前 /System/Library/Filesystems/ntfs.fs/Contents/Info.plist の方でなんとかなるかな~と思っていくつか実験をしていました。その中で FSProbeExecutable の値を変えるとボリューム名などを取得する時の動作がかわるけれど、FSMountExecutable の値を変えてもマウント時の動作がかわらないということがわかりました。結局 /sbin/mount_ntfs は呼び出されていたのでこちらで対応したのですが、いつ誰が /sbin/mount_ntfs を呼び出しているのかは、まだ調べていません。