【コラム】

OS X ハッキング!

214 噂の「MacFUSE」を試す(2)

    海上忍  [2007/02/16]

    湯船に浸かりながら次期OSについて思いを巡らしていたところ、ふと気になったのですが。チーターとピューマ、ジャガーにパンサー、タイガーそして今度のレパードと、"ネコ科の強面"が出尽くしつつあるじゃないですか。ライオンはいずれ登場するとして、ほかには……リンクスは迫力不足だし、スミロドン(サーベルタイガーとも呼ばれる)のような絶滅種もちょっとねえ。個人的には、響きのよさからコロコロ(パンパスキャット)がイチ押しなんですけど。

    さて、今回も前回に続き「MacFUSE」について。MacFUSEは2月11日にv0.2.0へとバージョンアップ、Tigerからサポートされたアクセス制御リスト(ACL)に対応したほか、非同期書き込みの改善や数種類のマウントオプションが追加された。アップデートを済ませてから作業にのぞんでほしい。

    いま「ntfs-3g」を必要とする理由

    ntfs-3g」は、FUSEを利用したNTFS互換のファイルシステム。基本的にFUSEの機能のみに依存するため、FUSE 2.6.3ベースのMacFUSE 0.2.0もほぼ手直しなしに動作する。

    ntfs-3gを利用するメリットは、直接NTFSボリュームに書き込めること。OS Xも標準でNTFSをサポートするが、リードオンリーで追加 / 変更はできない。Sambaなどネットワーク共有機能を使う手もあるが、動画のような大容量のファイルはHDDに直接アクセスできるほうが効率的。以前からNTFSへの書き込みを要望する声は多かったが、MacFUSE+ntfs-3gでそれがかなうわけだ。

    ただし、NTFSの機能すべてがサポートされるわけではない点に注意。現在のところ暗号化や圧縮には対応しないため、それらのファイルにはアクセスできない。Changelogから推測するかぎり、開発はアクティブに推移しているようだが、未実装の機能や不具合も少なくない。NTFSボリュームに書き込む場合には、バックアップを作成した上で自己責任のもと作業してほしい。

    ntfs-3gのインストール

    ntfs-3gのインストールは、ソースコードから行う。GCCなど開発環境一式のほか、pkg-configが必要になるので、「Fink」も導入しておく必要がある。以下の説明は、それらの条件を整えた上で「ntfs-3g-0.20070207-RC1.tgz」を対象に作業しているので念のため。

    なお、ntfs-3gはLinuxの利用を前提としているため、configureスクリプトの一部を書き換えてLinuxホストに見せかける必要がある(19807行)。コードの一部も、Linuxのカーネルモジュールをロードするコマンド(modprobe)やprocファイルシステムに依存しているため、そのままではエラーとなる。以下の手順を参考に、viなどのエディタで書き換えながら作業を進めてほしい。

    $ curl -O http://www.ntfs-3g.org/ntfs-3g-0.20070207-RC1.tgz
    $ tar xzf ntfs-3g-0.20070207-RC1.tgz
    $ cd ntfs-3g-0.20070207-RC1
    $ vi configure
       19807 linux*)    (左端の数値は行数)
           ↓ ↓ ↓
       19807 *)

    $ vi src/ntfs-3g.c
       2120         fstype = get_fuse_fstype();
       2121         if (fstype == FSTYPE_NONE || fstype == FSTYPE_UNKNOWN)
       2122                fstype = load_fuse_module();
           ↓ ↓ ↓
       2120         fstype = FSTYPE_FUSEBLK;
       2121
       2122
     (参考: AppleNova Forums)

    $ ./configure
    $ make
    $ sudo make install    (要管理者権限)

    NTFSボリュームをマウントする

    これでntfs-3gの機能を利用できるが、通常はNTFSボリュームが検出され次第、OS Xの機能によってリードオンリーでマウントされてしまう。以下に示す手順を参考に、diskutilコマンドを利用してデバイス名の確認とアンマウントを実行しておくこと。

    $ diskutil list
        .
        .
    /dev/disk2
       #:                   type name               size      identifier
       0: FDisk_partition_scheme                    *12.7 GB  disk2
       1:           Windows_NTFS MYSTORAGE          7.8 GB    disk2s5
       2:           Windows_NTFS ボリューム    4.9 GB    disk2s6

    $ diskutil unmount /Volumes/ボリューム

    マウントには「ntfs-3g」コマンドを利用する。マウントポイントは手動で指定しなければならないため、/Volumes以下に適当なディレクトリを作成しておくといいだろう。

    ntfs-3gコマンドを実行するときには、オプションに「volname」と「ping_diskarb」を指定すること。前者はボリューム名の設定に、後者はFinderとの連携に必要だ。

    $ mkdir /Volumes/NTFS
    $ sudo ntfs-3g /dev/disk2s6 /Volumes/NTFS -o volname="NTFS",ping_diskarb

    左がntfs-3gを利用してマウントしたNTFSボリューム。OS X標準機能でマウントしたボリューム(右)との違いに注目

    さて、ntfs-3gをしばらく利用した感想だが……いくつかの点を除き十分実用的だ。最大の問題点は、時折「エラーコード -43」が発生すること。原因は特定できていないが、筆者が試したかぎりでは、フォルダごとコピーしたときに発生することが多いようだ。大量のファイルを含むフォルダをコピーする場合、コピーし損じたファイルの特定が難しくなるため、書庫化してからコピーするなどの予防策は必要だろう。

    書き込み速度が遅いことも難点の1つ。100MBのファイルをコピーするのに1分ほどかかるため、環境によっては動画のコピーもネットワーク経由のほうが速いかもしれない。容量よりファイルの件数で所用時間が増す傾向もある。今後のパフォーマンス改善に期待したいところだ。

    約1.88GBのフォルダをコピーし始めたところ、気が遠くなりそうな所用時間が……

    気が遠くなりかけた直後、「エラーコード -43」で作業は中断された

    新着記事

    特設サイトの情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      マイナビニュースマガジン