FinderでMac/Windowsで読めるハイブリッドISO/UDFディスクイメージを作る

Automator の「新規ディスクイメージ」アクションでディスクイメージを作成すると、パーティションのファイルシステムが Mac 用になるので Windows では読み込めません。そこで、標準的な UDF 形式のディスクイメージを Finder で作れるようにしてみました。

英文で長々と書いてある man hdiutil を読んでいると makehybrid を使えば ISO9660 やら Joliet やら UDF 形式のディスクイメージが作れるとか書いてあります。ほほう…。

さっそく Automator にスクリプトをカキカキ…。

これだけで Finder でフォルダを選択して右クリックでサービスを実行すれば ISO/UDF なディスクイメージが作れます。Windows にリードオンリーでデータを移したり、ディスクに焼き付ける時に便利かも。

bash
hdiutil makehybrid -udf -o "$1" "$1" && open "$1".iso

※画像のサンプルでは hdiutil コマンドの出力パラメータに拡張子(.iso)がついてますが、拡張子なしでもいいみたいです。

スクリプトの内容は hdiutil makehybrid-udf でファイルシステムを UDF に指定。出力が完了したら open コマンドで自動マウントというシンプルなスクリプトです。ソースはディレクトリかディスクイメージじゃなきゃいけないので Automator の入力対象を「フォルダ」に限定しておくといいかも。複数ファイルをまとめたい場合は /tmp あたりに新しいディレクトリを作って作業するといいかも。


それぞれのパーティションの情報。左が UDF 形式のディスクイメージ、右が HFS+ 形式(?)のディスクイメージ。


今回は JPEG だけのフォルダを使ったので容量にあまり差は無いけど、ソースコードなんかの場合は .dmg 形式だと「Apple UDIF 読み出し専用圧縮(zlib)」で圧縮がかかる。んで、なんで読み込み専用のディスクイメージに空き容量があるのか、詳細は調べてはいないけど、パーティションのルートディレクトリに隠しゴミ箱があるからここで使ってる?んじゃないかと。ディスクイメージ内に背景画像設定したりも出来るし、Apple のディスクイメージはなかなか面白いです。


肝心の UDF の方は Windows XP で DAEMON Tools で確認しましたがちゃんと読み取り出来ました。Mac に移行してから全然使ってなかったけど今では Mac 用もあるんですねぇ。

ディスクユーティリティでもある程度できますが、hdiutil だと UDZO(UDIF zlib-compressed image)形式のディスクイメージを convert で色々な形式に変換することができるようです。それはまたの機会に。

そうそう、HFS+ と違って、UDF では扱えないファイル名もあると思うので注意した方がいいかもしれません。


サンプルはいつものところに置いておきます。

http://code.google.com/p/mattintosh4-devel/downloads/list


追記

上のサンプルにある、ディスクイメージ作成後の自動マウント用のコードを削除しました。代わりにディスクイメージ作成後に圧縮時と同じサウンドが鳴るようになっています。自動マウントを行う場合は Automator でワークフローを開いて open コマンドの部分を追加して下さい。

Trackback