第8回 HFS、HFS Plusの基本的概念【中編】Undocumented Mac OS X(1/3 ページ)

Mac OS XのデフォルトファイルシステムHFS Plus。今回もHFSおよびHFS Plus共通の機能を解説していく。

» 2007年08月03日 00時59分 公開
[白山貴之,ITmedia]

HFS Plusの詳細機能

 前回紹介したもの以外にもHFS Plusにはいろいろと興味深い機能や仕様がある。ここでは、そうしたものをトピックごとに説明しよう。

bless

 表1にあるように、HFS Plusではスタートアップファイルという仕組みがある。これはファームウェアがいちいちカタログファイルを解釈しなくてもOSのブートローダーを簡単に呼び出せるよう便宜を図るための仕様だったのだが、実際にはこの仕組みは使われていない。では、マシンはMac OS Xのブートローダーをどうやって読み出しているのだろうか?

カタログファイル ファイルやディレクトリに関する情報を管理
アロケーションファイル 各アロケーションブロックの使用状況を管理するビットマップを管理する
エクステントオーバーフローファイル ファイルが8つ以上のエクステントが必要になった場合、こちらにエントリを追加して管理する
アトリビュートファイル データフォーク、リソースフォーク以外のフォークに関する情報を管理する
スタートアップファイル OSのブートローダーを格納するための領域。Mac OS 9、Mac OS Xでは使用されていない
表1 ボリュームヘッダーで管理されているファイル

 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)

図1 図1 Macの起動の流れ

 ファームウェアは、ファイルタイプが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

実行例1 blessコマンドで起動ボリューム情報の取得や設定を行える

オーナー、グループ、パーミッション

 HFS Plusでのカタログノードの定義を見ると、興味深いことにHFS PlusではUNIX風のUID、GID、パーミッションやファイルフラグを納める領域が存在する(図2)。このおかげでHFS Plus上でもUFS*と同じようにパーミッションなどの情報を利用できる。

図2 図2 HFS Plusにおけるパーミッション、オーナーの情報。カタログノードの中間にデータがあることから分かるように、Mac OS Xになって付け加えられたのではなく当初からこれだけのデータ領域が確保されていたことが分かる。もちろん、本来HFS Plusが使われるはずだったCoplandでこうした情報が必要だったという話もなく、HFS Plusの設計者が何を思ったものかとても興味深い

 しかし、すでに解説したようにHFS PlusはCoplandで実装されMac OS 8.1でリリースされたファイルシステムであり、当時はまだUNIXベースのMac OS Xは存在しなかった。にもかかわらず、後で利用法を変更できるFinderInfoのような汎用領域にではなく、このような領域が最初から用意されている点には驚きを隠せない。いったい、当時のAppleが何を考えていたのか、謎はつきない。

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

OpenFirmware

PCIバスを持つPowerPCベースのMacで用いられているシステムファームウェア。Sun MicrosystemsのSPARCワークステーションで使われていたファームウェアを基にIEEEで規格化されたもの。Macで使われているOpenFirmwareは、さらにCHRP(Common Hardware Reference Platform)の一環で実装されたものである。なお、OpenFirmware採用以前のMacではMac OSとファームは混然一体の不可分の存在で、PC-9801におけるBASIC環境のようなものであった。

EFI(Extensible Firmware Interface)

2006年1月に発表されたIntel CPU搭載Macで用いられている、システムファームウェアの仕様。そもそもはIntelがIA-64ベースのマシン用に策定したもので、8086時代の慣習に縛られた従来のPCのBIOSとは異なり、拡張性に優れる。ただし、現在のIntel MacにおけるEFIの実装には、まだ謎や疑問点が多い。

tbxi

マシン起動時に利用されるファイルを示すファイルタイプ。Mac OS Xの場合BootXという2ndローダーがこれに当たり、デバイスドライバとDarwinカーネルをロードし実行する。OS 9の場合はMac OS ROMだ。

UFS

UNIX File System。4.3BSDで実装されたファイルシステム。Solarisのデフォルトファイルシステムでもある。


関連キーワード

Mac | Mac OS X | UNIX | カーネル


       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