Mac OS XのデフォルトファイルシステムHFS Plus。今回もHFSおよびHFS Plus共通の機能を解説していく。
前回紹介したもの以外にもHFS Plusにはいろいろと興味深い機能や仕様がある。ここでは、そうしたものをトピックごとに説明しよう。
表1にあるように、HFS Plusではスタートアップファイルという仕組みがある。これはファームウェアがいちいちカタログファイルを解釈しなくてもOSのブートローダーを簡単に呼び出せるよう便宜を図るための仕様だったのだが、実際にはこの仕組みは使われていない。では、マシンはMac OS Xのブートローダーをどうやって読み出しているのだろうか?
カタログファイル | ファイルやディレクトリに関する情報を管理 |
---|---|
アロケーションファイル | 各アロケーションブロックの使用状況を管理するビットマップを管理する |
エクステントオーバーフローファイル | ファイルが8つ以上のエクステントが必要になった場合、こちらにエントリを追加して管理する |
アトリビュートファイル | データフォーク、リソースフォーク以外のフォークに関する情報を管理する |
スタートアップファイル | OSのブートローダーを格納するための領域。Mac OS 9、Mac OS Xでは使用されていない |
Mac OS 9までのMac OSでは、起動ディスクにある「システムフォルダ」をFinderで開くと、そのシステムフォルダのCNIDをボリュームヘッダにあるFinderInfoに記録する。このディレクトリを開く行為を特に「bless」(祝福)といい、CNIDを記録されたディレクトリは「blessed(祝福された)フォルダ」といわれる。
MacintoshのファームウェアであるOpenFirmware*やEFI*はHFS Plusにアクセスできる。こうしたファームウェアはボリュームヘッダにあるFinderInfoを読み取り、blessされたディレクトリのCNIDを取得、続けてカタログノードを検索、blessされたディレクトリに格納されたファイルタイプがtbxi*であるファイルを読み取る。Mac OS 8/9の場合、「Mac OS ROM」というファイルが、Mac OS Xの場合/System/Library/CoreServicesにあるBootXがそれに当たる(図1)。
ファームウェアは、ファイルタイプがtbxiのファイルが実行ファイルの場合はそれを実行し、XMLテキストの場合はさらにそのXMLで記述された設定を読み取り実行することで、ブートローダーを起動する。
MacをOptionキーを押しながら起動するとブートセレクタが表示されるが、これは各ボリュームのそうしたblessedフォルダを探して一覧しているのだ。
Mac OS Xの場合、システム環境設定の起動ディスクで起動ボリュームを選択することで適切なblessが行われるが、blessコマンドでそうした情報の取得や、設定を行える(実行例1)。
$ bless --info
finderinfo[0]: 3048 => Blessed System Folder is /System/Library/CoreServices
finderinfo[1]: 0 => No Startup App folder (ignored anyway)
finderinfo[2]: 0 => Open-folder linked list empty
finderinfo[3]: 0 => No OS 9 + X blessed 9 folder
finderinfo[4]: 0 => Unused field unset
finderinfo[5]: 3048 => OS X blessed folder is /System/Library/CoreServices
64-bit VSDB volume id: 0xEDE011D9B9D50014
HFS Plusでのカタログノードの定義を見ると、興味深いことにHFS PlusではUNIX風のUID、GID、パーミッションやファイルフラグを納める領域が存在する(図2)。このおかげでHFS Plus上でもUFS*と同じようにパーミッションなどの情報を利用できる。
しかし、すでに解説したようにHFS PlusはCoplandで実装されMac OS 8.1でリリースされたファイルシステムであり、当時はまだUNIXベースのMac OS Xは存在しなかった。にもかかわらず、後で利用法を変更できるFinderInfoのような汎用領域にではなく、このような領域が最初から用意されている点には驚きを隠せない。いったい、当時のAppleが何を考えていたのか、謎はつきない。
PCIバスを持つPowerPCベースのMacで用いられているシステムファームウェア。Sun MicrosystemsのSPARCワークステーションで使われていたファームウェアを基にIEEEで規格化されたもの。Macで使われているOpenFirmwareは、さらにCHRP(Common Hardware Reference Platform)の一環で実装されたものである。なお、OpenFirmware採用以前のMacではMac OSとファームは混然一体の不可分の存在で、PC-9801におけるBASIC環境のようなものであった。
2006年1月に発表されたIntel CPU搭載Macで用いられている、システムファームウェアの仕様。そもそもはIntelがIA-64ベースのマシン用に策定したもので、8086時代の慣習に縛られた従来のPCのBIOSとは異なり、拡張性に優れる。ただし、現在のIntel MacにおけるEFIの実装には、まだ謎や疑問点が多い。
マシン起動時に利用されるファイルを示すファイルタイプ。Mac OS Xの場合BootXという2ndローダーがこれに当たり、デバイスドライバとDarwinカーネルをロードし実行する。OS 9の場合はMac OS ROMだ。
UNIX File System。4.3BSDで実装されたファイルシステム。Solarisのデフォルトファイルシステムでもある。
Copyright © ITmedia, Inc. All Rights Reserved.