システム時間の変更を試みることを許可しながら「手動でfsckを実行する」メッセージを防ぐにはどうすればよいですか?

システム時間の変更を試みることを許可しながら「手動でfsckを実行する」メッセージを防ぐにはどうすればよいですか?

私はユーザーが希望の日時を設定し、自由に再起動できるようにするシステムを開発しています。一つを除いては大丈夫です。戻るジャンプに大きな時間がかかると、再起動時に次のエラーが発生します。

Checking filesystems
IMAGE2: Superblock last mount time (Tue Mar  1 17:32:48 2011,
        now = Thu Feb 24 17:34:29 2011) is in the future.

IMAGE2: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
        (i.e., without -a or -p options)

*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.

...その後、停止を開始してユーザーコンソールの入力を待ってコンソールアクセスを取得した場合でも、ルートパスワードを入力し続ける必要があります。

これは明らかに理想的ではありません。スキャンをスキップするか、再起動時に自動的にスキャンを実行する方法はありますか?

Google は、これがヒットした場合に手動で fsck を実行するのにのみ役立ちますが、これは私が追求するものではありません。時間を設定した後に手動でfsckを実行すると、この時点でファイルシステムがまだマウントされているため機能しなくなり、単にfsckを完全に無効にすることは理想的ではありません。

私はRed Hat 6を使用しています。

修正する:私が現在使用している解決策は、fstabをハッキングして再起動時にfsckチェックを無効にすることです。 Edit Last Mount Time on Diskを試してみましたが、debugfsext3ドライブではうまく機能しますが、ext4では一貫して失敗するようです。

答え1

e2fsck将来的には、ハッカーが最後のインストール時間または最後の書き込み時間の特定のチェックを無効にすることを提案します。これらの定義は質問.c/質問.h、および次の目的に使用されます。スーパーC。しかし、検索中にE2fsprogs 1.41.10に/etc/e2fsck.conf次の新しいオプションが追加されたことがわかりました。破損したシステム時計。これはあなたに必要なようですが、Red Hat Enterprise Linux 6を使用しているので、このオプションを含む1.41.12が必要です。マニュアルページから:

   broken_system_clock
          The e2fsck(8) program has some hueristics that assume  that  the
          system clock is correct.  In addition, many system programs make
          similar assumptions.  For example, the UUID library  depends  on
          time  not going backwards in order for it to be able to make its
          guarantees about issuing universally unique ID’s.  Systems  with
          broken  system clocks, are well, broken.  However, broken system
          clocks, particularly in embedded systems, do exist.  E2fsck will
          attempt  to  use  hueristics to determine if the time can no tbe
          trusted; and to skip time-based checks if this is true.  If this
          boolean  is set to true, then e2fsck will always assume that the
          system clock can not be trusted.

はい、マニュアルページには「heuristics」という綴りはありません。こんな。しかし、おそらくコードはとにかく動作します。 :)

答え2

ソースコードを変更せずにこのチェックを具体的に削除する方法があるかどうか疑われます。 fsckですべてのエラーを無視するのは危険です。別の問題がある場合はどうすればよいですか?

したがって、次の回避策を提案します。 fsckを実行する前に起動スクリプトを変更して、システムの日付を将来の特定の時間(32ビットシステムの場合は2038-01-18)に設定してから、ハードウェアから再読み込みして設定します。その後、時計(hwclock --hctosysハードウェアおよびハードウェア時計のGMTの使用に応じて、必要に応じてより多くのオプションが提供されます。)

答え3

より多くのコントロールを持っている(または単にスナップショットに戻る)、仮想マシンで実行する必要があるようです。

答え4

私にとって非常に効果的な解決策は次のとおりです。

/etc/e2fsck.conf を生成します。

[problems]

# Superblock last mount time is in the future (PR_0_FUTURE_SB_LAST_MOUNT).
0x000031 = {
preen_ok = true
preen_nomessage = true
}

# Superblock last write time is in the future (PR_0_FUTURE_SB_LAST_WRITE).
0x000032 = {
preen_ok = true
preen_nomessage = true
}

この修正の詳細についてはこちらをご覧ください。

http://stillstup.blogspot.com/2010/02/superblock-last-mount-time-is-in-future.html

関連情報