Macとかの雑記帳

MacからWindowsのntfsボリュームを書き込み

「10.8 Mountain Lion」「10.7 Lion」「10.6 Snow Leopard」で、デフォルトで無効になっている Windows の NTFS ボリュームへの書き込みを有効にする方法です。

Mountain Lion での内容になりますが、Lion でもやり方は同じです。NTFS用のドライバを作成して入れ替えた後、Snow Leopard で有効にする場合と同じ設定をすることで、書き込み可能になります。

最初に

システムの奥にあるファイルを入れ替えたりするので、万が一に備え、事前にTime Machineなどでバックアップを取っておくことと、OSをインストールした外付けHDDなどを用意しておくことを強くお勧めします。

検証環境
  • iMac mid 2007 20"
  • OS X 10.8.2
  • OS X 10.7.5

Mountain Lion と Lion はXcodeが必要になるので、あらかじめ入れておいてください。

NTFS用のドライバを作成

この記事を書いている時点で OS X 10.8.2 を使っているので、Apple Open Source(OS X 10.8.2)から、ntfs-81xnu-2050.18.24 を落としてきます。

MacからWindowsのntfsボリュームを書き込み_01

Apple Open Source 

Lion は、Apple Open Source(OS X 10.7.5)以下にあるものを使いました。

以降はデスクトップにファイルを落とした前提で進めていきます。

ファイルを解凍し、「locks.h」というファイルを既存のものと入れ替えます。最初に以下を実行して、デフォルトのファイルを退避させます。

$ cd /System/Library/Frameworks/Kernel.framework/Headers/i386/
$ sudo mv locks.h locks.h.org

退避させたら「xnu-2050.18.24」の中にある「locks.h」を移植します。最初にこれを入れ替えないとビルドでコケます。

$ sudo cp ~/xnu-2050.18.24/osfmk/i386/locks.h /System/Library/Frameworks/Kernel.framework/Headers/i386/

MacからWindowsのntfsボリュームを書き込み

次に「xnu-2050.18.24」の中にある 「specdev.h」 というファイルを、落としてきた「ntfs-81」の内の 「kext」 というフォルダに移動またはコピーします。

$ cp ~/xnu-2050.18.24/bsd/miscfs/specfs/specdev.h ~/ntfs-81/kext/

MacからWindowsのntfsボリュームを書き込み

ここまで済んだら「ntfs-81」の中にある「ntfs.xcodeproj」を開きます。

MacからWindowsのntfsボリュームを書き込み_02

開いたら、Xcode のメニューバーより「Product」「Edit Scheme…」と進みます。

MacからWindowsのntfsボリュームを書き込み_03

Schemeを「ntfs.kext」にし…

MacからWindowsのntfsボリュームを書き込み_04

「Run」「Info」より、Build Configuration を「Deployment」に変更します。

MacからWindowsのntfsボリュームを書き込み_05

変更したら、「kext」以下にある「ntfs_vfsops.c」を開きます。

MacからWindowsのntfsボリュームを書き込み_06

開いたら3箇所修正します。Mountain Lion、Lion、ともに修正点は同じですが、ファイルのバージョンによって行番号が微妙に違います。

文字列を検索するなどして修正箇所を探してください。

最初に68行目付近を以下のように修正します。

#include <miscfs/specfs/specdev.h>

#include "specdev.h"

MacからWindowsのntfsボリュームを書き込み_07

次に3958行目付近をコメントアウト。

  if (vfs_isrdwr(mp))
	vfs_setflags(mp, MNT_DONTBROWSE);

// if (vfs_isrdwr(mp))
//    vfs_setflags(mp, MNT_DONTBROWSE);

MacからWindowsのntfsボリュームを書き込み_08

最後に4058行目付近もコメントアウトします。

  if ((vfs_flags(mp) & MNT_DONTBROWSE) == 0 && !vfs_isupdate(mp))
	vfs_setflags(mp, MNT_RDONLY);

// if ((vfs_flags(mp) & MNT_DONTBROWSE) == 0 && !vfs_isupdate(mp))
//    vfs_setflags(mp, MNT_RDONLY);

