今回はApple TVの起動プロセスを明らかにしていこう。結論から言うと、Apple TVのOSと普通のMac OS Xでは、起動プロセスが似ているようで異なる。キーワードとなるのは、シンボリックリンクだ。
sshでApple TVにリモートログインし、“ps”コマンドで稼働中のプロセスを確認すると、通常のMac OS Xにリモートログインした場合とほとんど同じ構成なのがわかる。では、Apple TVはどうやってこれらのソフトをどういう手順で起動しているのだろうか。
“rc”スクリプトから変わる起動プロセス
Apple TVのハード自体はインテルCPUを用いたMacそのものであるから、OSの起動部分についてもMac OS Xとほぼ同じであると推測できる。
つまり、EFIのファームウェアがHDD上のブートローダー『boot.efi』を読み出し、続けてboot.efiがOSの中核部分である『mach_kernel』と必要なデバイスドライバーをメモリー上にロード/実行する──といった具合なのだろう。
【まめ知識】Mac OS Xの起動プロセス
Mac OS Xは、起動時に上のような順番でデータを読み込んでいる。ちなみに起動プロセスは、実はPowerPC MacとインテルMacで若干異なる。
PowerPC Macが採用するOpenFirmwareでは、ハードウェアに接続されているデバイス全体の確認を行ない、デバイスツリーを作成する。これに対して、インテルMacのEFIでは、起動に必要な最低限のハードウェアの確認しか行なわない。このためROM内のプログラムの処理が短く、高速な起動の助けになっているのだ。
Apple TVが普通のMac OS Xとひと味違うのは、最初のプロセスである『launchd』が起動した後の、“rc”スクリプトからだ。rcはrun commandの略で、OSの起動直後に初期化を行なうシェルスクリプトである。
Apple TVでは、このrc以前は“OSBoot”パーティションよりファイルを読み出しているが、rc以降はシンボリックリンクを利用して“Media”パーティションからもファイルを引っ張ってくるようになる。
(次ページに続く)
この連載の記事
-
第4回
iPhone
DivXは再生できる? -
第2回
iPhone
sshdをインストールする -
第1回
iPhone
なぜHDDは3パーティション構成なのか - この連載の一覧へ