fsck 終了ステータス「システムを再起動する必要があります」

fsck 終了ステータス「システムを再起動する必要があります」

Linux の fsck(8) マンページには、次の終了コード表が含まれています。

   The exit code returned by fsck is the sum of the following conditions:

          0      No errors
          1      Filesystem errors corrected
          2      System should be rebooted
          4      Filesystem errors left uncorrected
          8      Operational error
          16     Usage or syntax error
          32     Checking canceled by user request
          128    Shared-library error    

終了コード2は「システムを再起動する必要があります」に割り当てられているため、どの目的にも使用されると想定できます。ただし、原則として、fsckシステムの動作にまったく重要ではない一種の外部サムドライブを確認してから、この終了コードを返すことは可能です。このように不可欠でないファイルシステムのエラーのために再起動が必要であることは言うまでもありません。特にファイルシステムがfsck

「システムを再起動する必要があります」終了コードとはどういう意味ですか?実際に意味は?

答え1

これは、スキャンの実行時に問題のファイルシステムがマウントされ、fsckエラーを修正するにはディスク上のデータを実際に修正する必要があり、システムを再起動しないとファイルシステムを手動で再マウントできないことを意味します。

主な状況は、ルートファイルシステムでエラーが検出(および修正)される場合です。ファイルシステムをスキャンするための非常にクールなinitramfsまたはリカバリ環境がない場合は、スキャン時にルートファイルシステムを実行します(したがって読み取り専用としてマウントされます)。

パフォーマンス上の理由から、カーネルはマウントされたファイルシステムのキャッシュされたメタデータを再検証しません(fsckマウントされたファイルシステムのカーネルを除いてディスク上のデータは何も変更しないため)。したがってfsck、これらのメタデータの一部を変更する必要がある場合、カーネルはカーネル(ほとんどのUNIXシステムでは不可能)またはユーザーにファイルシステムをアンマウントしてから再マウントして、カーネルが変更されたメタデータを選択できるように指示します。ルートファイルシステムは実際にはシステム自体を再起動します。

答え2

これは、システムを再起動する必要があることを意味します。

fsck実装は通常、必要な場合にのみこのコードを返すように注意してください。たとえば、e2fsckマウント時にルートファイルシステムのエラーが修正された場合(通常確認されるまで読み取り専用でマウントされます)。外付けドライブに入れないでください。

使用している特定のチェッカーのマニュアルを確認する必要があります。たとえば、fsck.fat同じ終了コードを使用せずに盲目的に終了コードを 2 と仮定すると、再起動すると予期しない結果が発生する可能性があります。

関連情報