MacからWindowsのntfsボリュームを書き込み_09

修正したら をクリックしてビルドします。

MacからWindowsのntfsボリュームを書き込み_10

ビルドし終えたら「Products」以下にある「ntfs.kext」を右クリックし、Show in Finder を選びます。

MacからWindowsのntfsボリュームを書き込み_11

この ntfs.kext がntfsに書き込み可能なドライバになります。

MacからWindowsのntfsボリュームを書き込み_12

/System/Library/Extensions/ にデフォルトのドライバがあるので、作成した ntfs.kext と入れ替えます。

ntfs-3g や Paragon NTFS for Mac OS X など、他のドライバを入れている場合は事前にアンインストールし、デフォルトのドライバはどこかに保存しておきます。

$ sudo cp -R ~/Library/Developer/Xcode/DerivedData/ntfs-xxx/Build/Products/Deployment/ntfs.kext /System/Library/Extensions/

xxx の部分は環境によって異なります。

MacからWindowsのntfsボリュームを書き込み_13

入れ替えたら再起動し、無事に起動できるか確認した方がいいと思います。再起動後、ntfsボリュームがマウント出来るかも確認してください。

マウントできないようなら ntfs.kext のビルドに失敗してます。それと、もう一度他社製のドライバが入っていないかよく確認してください。

NTFSへ書き込み可能な状態でマウントさせる

ドライバが書き込みに対応していても、ntfsボリュームは読み込み専用でマウントされます。これを書き込み可能な状態でマウントするようにします。

Snow Leopard はこの設定だけで書き込み可能になるはずです。

最初に、以下を実行して /sbin/mount_ntfs を「mount_ntfs.org」にリネームします。

$ cd /sbin
$ sudo mv mount_ntfs mount_ntfs.org

リネームしたら新規で「mount_ntfs」を作成します。

$ sudo vi mount_ntfs

ファイルに以下の内容を記入します。

#!/bin/sh
/sbin/mount_ntfs.org -o rw "$@"

作成したファイルに、アクセス権と所有者を設定します。

$ sudo chown root:wheel mount_ntfs
$ sudo chmod 755 mount_ntfs

終わったら、念のため再起動して終了です。

下のように、Paragon NTFS for Mac OS X や ntfs-3g を入れていないにも関わらず、ntfsボリュームへの書き込みが有効になると思います。

MacからWindowsのntfsボリュームを書き込み_14

ちなみに fstab を用いる方法でも書き込み可能にできます。ただ、Snow Leopard を使っていたころ、fstab で設定した数日後にNTFSボリュームの全データが消えたことがあります。個人的にはお勧めはしません。

fstab を使う方法は下の過去記事を参考にしてください。
Mac: 標準機能でWindowsへの読み書きを可能にする(fstab編)

注意事項

Snow Leopardについて

Lion が出て以降のアップデートで、標準装備の ntfs.kext が修正されてなければ、mount_ntfs の置き換えだけで有効になるはずです。

ドライバをビルドする際の注意

異なるバージョンの OS X でビルドしたドライバだと、たぶん失敗します。例えば、Mountain Lion 上で、Lion 用のドライバを作成した場合などです。

OSのアップデート後にntfsへの書き込みが無効になる

OSアップデート後に書き込みが無効になったら、デフォルト状態に戻された可能性が高いです。Snow Leopard で1〜2回経験してます。

NTFSへの書き込みについて

Mountain Lion と Lion は、Finderでntfsへ書き込むのにバグがあるため、強制的に読み込み専用にしているそうです。その点を踏まえて、試される場合は自己責任でお願いします。

冒険したくない方は、以前紹介した「Paragon NTFS for Mac OS X」などを検討されるといいと思います。詳しいことは以下の記事を参照してください。

MacからWindowsへの高速なファイルコピーを可能にする Paragon NTFS for Mac OS X 

参考リンク:NTFSファイル書き込み(Lion/Mountain Lion編)

スポンサード リンク