« アプリ一覧に戻る

exFAT for Tiger (PowerPC)

PowerPC Mac (Tiger) 向け ソース公開中

Mac OS X 10.4 Tiger(PowerPC)でexFATドライブの読み書き・マウントができるようにするメニューバーアプリと、 その下回りのコマンドラインツール一式です。exFAT対応はMac OS X 10.6.5から標準搭載されており、現行の MacFUSE/macFUSEもLeopard以降でPowerPCサポートを打ち切っているため、2026年のTiger PowerPC Macには本来 現代のexFATフラッシュドライブを読む手段がありません。

exfat-tiger-ppc.zip をダウンロード
これまでのダウンロード数: 44
※ Tiger標準のSafari/curlは現代のHTTPS証明書を検証できないため、ここから直接ダウンロードできない場合があります。当サイトでは Aquafox(当サイトが日本語化パックを配布しているPowerPC向けブラウザ)をおすすめします。現代のHTTPSも普通に扱えます。難しい場合は、現代のMacで取得してからコピーするか、Tigerbrew/MacPorts経由の新しいcurlをご利用ください。

同梱内容

  • exFAT Menu.app — メニューバーユーティリティ本体。「exFAT」メニューから、マウントするドライブやアンマウントするドライブを選べます。
  • bin/ — 下回りのコマンドラインツール(mount.exfat / fsck.exfat / mkfs.exfat / exfatlabel / dumpexfat / exfatattrib)。relan/exfat を元に、この古いMacFUSE向けに2つの小さなパッチを当ててビルド。

動作要件

  • Mac OS X 10.4 Tiger、PowerPC(Intel Tigerでも動く可能性がありますが未検証です)
  • MacFUSE Core 10.4-1.7.0 を先にインストールしておく必要があります。これはGoogle時代の旧MacFUSEで、Wayback Machineからの入手です。 現在配布されている「公式」版は、Googleが数年前に停止したサーバーに問い合わせるだけの新しいスタブ インストーラーになっており、動作しません。

インストール手順

  1. MacFUSE Core 10.4-1.7.0(上記リンク)をインストールし、求められたら再起動します。
  2. exfat-tiger-ppc.zip を解凍し、そのフォルダ内で install.sh を実行します(CLIツールを /usr/local/sbin にコピーするだけです)。
  3. exFAT Menu.app/Applications など好きな場所にドラッグし、ダブルクリックします。メニューバーにのみ常駐し、Dockアイコンは出ません。

使い方

exFATドライブを挿すと、Tigerが「読み込めません」と文句を言いますが、無視してください。これはこのアプリでは なく、Tiger標準の壊れたNTFSドライバがファイルシステムを誤認識しようとして失敗しているだけです。

メニューバーの「exFAT」→「Mount: disk_s_ (...)」をクリックすると、デスクトップに exFAT (disk_s_) という名前のフォルダエイリアスが現れます。それがドライブ本体です。取り外す際は、 他のドライブと同様に、先にアプリの「Eject」を実行してから物理的に抜いてください。

対応環境

動作環境PowerPC Mac / Mac OS X 10.4 (Tiger)
備考Intel Tigerでも動作する可能性がありますが、検証はしていません。

個人の趣味プロジェクトにつき無保証です。同梱のCLIツールは fuse-exfat(GPLv2)、アプリ本体の ソースとアイコンはMITライセンスです。詳しいソースコードやライセンス、MacFUSE時代特有の技術的な工夫の 解説は上記のGitHubリポジトリをご覧ください。

中身は、他の人が作った2つのものをつなぐ薄い接着剤みたいなものです。exFATファイルシステムの実体は relan/exfatで、 それを2008年のGoogle製・Tiger向けMacFUSE実装であるMacFUSE Core 1.7.0の上で動かしてます。必要な パーツ自体はどれも既に世の中にあったんですが、私が調べた限り、実際のTiger PowerPC実機で組み合わせて 検証した人はいなかったみたいです。

なぜ2008年の古いMacFUSEなのか

これは正直、選択の余地がありません。現行のMacFUSE/macFUSEはLeopard以降でPowerPC対応を打ち切っているので、 Tiger PPCで動くFUSE実装はMacFUSE Core 10.4-1.7.0しか無いんです。しかも今はもう普通には手に入りません。 現在配布されている「公式」版は、Googleがとっくに停止したサーバーに問い合わせるだけの新しいスタブ インストーラーになっていて、実際に動くインストーラーはWayback Machineから拾ってくるしかありませんでした。

