このページの本文へ

Apple TV OS 詳細解析 第3回

どうやってOSを起動している?

2007年05月18日 10時30分更新

文● 白屋麻

  • この記事をはてなブックマークに追加
  • 本文印刷

2度実行されるrcスクリプト


稼働中のApple TVにリモートログインし、“etc”内にあるrcの内容を見ると、普通のMac OS Xとまったく同じプログラム構成となっている。しかし、HDDを抜き出して、“OSBoot”パーティションの“etc”内にあるrcを見てみると、稼働中のものとは構成が異なる。

Apple TV独自のプログラム構成が、起動プロセスを経ることでMac OS Xと同じものに変わる──。このカラクリを実現するものこそが、シンボリックリンクだ。

通常、Mac OS Xでは、“etc”は“private”→“etc”に、“private”はさらに“mnt”→“Scratch”に、それぞれシンボリックリンクを張っている。

Apple TVのシステムでも“mnt”→“Scratch”以下にファイルが用意されている。OS起動直後はまず、OSBootパーティションにある“mnt”→“Scratch”以下の“rc”を実行する。

rcを実行

まずはOSBoot側で、シンボリックリンクをたどって、“mnt”→“Scratch”以下の“rc”を実行する

この“rc”は実行中に、Mediaパーティションを“mnt”→“Scratch”にマウントするように指示する。これにより、Mediaパーティションが見えるようになる。

そこで、rcはさらに“etc”→“rc”を実行する。一見自分自身を再実行しているように見えるが、Mediaのマウントにより覆い隠されているため、今度はMediaパーティションにあるrcが実行される。

Media側をマウントしてrcを読み出し

OSBoot側のrcを実行すると、その指示によって“mmt”→“Scratch”にMediaパーティション が覆いかぶさる。続けて再度rcの実行が命令され、今度はMediaパーティション側のrcが読み出される



システムファイルの破損を防ぐため


なぜこうした面倒くさいことを行なっているかと言えば、以前の記事でも触れたように、システムファイルの破損を防ぐためと思われる。

Apple TVは、パソコンのようにユーザーが手軽にメンテナンスできないため、重要なシステムファイルがある“OSBoot”パーティションは読み込み専用にし、ファイルの書き換えが起こらないよう工夫している。また、ビデオや写真、環境設定など、書き換えが発生するファイルは、読み込み/書き出しに対応した“Media”パーティションに置くというポリシーだ。

さらに、rcスクリプトを始めとする、システムの運用に関わっているが、今後、機器によっては変更されることが予想されるファイルについては、シンボリックリンクを活用し、2つのパーティションをまたいで運用しているのだ。


(次ページに続く)

カテゴリートップへ

この連載の記事

ASCII.jp RSS2.0 配信中