ブート時にfsckを非対話的に実行するにはどうすればよいですか?


19

1500マイル離れたデータセンターにヘッドレスUbuntu 12.04サーバーがあります。再起動時に2回、システムはfsckが必要であると判断しました。残念ながら、Ubuntuはインタラクティブモードでfsckを実行したため、データセンターの誰かにアクセスして、コンソールを接続し、Yキーを押してもらう必要がありました。ブート時にfsckが-yor -p(aka -a)フラグを使用して非対話モードで実行されるように設定するにはどうすればよいですか?

Ubuntuの起動プロセスを正しく理解している場合、initはmountallを呼び出し、mountallはfsckを呼び出します。ただし、fsckの起動方法を設定する方法はありません。これは可能ですか?

(1つの提案tune2fs -i 0 -c 0を回避するために、定期的なfscksを防ぐために使用できることを知っています。それは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

1
この質問とそれに関連/etc/default/rcSする答えは、Ubuntu 16とUbuntu 18がsystemdを使用するようになったため、2019年には実際には有効ではありません。systemdの詳細はわかりませんが、fsck.repair構成/カーネルコマンドラインオプションが関連しているようです。ドキュメントは現在そのデフォルトがpreenであると言います、それは意味し-pます。また、に設定することができるyesため-y/etc/default/grubこれを設定する場所かもしれません。もっと知識のある人が現代のシステム化された答えを提供してくれたらありがたいです。
ネルソン

回答:


29

私が探している設定は/ etc / default / rcSにありFSCKFIX=yesます。これは、「ブート中に不整合のあるファイルシステムを自動的に修復する」ことを意味し、-yフラグを指定してfsckを実行します。no私の両方のUbuntuシステムで設定されていました。

に設定した場合でもno、ブート時間fsckはまだいくらか非対話的です。mountallは-a、の同義語でfsckを実行します-p。これは、「人間の介入なしに安全に修正できるファイルシステムの問題を自動的に修正する」ことを意味します。-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"));
}

追加することにより、同じ達成することができますにsystemdとの最近のOS用fsck.repair=yesのparamにGRUB_CMDLINE_LINUX_DEFAULTして/etc/default/grub
Maxxer

2

Ubuntu 15,16,17+の場合、FSCKFIX値の設定はlib / init / vars.shにあります

コマンドgrep -r FSCKFIX * 2>/dev/nullを使用してフィンを特定できます。


1
ありがとう!私は肯定的ではありませんが、そのファイル内のコメントは、まだ設定を構成する必要があることを示唆しています/etc/default/rcS/lib/init/vars.shにはデフォルトがありますFSCKFIXが、/etc/default/rcSそれをオーバーライドできるソースがあります。新しくインストールされたUbuntu 18システムであるOTOHにはrcSファイルがまったくありませんでした。
ネルソン

1

fstabでこれを引き起こす可能性のあるフラグがないことを確認し、initスクリプトを確認してください。( 'fsck'のinit scripsをgrep 'して、それが使用されている場所を見つけてください)

$ 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

1
助けてくれてありがとう。grep FSCKFIX /etc/default/rcSあなたのシステムに何が書かれているか教えてください。
ネルソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.