banner
Magneto

Magnetoの小屋

Magneto在區塊鏈上の小屋,讓我們的文章在互聯網上永遠熠熠生輝!!

雙系統趣事

用雙系統 Windows 和 Ubuntu 的同學其實遇到過一個很有意思的問題,雙系統時間不同步,從 Linux 切換回 Windows 後恰好慢了 8 個小時

其實這是因為 Windows 和 Linux 對硬體時鐘(RTC)時間的解讀方式不同。
我們的主板上會有一顆時鐘晶片,存儲著物理世界的時間,但
Windows 認為硬體時鐘裡存儲的時間應該是本地時間(比如,你的時區是東八區,硬體時鐘就應該是北京時間)。
Linux/Ubuntu 認為硬體時鐘裡存儲的時間應該是 UTC(協調世界時)時間。

假設你的時區是 東八區(UTC+8,北京時間)。真實世界的時間是 北京時間(本地時間)下午 4 點(16:00),對應的 UTC 時間就是 上午 8 點(08:00)。

第一步:在 Windows 中#

1. 正在使用 Windows,系統時間正確顯示為 16:00(下午 4 點)。
2.Windows 認為硬體時鐘應該存儲本地時間。所以,它會把 16:00 這個時間寫入硬體時鐘。

第二步:重啟,進入 Ubuntu#

1. 啟動電腦,進入 Ubuntu。
2.Ubuntu 去讀取硬體時鐘,它默認認為硬體時鐘上存儲的是 UTC 時間。於是它讀到了 16:00。
3.Ubuntu 心想:“哦,硬體時鐘上說 UTC 時間是 16:00。而我所在的時區是 UTC+8,那麼本地時間應該是 UTC 時間加上 8 小時。”
4. 計算:16:00(它以為的 UTC) + 8 小時 = 第二天凌晨 00:00。
5.Ubuntu 自動通過互聯網進行網絡時間校準(NTP)。當系統啟動聯網後,它發現:“咦?我根據硬體時鐘算出來的本地時間(00:00)和網絡標準時間(16:00)對不上,差了 8 小時。”
於是,Ubuntu 做了一件聰明事:

  • 它自動把系統時間糾正為了正確的網絡時間(16:00)。
  • 同時,為了保持未來的一致性,它用這個糾正後的 UTC 去更新硬體時鐘
  • 此時,硬體時鐘裡的數字被 Ubuntu 從 16:00 改為了 08:00。

第三步:重啟,切回 Windows(時間錯誤)#

再次重啟電腦,回到 Windows。

  • Windows 去讀取硬體時鐘,它依然認為硬體時鐘上存儲的是本地時間。於是它讀到了 08:00。
  • 當 Windows 無法在啟動時自動聯網校準時,則需要手動校準,因此直接把這個時間顯示為本地時間上午 8 點。

此文由 Mix Space 同步更新至 xLog
原始鏈接為 https://fmcf.cc/notes/17


載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。