PC UNIXの起動と起動ファイルの解読

YAMAMORI Takenori ●yamamori

■コラム■fsckのトリック 〜リードオンリでのマウント〜

rootファイルシステムは,カーネルによって起動時に直接マウントされる という意味で特殊なファイルシステムであると言えます.

※注
カーネルが直接rootファイルシステムをマウントする時点では, mountコマンドや/etc/fstabは使用されません. ただしfstabには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するのです.

※注
Solarisではfsckコマンドは/sbinではなく/usr/sbin以下にあるため, rootファイルシステムだけでなく /usrについても最初はリードオンリでマウントされます.

To『PC UNIXの起動と起動ファイルの解読』[index]


このページは、技術評論社 「SoftwareDesign 2001年9月号、『起動ファイルから解読するPC UNIX』の原稿を元に、Web 用に再構成したものです。
To 謎の処理系 SunOS 4.1.4 [Home]
yamamori