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”は実行中に、Mediaパーティションを“mnt”→“Scratch”にマウントするように指示する。これにより、Mediaパーティションが見えるようになる。
そこで、rcはさらに“etc”→“rc”を実行する。一見自分自身を再実行しているように見えるが、Mediaのマウントにより覆い隠されているため、今度はMediaパーティションにあるrcが実行される。
システムファイルの破損を防ぐため
なぜこうした面倒くさいことを行なっているかと言えば、以前の記事でも触れたように、システムファイルの破損を防ぐためと思われる。
Apple TVは、パソコンのようにユーザーが手軽にメンテナンスできないため、重要なシステムファイルがある“OSBoot”パーティションは読み込み専用にし、ファイルの書き換えが起こらないよう工夫している。また、ビデオや写真、環境設定など、書き換えが発生するファイルは、読み込み/書き出しに対応した“Media”パーティションに置くというポリシーだ。
さらに、rcスクリプトを始めとする、システムの運用に関わっているが、今後、機器によっては変更されることが予想されるファイルについては、シンボリックリンクを活用し、2つのパーティションをまたいで運用しているのだ。
(次ページに続く)
この連載の記事
-
第4回
iPhone
DivXは再生できる? -
第2回
iPhone
sshdをインストールする -
第1回
iPhone
なぜHDDは3パーティション構成なのか - この連載の一覧へ