2016-06-05

マウントできるファイルシステムがありません

以前、OS X El Capitan付属の生まれ変わったディスクユーティリティがマイナスの容量を持つボリュームを要求するエラーで、CD-ROMのイメージファイルが作成できなくて困っているという記事を書いたのだが……

この問題に対するアップルのエンジニアの回答(アドバイザーではなく エンジニア の回答である)は「ボリュームを選択してイメージ化できないなら、メディア(ディスク全体)を選択すればいいじゃない」という絶望的なものだった。

その昔、「パンがなければ、ケーキを食べればいいじゃない」と、のたまった伝説の貴婦人かオメーは。ディスクユーティリティの動作を把握してないだろ。 長年、メーカーのサポートに電話を架け続けていると、たまに、こういうスカに当たることがある。

教えてやろう、El CapitanのディスクユーティリティでCD-ROMメディアを選択してディスクイメージを作成するとどうなるのかを。

試しに、手元にある OS X Yosemite 10.10.5 以前ではなんの問題もないCD-ROMを使い、El Capitanのディスクユーティリティで(ボリュームではなく)メディアを選んで「フォーマット: DVD/CD マスター」としてイメージファイルを作成してから、

そのイメージファイルをFinderで開く(マウントを試みる)と、

次のディスクイメージは開けませんでした

理由 マウントできるファイルシステムがありません

との警告が表示されてマウントできない。

そのイメージファイルをCD-Rに焼いてドライブに挿入すると次のように表示される。

セットしたディスクは、このコンピュータで読み取れないディスクでした。

と、まあ、驚くべきことに OS X El Capitan 10.11.5 のディスクユーティリティが生成するCDイメージは、

Finderからマウントすることも、まともなCD-Rを焼くこともできない

のである。悲しすぎる、アホすぎる。

ちなみに、Yosemite以前に装備されているディスクユーティリティは、このようなバカ丸出しな動作はしない。

もし、OS Xでのイメージ化がサポートされていないCD-ROMであれば、

このタイプの CD イメージは作成できません

のように表示されイメージファイルの生成自体ができない(使い物にならないイメージをユーザーに作成させたりしない)。 サポートされているタイプのCDであればイメージ作成後、ちゃんとFinderでマウントできて、イメージから焼いたCD-Rも正常に読み取り可能である。いたって普通の挙動だ。そう、Yosemite以前ならね。

MacでCDを扱うソフトウェアを書いたことがあるプログラマーなら、生まれ変わったディスクユーティリティがここでやらかしちゃってる、そこは通常のブロックデバイスと同じように処理しちゃダメだろうというコードの断片がイメージできるのではないだろうか。Apple の担当エンジニアさん、古いディスクユーティリティを書いてたプログラマーに正しい処理の仕方を聞いてみるといいよ。CD-ROMメディアの場合、処理を変えなきゃならないのがわかるから。あるいは、生成されたイメージファイルをバイナリーエディターで開いてみてごらん。どこがおかしいのかわかるよ。何が悪いのか分かったらソースコードをよく見て直してね。

さて、El Capitan付属のディスクユーティリティへの苦情はこれくらいにして、ここからは、OS XとISOイメージファイルについての雑記。

CD-ROMの規格には非常に雑多なバリエーションがあるので Linux や Windows 10 では問題なくdiscに書き込むことができる正常なISOイメージであっても、Macで開くと、

次のディスクイメージは開けませんでした

理由 image not recognized

のように、認識されず、マウント不可なものがある。

古〜い ISO 9660/HFS ハイブリッドCD-ROMや、古〜いWindowsのブータブルなインストールCD-ROMなどが該当する。

他のプラットフォームから持ち込んできた、OS Xが認識できないISOイメージは、OS X標準のディスクバーナーでは焼くこともできない。

ディスクユーティリティでISOイメージを作成する方法として、「拡張子 .cdr を .iso にすればISOイメージになります」とかいう情報をネット上でよく見かけるが、それは半分ウソなので注意が必要だ。

アップルが「CD/DVD マスター」で生成されるイメージファイルの拡張子を .iso ではなく、わざわざ .cdr にしているのは、必ずしも(俗に言う)ISOイメージ形式に該当するとは限らないからである。

中身がISOイメージ形式でないファイルの拡張子だけ .iso にしたところで中身が変わるはずもない。

El Capitanに限ったことではないが、OS Xのディスクユーティリティには、「元のCD-ROMと全く同じ(CD-ROM Mode1的な意味で同じに見える)CD-Rを作成可能なディスクイメージ」を生成する機能はない。

ディスクユーティリティのサイドバーから(ボリュームではなく)メディアを選択して、「フォーマット: DVD/CD マスター」で保存すれば、ディスク全体をISOイメージファイルにしてくれるんじゃないかと期待してしまうが、前述の通りそのようには働かない。

Linuxでは割と簡単に、コマンドラインからデータCD-ROMの完全な複製が可能なISOイメージを作ることができる。OS Xでもコマンドラインから、Linuxで作るものと全く同じISOイメージを作成できるが、CD-ROMメディアの扱いがドライバーレベルで異なっているので、Linuxと全く同じやり方は通用しない。

Mac OS XでISOイメージを作成する方法:ウチではOS X用の自作のフィルター cdud で処理している。

# < /dev/disk3 cdud > cdrom.iso

みたいな感じでISOイメージを作れる(disk3には実際のCD-ROMメディアのデバイスファイル、cdrom.isoには作成したいISOイメージファイルの名前を指定する)。

cdudコマンドのtarballを準備しておいた。例えば次のようなコマンドラインでダウンロードできる。
$ curl -O http://zone0.net/jp/download/cdud.tar.gz

OS X Mountain Lion 10.8.5以降で動作するはず。 まかない飯的な手抜きプログラムなので、試したい方は自己責任でどうぞ。 間違っても、DVD(UDF)メディアに対して使用しないこと。

アップルのサポートに聞いても、いわゆるISOイメージを作成する「公式な方法はない」という回答だったし、昔、調べた限りでは他に方法が見つからなかったのだが、実はOS XでもISOイメージを作成する、もっとまっとうな方法があるのだろうか?(ご存知の方がいらっしゃったら、こっそり教えてください)


diskutilコマンドで観察して、CD-ROMメディア内のパーティションが認識できるmacOSであれば(バージョンによっては古いCD-ROMを認識しないmacOSもある)、最上位のスライスに相当するデバイスファイルをddコマンドなどで書き出してファイル化するだけでもISOファイルを作成できるようだ。その場合、cdudは不要。

4 件のコメント:

  1. こんにちは、はじめまして 萍:ウキクサさん
    ブルージョナサンといいます

    こちらのコメント欄はすぐに公開されるの
    でしょうか?

    お時間とかあればご連絡でもよろしくお願いします。

    ブルージョナサン

    返信削除
  2. こんにちは、ブルージョナサンさん。

    コメント欄だとやりとりの内容はすぐ公開されます。

    なにか個別のご相談でしたら、このページ上部の「萍:ウキクサについて」リンクからプロフィールをたどると連絡先が書かれたページがありますので、メールでもお送りください。

    返信削除
  3. CD焼くまではしてないですが僕も「次のディスクイメージは開けませんでした」に悩まされています。

    返信削除
    返信
    1. macOS Big Sur 11.4でも直っていませんね。アップルも修正する気はないのでしょう。

      削除