1500マイル離れたデータセンターにヘッドレスUbuntu 12.04サーバーがあります。再起動時に2回、システムはfsckが必要であると判断しました。残念ながら、Ubuntuはインタラクティブモードでfsckを実行したため、データセンターの誰かにアクセスして、コンソールを接続し、Yキーを押すように頼む必要がありました。 -y
または-p
(別名-a
)フラグを使用して、ブート時にfsckが非対話モードで実行されるように設定するにはどうすればよいですか?
Ubuntuのブートプロセスを正しく理解している場合、initは mountall を呼び出し、これによりfsckが呼び出されます。ただし、fsckの起動方法を設定する方法はありません。これは可能ですか?
(1つの提案を回避するために、定期的なfscksを防ぐためにtune2fs -i 0 -c 0
を使用できることを承知しています。これは少し役立つかもしれませんが、fsckの本当の理由があったとしても、システムが立ち直ろうとする必要があります。停電後に言います。)
フォローアップの質問への回答として、ここに私の/ etc/fstabの関連する詳細があります。 Ubuntuがそこから編集したものから、これをまったく編集したとは思わない。
UUID=3515461e-d425-4525-a07d-da986d2d7e04 / ext4 errors=remount-ro 0 1
UUID=90908358-b147-42e2-8235-38c8119f15a6 /boot ext4 defaults 0 2
UUID=01f67147-9117-4229-9b98-e97fa526bfc0 none swap sw 0 0
私が探している設定は / etc/default/rcS 、FSCKFIX=yes
にあります。これは、「ブート中に不整合のあるファイルシステムを自動的に修復する」ことを意味し、-y
フラグを指定してfsckを実行します。私の両方のUbuntuシステムでno
に設定されました。
no
に設定されている場合でも、ブート時間fsckはまだいくらか非対話的です。 mountallは、-a
の同義語である-p
を使用してfsckを実行します。これは、「人間の介入なしで安全に修正できるファイルシステムの問題を自動的に修正する」ことを意味します。安全でない修正が行われると、-p
はインタラクティブモードになります。完全に自動的に実行するには、-y
またはFSCKFIX=yes
が必要です。
以下は、mountall.cからの関連するコードです。
if (fsck_fix || mnt->fsck_fix) {
NIH_MUST (nih_str_array_add (&args, NULL, &args_len, "-y"));
} else {
NIH_MUST (nih_str_array_add (&args, NULL, &args_len, "-a"));
}
Ubuntu 15,16,17+の場合、FSCKFIX値の設定はlib/init/vars.shにあります
コマンドgrep -r FSCKFIX * 2>/dev/null
を使用して終了できます。
Fstabでこれを引き起こす可能性のあるフラグがないことを確認し、initスクリプトを確認してください。 ( 'fsck'のinit scripsをgrepして、それが使用されている場所を見つけてください)私のシステムはfsckを非対話的に実行します。したがって、fstabのコピーと/ etc/init/mountallスクリプトの一部を比較できます
$ cat /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
UUID=acbe3514-33a3-4170-b1be-df7b8460a49a / ext4 errors=remount-ro 0 1
UUID=d361f696-7abc-11e1-9043-5711de71ade6 /home ext4 defaults 0 2
UUID=213e032c-fce9-4e1b-9d64-0779f0db4208 none swap sw 0 0
/ etc/init/mountallのスニペット
script
. /etc/default/rcS
[ -f /forcefsck ] && force_fsck="--force-fsck"
[ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix"
# set $LANG so that messages appearing in plymouth are translated
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE LC_MESSAGES LC_ALL
fi
exec mountall --daemon $force_fsck $fsck_fix
end script