今回はいきなり本題、しかも「書き込めるNTFSボリューム」の実現について。Windowsと大容量データをやり取りしたい向きには、ぜひトライしていただきたい。

Mac OS XとNTFSの微妙な関係

Mac OS XとWindowsの関係は、カインとアベル、はたまた不動明と飛鳥了のような"宿命のライバル"として描写されることが多いが、筆者は"良き隣人"が妥当だろうと考えている。会社ではWindowsだが自宅ではOS Xというユーザは多く、自宅にOS XとWindows両方というユーザも少なくない。第一、いまや「Boot Camp」や仮想化ソフトを使えば、OS X上で両者を共存させることができる。

Boot Campで使用しているNTFSボリュームはこのとおり、リードオンリーでマウントされる

そこで浮上するのが「データのやり取りをどうするか」という古くて新しい問題。メールに添付する程度のデータ量はともかく、かさばるファイルについては、歴史的な経緯とApple側の歩み寄りにより、FAT / FAT32フォーマットのリムーバブルディスクを使うことが一般的だ。しかし、ムービーファイルはギガバイト超えが当たり前、デジタルカメラで撮影した写真もアルバム単位で捉えれば相当な容量が必要になる。データをHDDでやり取りしようと考えるのは、自然な流れだ。

しかし、XP以降のWindowsでは「NT File System (NTFS)」を利用する機会が増えた。Windows Vista以降のシステムでは、インストール先のボリュームはNTFSに限定され、FAT32を選択できなくなったことが、その理由の1つだ。一方のOS Xは、FAT32は読み書きとも対応するが、NTFSはリードオンリー。さて困った。

その理由は「書き戻しできない」から。Windows側で記録したデータはOS X側にコピーできても、OS Xで編集したあとに同じディスクへ書き込んでWindowsに戻すという作業はできない。もちろん、FAT32でフォーマットしたデータ受け渡し用リムーバブルディスクを用意すればいいのだが、NTFSで統一したほうがなにかと好都合。NTFSに書き込めれば、Boot Camp環境とのデータのやり取りも容易になるはずなのだ。

OS標準の機能でNTFSに……書けた!

そのOS XにおけるNTFSサポートだが、Snow Leopardでは書き込みも可能となった。デフォルトでは無効化されているため、ただディスクを接続しただけではリードオンリーの状態でマウントされてしまうが、ある細工を施すとリード / ライトとも可能になる。

その仕掛けはというと、「/etc/fstab」を使う古典的な方法。UNIX系OSに慣れ親しむ層には言わずもがなだが、この/etc/fstab、HDDなど外部記憶装置に関する情報を記述しておくと、その内容にしたがいマウント処理を行うという設定ファイルの一種。静的なマウント情報であり、カーネル (OS Xの場合はカーネルモジュール = KEXT) が起動されるタイミングで参照されるものだ。オートマウント機構を備える OS Xでは通常使う必要はないが、ここにNTFSボリュームに関する記述を施しておけば、読み書き可能な状態でマウントできるのだ。

その書式は、以下のとおり。最初の引数には「UUID=XXXXX」としてデバイス固有のID情報 (ターミナルで「diskutil info /Volumes/XXXX」とすれば確認できる) を指定するか、「LABEL=XXXX」としてラベル名を指定すればOK。2番目の引数にはマウントポイント (通常は「none」)、3番目の引数にはファイルシステム名の「ntfs」、4番目の引数にはリード / ライトを許可するために「rw」を指定しよう。

i)  UUID=<uuid> none ntfs rw
ii) LABEL=NTFS none ntfs rw

Snow Leopardの初期設定では、/etc/fstabは存在しない。viやnanoなどのテキストエディタを利用し、新たに作成しよう。なお、/etcディレクトリへの書き込みは管理者権限が必要なため、以下の要領でコマンドを実行することになるだろう。ファイル作成後にシステムを再起動すれば、NTFSボリュームが読み書き可能な状態でマウントされるはずだ。

$ sudo vi /etc/fstab

NTFSフォーマットのBoot Campボリュームもこのとおり、リード / ライト可能な状態でマウントできた

日本語を含むファイル名も、問題なく表示できている

Boot CampボリュームもOK

Windows XP SP2およびWindows 7で数週間ほど利用したうえでの感想だが、リード / ライトとも安定して機能するようだ。dmesgコマンドで調べてみると、ntfs_to_utf8()でエラーが発生している(UTF-8-MACがらみか?)が、かな / 漢字をふくむファイル名が文字化けすることもないようで、特にトラブルは経験していない。/etc/fstabを作成してカーネルモジュールさえロードされていれば、いちどアンマウントしたあとに再接続しても、変わらずリード / ライト可能な状態でマウントされることも確認している。

Boot Campボリュームでも試してみたが、こちらも特に問題なし。「第214回 噂の「MacFUSE」を試す(2)」で紹介したMacFUSEとNTFS-3Gを使う方法に比べると高速で、かつOS標準の機能という安心感もある。正式にはサポートされていない機能ではあるものの、NTFSを仲立ちとした大容量データのやり取りには、大いに役立つはずだ。ただし第三者とのデータのやり取り、またWindows上から日本語ファイル名を正しく表示できるか詳細に検証したワケではないので、"at your own risk"でのぞむことはお忘れなきよう。

dmesgコマンドで確認したところエラーが発生しているようだが、特に支障なく利用できた