【コラム】

OS X ハッキング!

90 "HFSX"なディスクイメージを作成する

    海上忍  [2004/05/10]

    大枚をはたいて購入したCPUカード「PowerLogix PowerForce G4 1.2GHz」は頗る快調、ファンレスのまま一度のカーネルパニックもなく活躍している。とはいえ、室温が上がる夏に備えなければならぬのがCubeユーザの宿命。ロジックボードまで埃まみれになる内蔵ファンには正直ウンザリなので、早めに代替策を考えなければ……。

    さて、今回はディスク管理用コマンド「diskutil」について。1年ほど前にも当コラムで取りあげたことがあるが、その後機能がいくつか追加されたため、ここに再登場させる次第だ。

    ディクユーティリティの内側

    Pantherには、「ディスクユーティリティ」というGUIベースのディスク管理ツールが付属している。ハードディスクや各種光学ディスクなどの初期化やパーティション設定、マウント/アンマウントの処理など、物理ディスクの管理が主な機能だ。Jaguar(サーバ版を除く)のときには有効化できなかったジャーナリング機能にも対応したほか、それまで「Disk Copy」として独立していたディスクイメージファイル管理ツールも統合され、物理/論理を問わずディスク管理はこれ1つでOKとなった。

    しかし、ディスクユーティリティ自体は"張りぼて"であり、実際の処理(プロセス)はコマンドによって処理されている。/sbinディレクトリに置かれた「mount_***」や「newfs_***」(***部分にはファイルシステム名などが入る)など、そのコマンドは多数あるが、決して使いやすいとはいえない。

    diskutilとhdiutilはそれらディスク管理用コマンドのなかでも比較的扱いやすく、しかもディスクユーティリティでは無効化されているPantherの隠し機能を利用できる。以下に、その利用例を示してみよう。

    case-sensitiveなディスクイメージを作成する

    HFS+では「Abc」と「abc」が同一のファイルであるとみなされる(case-insensitive)ため、同じフォルダ上に大文字/小文字が異なるだけのファイルは保存できないが、明確に区別する(case-sensitive)ファイルシステムならばそれが可能となる。もう1つのファイルシステムである「UFS」はcase-sensitiveだが、Mac OS X上ではファイルアクセス速度がHFS+に大きく見劣りするほか、Mac OS独特のファイル形式である複合フォークの扱いが完全ではないため、case-sensitiveなファイルシステムを必要とするユーザもHFS+を選択してきたことが実情だ。

    Pantherでは、ついにHFS+でもcase-sensitiveをサポートするようになったが、ディスクユーティリティにそのような選択肢は存在しない(サーバ版を除く)。この仕様は多くのOS Xユーザにとって問題とはならないうえ、いったん初期化しなければならないなど導入時の障壁もあるため、敢えて外しているものと思われる。以下のようにdiskutilコマンドを実行すればcase-sensitiveなHFS+ボリューム(HFSX)を作成できるが、当然ながらすべてのデータは消去されるので注意してほしい。

    $ sudo diskutil eraseVolume "Case-sensitive HFS+" VolName /Volumes/VolName

    物理ディスク全体をcase-sensitiveにすることに抵抗を感じる場合には、適当なサイズのディスクイメージを作成し、それをHFSXでフォーマットすればいいだろう。たとえば、サイズ20MBの「sensitive」というボリューム名のHFSXディスクイメージを作成するには、以下のとおりコマンドを実行すればOK。これで、カレントディレクトリにHFSXフォーマットのディスクイメージ「Image.dmg」が作成されたはずだ。

    $ hdiutil create Image -megabytes 20 -fs HFSX -volname "sensitive"

    使い方は通常のディスクイメージと変わらず、Finderでアイコンをダブルクリックすればマウント処理は完了だ。Terminalから実行する場合には、openコマンドを使えばいいだろう。なお、Finderの情報ウインドウでは通常のHFS+と識別できないため、マウント後にはdiskutikコマンドでボリュームの情報を調べてほしい。File System欄に「Case-sensitive HFS+」、Partition Type欄には「Apple_HFSX」と表示されていればOKだ。

    $ diskutil info /Volumes/sensitive

    関連記事

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

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