Linux
實時時鐘是錯誤的(從幾小時到幾年),需要在啟動時進行一次性非單調變化。Chrony 能解決這個問題嗎?
我不能保證某些機器上的實時時鐘是正常的(時間可能會錯幾小時、幾個月甚至幾年)。由於我也有斷斷續續的網路,所以我設置了 Chrony,希望它能解決這個問題。
但似乎 Chrony 想隨著時間的推移慢慢調整時鐘,保持時鐘單調且沒有劇烈變化。當漂移在幾秒鐘內時,這已經足夠了,但對於我的情況來說根本不是解決方案(在我的測試中,糾正 10 分鐘的漂移需要幾個小時)。順便說一句,我禁用
maxupdateskew
了。我真正想要的是在啟動早期進行重大更改(如果時間設置在將來,則非單調),精確到秒或(甚至更好)毫秒的數量級,並且在應用之後,ntp 客戶端可以自由執行其逐步調整。我認為這對於 ntp 客戶端來說是一個重要的案例,特別是對於沒有 RTC 的機器,但我找不到能很好地解決這個問題的解決方案。
我考慮了以下幾點:
hwclock --set --date="$(magically-get-correct-time)"; hwclock -s
在 Chrony 完成工作之前執行。問題是magically-get-correct-time
仍然必須通過 ntp 或其他服務收集,然後我必須安排 Chrony 在它成功後執行.. 這很難做到(比如:如果這個命令因為網路很差而失敗怎麼辦?這可能很快變得複雜)。一般來說,這感覺就像是膠帶。- 在Chrony
ntpdate
之前使用。Google告訴這是在一些論壇中提出的。我不知道這會有多好,而且感覺就像膠帶。(另外,據報導 ntpdate 已被棄用)現在,我真正在尋找的是一種只使用 Chrony 來解決這個問題的方法。是什麼讓我認為它可能能夠解決它是 Fedora Wiki 上關於Chrony 作為預設 NTP 客戶端的頁面。它聲稱:
在初始同步之後,時鍾永遠不會步進,這對於需要係統時間單調的應用程序很有用
對我來說,這表明在稱為初始同步的過程中,Chrony 可能會進行非單調步進。或者我希望如此。但是在我的安裝中,當它說
Feb 19 17:15:30 black chronyd[696]: System clock wrong by -759.702379 seconds, adjustment started
它不會盡快積極地糾正它;相反,它會將更改分散到幾個小時內,從不進行非單調的更改。所以我沒有看到任何提到的“初始同步”。而且我還無法找到如何配置它以進行任何非單調調整。
順便說一句,我正在使用 Chrony 1.27 執行 Arch Linux
initstepslew
按照文件中的說明使用。例如:
initstepslew 30 0.pool.ntp.org 1.pool.ntp.org 2.pool.ntp.org
並更換電池…