Linuxで次回起動時にfsck
を強制したい場合は、ルートファイルシステムにforcefsck
ファイルを作ってやれば良い。 この操作はtouch
コマンドを使って、以下のようにファイルを作ることで行うよう紹介されることが多い。
touch /forcefsck
このことは経験的に知っていたのだが、/forcefsck
をブートプロセスがチェックし、fsck
を実行することはどこに明文化されているのかがふと気になった。
少なくともfsck
のmanページには書かれていない。 調べてみるとshutdown
コマンドのmanには、/forcefsck
ファイルに関して、以下の記述があることがわかった。 引用する。
The -F flag means ‘force fsck’. This only creates an advisory file /forcefsck which can be tested by the system when it comes up again. The boot rc file can test if this file is present, and decide to run fsck(1) with a special ‘force’ flag so that even properly unmounted file systems get checked. After that, the boot process should remove /forcefsck.
これによるとshutdown -F
すると/forcefsck
を作る、次回起動時にブートプロセスがこれをチェックし、fsck
が実行されることを期待しているようにみえる。
これを読むと、実は/forcefsck
ファイルはユーザがおいそれとtouch
するものではなく、本来はshutdown
コマンドに作らせるものなのではないか、という気がしてくる。
ちなみに、shutdown
コマンドのmanにはもう1つ興味深い事が書かれている。 それがshutdown -f
オプションである。
The -f flag means ‘reboot fast’. This only creates an advisory file /fastboot which can be tested by the system when it comes up again. The boot rc file can test if this file is present, and decide not to run fsck(1) since the system has been shut down in the proper way. After that, the boot process should remove /fastboot.
これはshutdown -F
と対を成すオプションだ。 これによるとルートファイルシステムにfastboot
ファイルを作ってやれば、次回起動時のfsck
を抑止できるようだ。 試したことはないが、いつか使ってみたいものだ。
fsckをめぐる冒険はひとまずこれで終わり。