先の例では起動実験ができれば良いという状況だったので「HDD内で動作しているシステムをそのまま焼き付ければよい」と、ずいぶん乱暴なことをした。もちろん、これだけで上手くいくわけではない。
CDやDVDは書き込み不可のリードオンリーメディアなので、それをルートシステムにそのままマウントしたら書き込めないことになる。Linuxシステムとしてはリードオンリーでは困る部分があるため、正常には動かないものとなっているはずだ。
ではどこかリードオンリーだとまずいのだろうか。簡潔にいうと/tmp
のことだ。
/tmp
は、各種コマンドやアプリケーションが一時的なファイルを作成する部分として利用している。これらソフトにとっては、/tmp
に書き込めないことは不正な状態を意味し続行が不可能となってしまう。
また、/var
もprocess idなど重要な情報がよく書き込まれるため、できるだけ書き込み可能な状態であった方がいいだろう。
/tmp
などはCDをルートとしてマウントした後、tmpfsで上書きマウントしてしまうことで、とりあえずは解決される。
tmpfsとはRAMディスク向けのファイルシステムで、作成時にサイズの指定がなくメモリが空いているだけファイルを作成できるというもの。ファイル数に応じて消費メモリ量が変化して対応するので/tmp
にはうってつけというわけだ。
/var
の場合は内部のディレクトリ構造が必要なため、まるまる全部をtmpfsで上書きというわけにもいかない。
ROMで/var
をマウントした後、必要な部分だけをtmpfs化するか、/var
全体をtmpfsにした後CDからディレクトリ構造をコピーして使うことになる。
ここまでくるとtmpfsをもっと大胆に利用できるのではないかといった考えに発展する。
つまり、ルートファイルシステムをtmpfsにてマウントしてしまうという考えだ。そうすることにより/tmp
はもちろんのこと/home
もRAMディスクになるため、ユーザーがそこでファイル作成したり、プログラム作成したりといった可能性を生み出すことになる。
実は、ほとんどのCDブートLinuxはこのRAMディスク基調のルート構成を採用している。
tmpfsをルートとする場合、initrdでルートにCDやDVDを直接マウントするのではなく、tmpfsをマウントして、CDやDVDはどこかディレクトリにマウントして都合するといったことになる。
この時点では、まだまだinitrdのお話なのである。