第10回 HFS Plus独自の機能【前編】Undocumented Mac OS X(1/2 ページ)

これまで解説してきたHFSおよびHFS Plusの基本的概念に引き続き、Mac OS Xになってから拡張されたHFS Plus独自の機能について説明する。

» 2007年09月27日 03時30分 公開
[白山貴之,ITmedia]

HFS Wrapper

 「Macintosh」は、長らくMac OSという単一のOSを動作させるための専用機であり、そのためPCと違いほかのOSやファイルシステムをあまり考慮しないという悪い癖があった。例えばPCのMBR*形式のパーティーションテーブルに各パーティーションのフォーマットを示すIDがあるように、アップルパーティーションテーブルにもファイルシステムの種別を示す領域がある。決してMacのHFS以外をまったく考慮していないわけではないのだが、古いMac OSはMFSやHFSなど自分の理解できるファイルシステム以外のものを見つけると「初期化しますか?」としつこく尋ねてくる*作りになっていた。

 これは、Mac上でほかのOSを動作させるべくほかのファイルシステムを構築しようとした人たちのみならず、HFS Plusを世に送り出そうとしたApple自身をも困らせることになる。そう、HFS Plusを理解しないMac OS 8.1以前の古いMac OSは、HFS Plusのボリュームを見つけるとユーザーに「初期化しますか?」と問い合わせてしまうのだ。このアラートパネルの[OK]ボタンをうっかり押してしまうと、ボリュームを初期化してしまうことになりかねず、そしてこの手のアラートパネルでは、無意識に最悪の選択を下すユーザーが後を絶たない。

 これに対する対症療法的な処置がHFS Wrapperだ。HFS Wrapperとは一言で言えば、HFS PlusのボリュームをHFSで「ラップ」してしまうことだ(図1)。具体的には、本来HFS Plus用に確保されたボリュームの先頭にHFSのボリュームヘッダと必要最小限の領域を確保、その後ろにHFS Plusのボリュームヘッダと実際のディスク領域を確保する、というものである。

図1 図1 HFS Wrapperの仕組み。HFS Plus対応のシステムは、先頭にあるダミーのHFS領域を無視してその後ろにある本来のHFS Plus領域をマウントする。HFS Plus非対応のシステムは先頭のHFSボリュームヘッダを見てダミーのHFSボリュームをマウントする。また、後ろのHFS Plus の領域を再利用され壊されることがないように、使用中かつ破損セクタというフラグを立て、システムやデフラグツールのようなユーティリティのアクセスを拒むようになっている

 HFS Plusを理解しないMac OSは、この先頭のHFSボリュームヘッダだけを見て、このボリュームをただ巨大なHFS領域だと誤認する。HFS Plusで実際に用いられている部分はHFS側のアロケーションファイルで「使用中」かつ「破損セクタ」*としてマークされているため使われない。このHFS Wrapperの領域が確保されるため、HFS Plusの領域はおおむね128Mバイトほど小さくなってしまう。

 HFS Plusをサポートする場合は、このHFS Wrapperの存在を必ず考慮すること、WrapperとなるHFSボリュームを見つけた場合はそれを無視してその後ろにあるHFS Plusのボリュームヘッダを見てマウントすることが決められている。

 HFS Wrapperはあくまでオプション的な存在であり、HFS Plusのボリュームを作るに当たって必ず用意しなければならないというものではない。しかし、実際のところMac OS Xでフォーマットしたディスクは、そのMacがMac OS 9で起動するかどうかにかかわらず*、すべてHFS Wrapperを提供している。

このページで出てきた専門用語

MBR

Master Boot Recordの略称。HDDなどのメディアの、最初のセクタ(512バイト)。ブートローダーやパーティーションテーブルなどが記録されている。

しつこく尋ねてくる

このような仕様になった原因として、そもそもMacはFDベースで動作するO Sであったこと、そしてMac OSの「Drive Setup」というHDDメンテナンスツールでは、パーティーション(ボリューム)の作成時しかそのボリュームを初期化できなかったことなどの問題が挙げられる。個別のボリュームを初期化するのはDrive SetupではなくFinderの仕事とされたのだが、DOSと違いドライブという概念も、UNIXのようにデバイスファイルという概念もない旧Mac OSは、ファイルシステムとしてマウントされていないデバイスやボリュームを指定してもらう手段を持たない。

Finderが理解できないボリュームを見つけたタイミングだけが、個別のボリュームを初期化する唯一の機会だったのだ。これはボリューム管理の明らかな失敗といえるのだが、なぜかこうした問題には目をつぶり、HFS Wrapperという場当たり的対処を賞賛する声が後を絶たない。

「使用中」かつ「破損セクタ」

「使用中」とすることで、その領域をうっかり使用して上書きされることを防ぎ、「破損セクタ」とすることで、HFS Plusを理解しないディスクメンテナンスツールが「使用中」フラグを解除し領域を再利用可能にしてしまうのを回避している。

そのMacがMac OS 9で起動するかどうかにかかわらず

IEEE1394(FireWire)を搭載するすべてのMacは「ターゲットディスクモード」という機能を持つ。これは、Tキーを押しながら電源を投入することで、IEEE1394のHDDとして起動する機能だ。この機能を利用すると、ほかのMacからHDDの中身を参照したり、Mac OS 9を起動できないMacをIEEE1394接続のHDDとし、旧来のMacをそのHDDからIEEE1394経由で起動させることもできる。そうした都合から、Mac OS 9を起動しないMacでもHFS Wrapperを提供する必要性があるのだと推察される。


関連キーワード

Mac | Mac OS X | UNIX | Apple


       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