PC UNIXの起動と起動ファイルの解読 |
YAMAMORI Takenori ●yamamori |
rootファイルシステムは,カーネルによって起動時に直接マウントされる という意味で特殊なファイルシステムであると言えます.
一方,rootとは別パーティションに分けられた/usrや/homeなどについては, これらのマウントはカーネルが直接行なうのではなく, initの起動後,rcスクリプト中に記述されたmountコマンドが, /etc/fstab(Solarisではvfstab)の記述にしたがってマウントを行ないます.
ここで,ハードディスクなどのローカルファイルシステムのマウント時には マウント前にfsckによるファイルシステムのチェック(cleanフラグのチェックのみの 場合を含む)が必要なことに注意してください. この場合,/usrや/homeなどについては,rcスクリプト内でfsckを実行してから mountを実行すればよいだけですが,問題はrootファイルシステムのマウント時です. fsckコマンドはrootファイルシステムの中にあり,rootをマウントしないと fsckを実行することができません.しかし,そのマウントの前にfsckの実行が必要です. ここでも「鍵は鍵箱の中」状態になっているのです.
この問題を解決するためのトリックは,rootファイルシステムを いったんリードオンリでマウントすることにあります. カーネルはrootファイルシステムをリードオンリでマウントしたままinitを 実行し,initによって起動されるrcスクリプト中の最初の方でfsckを実行し, エラーがなければrootファイルシステムを書き込み可状態にremountするのです.