Tigerにautotoolsが無い問題

TigerのXcode 2.5にはautoconfもautomakeも入ってないので、relan/exfatのautotools製configure スクリプトはどこか他の場所で先に作っておく必要があります。下記のパッチを現代のMacに当ててから autoreconf -fivでconfigureとMakefile.inを生成して、そのツリーごとTiger機に コピーしてビルドする流れです。ここで一つ落とし穴があって、コピーされたファイルはTiger自身の時計より 未来のタイムスタンプを持った状態で届くので、makeが混乱しないよう、configure && make の前に 一旦touchでタイムスタンプを揃えておく必要があります。

この古いMacFUSE向けの2つのパッチ

relan/exfatはLinux以外の*BSD系ビルドだとデフォルトで-o big_writesを有効にするんですが、 MacFUSE 1.7.0(2008年)はそのオプション自体を知らなくて、fuse: unknown option 'big_writes' でマウントごと失敗します。これは単純に削除で対応。もう一つは、マウントオプションに -o nobrowseを追加するパッチです。こっちが必要になった経緯は、下の「ハマった点」に書いてます。

ハマった点

diskutil infoを全ディスクに対してループすると、Mac全体がハングすることがある。 接続中の外付けドライブのどれか一つでもスピンダウンしてると、それに対するdiskutil info は、そのドライブが目覚めるまでブロックするんです。それを全パーティション分ループで呼んでたので、 アプリどころかMac全体が応答しなくなることがありました。パーティションごとにdiskutil info を呼ぶんじゃなく、diskutil listを一回だけ呼んで解析する方式に変えたら、この問題自体が 起きなくなりました。
このアプリが触る前に、exFATドライブが壊れたNTFSとして自動マウントされてしまう。 exFATのパーティションは、パーティションマップのレベルではWindows_NTFSとして見えるので、 挿した瞬間にTiger標準のディスクアービトレーションが、内蔵の読み取り専用(しかもこの場合は単純に 間違っている)NTFSドライバで勝手にマウントしちゃうんです。そのマウントは中身が空で意味が無くて (実際のNTFSとexFATは内部的には別物なので)、このアプリはFUSE経由で本当のマウントをする前に、 まず生のデバイスに対してdiskutil unmountを実行して、その間違ったマウントを消しています。
Finder純正のFUSEボリュームアイコンが不安定で、しかもその対策オプションが黙って無視される。 通常、MacFUSEのマウントはFinderのDiskArbitration連携経由でデスクトップに「MacFUSE Volume N」という アイコンが出るんですが、この古いMacFUSEだとこれが不安定で、出ないこともあれば、きれいにアンマウント した後でも中身が空の死んだアイコンとして残り続けて、消すにはログアウトし直すしかない、ということも ありました。-o nobrowseを渡せばMacFUSEがDiskArbitration/Finderへの登録自体をしなくなって、 この問題を丸ごと避けられるんですが、relan/exfat側のオプション受け渡しの仕組みが、ソース内の 許可リストに明示的に追加しない限りnobrowseを黙って捨ててしまうんです。これが上のパッチの もう半分の内容です。Finder純正のFUSE連携に頼らず、アプリ自身が普通のデスクトップのシンボリックリンクを 作るようにしたんですが、こっちの方が標準機構より100%確実でした。
SSH経由で起動したGUIアプリは画面に出せない。 この開発の大部分は、実機のPower Mac G4の 前に座るんじゃなくて、SSH経由でリモート操作して進めました。手元でコードを直して、変更したファイルを scpで転送、G4側で動いてるプロセスをkillallしてビルドし直す、というのを全部現代のMacの ターミナルからやる感じです。コマンドラインツールのビルドまではこれで問題ないんですが、GUIアプリを その流れで再起動しても、画面には一切出てきません。古いMac OS Xでは、SSHセッションから起動した プロセスは、実際のディスプレイを持ってるWindowServerに繋がってないんです。バグじゃなくて、この 環境の制約です。UIの変更を確認する最後の一歩は、結局いつもG4の前に実際に立つ必要がありました。

ソースコードはGitHubにあります。