Boot
如何在允許嘗試系統時間更改的同時避免“手動執行 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.
…然後引導掛起等待使用者控制台輸入,即使獲得控制台訪問權限,也需要root密碼才能繼續。
這顯然不太理想。有沒有辦法跳過檢查或強制檢查在重新啟動時自動進行?
Google 僅提供了需要在遇到此問題時手動執行 fsck 的幫助,這不是我所追求的。設置時間後手動執行 fsck 不起作用,因為此時文件系統仍處於掛載狀態,並且完全禁用 fsck 並不理想。
我正在使用紅帽 6。
更新:我目前正在使用的解決方案是破解 fstab 以禁用重啟時的 fsck 檢查。我嘗試使用 編輯磁碟上的最後安裝時間
debugfs
,這對於 ext3 驅動器工作正常,但在 ext4 上似乎不一致地失敗。
我打算建議黑客
e2fsck
禁用特定檢查以在未來最後一次安裝時間或最後一次寫入時間。這些在 issue.c / problem.h中定義,並在super.c中使用。但在查看時,我發現 E2fsprogs 1.41.10 添加了一個名為broken_system_clock的新選項。這似乎正是您所需要的,並且由於您使用的是 Red Hat Enterprise Linux 6,因此您應該擁有 1.41.12,其中包含此選項。從手冊頁:/etc/e2fsck.conf
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.
是的,手冊頁不能拼寫“啟發式”。哎呀。但大概程式碼無論如何都可以工作。:)