如何解決 Windows-Linux 雙啟動設置中顯示時間錯誤的問題
如果你 雙啟動 Windows 和 Ubuntu 或任何其他 Linux 發行版,你可能會注意到兩個操作系統之間的時間差異。
當你 使用 Linux 時,它會顯示正確的時間。但當你進入 Windows 時,它顯示的時間是錯誤的。有時,情況正好相反,Linux 顯示的是錯誤的時間,而 Windows 的時間是正確的。
特別奇怪的是,因為你已連接到互聯網,並且已將日期和時間設置為自動使用。
別擔心!你並不是唯一一個遇到這種問題的人。你可以在 Linux 終端上使用以下命令來解決這個問題:
timedatectl set-local-rtc 1
同樣,不要擔心。我會解釋為什麼你在雙啟動設置中會遇到時間差。我會向你展示上面的命令是如何修復 Windows 雙啟動後的時間錯誤問題的。
為什麼 Windows 和 Linux 在雙啟動時顯示不同的時間?
硬體時鐘也叫 RTC(實時時鐘)或 CMOS/BIOS 時鐘。這個時鐘在操作系統之外,在電腦的主板上。即使在你的系統關機後,它也會繼續運行。
系統時鐘是你在操作系統內看到的。
當計算機開機時,硬體時鐘被讀取並用於設置系統時鐘。之後,系統時鐘被用於跟蹤時間。如果你的操作系統對系統時鐘做了任何改變,比如改變時區等,它就會嘗試將這些信息同步到硬體時鐘上。
默認情況下,Linux 認為硬體時鐘中存儲的時間是 UTC,而不是本地時間。另一方面,Windows 認為硬體時鐘上存儲的時間是本地時間。這就是問題的開始。
讓我用例子來解釋一下。
你看我在加爾各答 UTC+5:30 時區。安裝後,當我把 Ubuntu 中的時區 設置為加爾各答時區時,Ubuntu 會把這個時間信息同步到硬體時鐘上,但會有 5:30 的偏移,因為對於 Linux 來說它必須是 UTC。
假設加爾各答時區的當前時間是 15:00,這意味著 UTC 時間是 09:30。
現在當我關閉系統並啟動到 Windows 時,硬體時鐘有 UTC 時間(本例中為 09:30)。但是 Windows 認為硬體時鐘已經存儲了本地時間。因此,它改變了系統時鐘(應該顯示為 15:00),而使用 UTC 時間(09:30)作為本地時間。因此,Windows 顯示時間為 09:30,這比實際時間(我們的例子中為 15:00)早了 5:30。
同樣,如果我在 Windows 中通過自動時區和時間按鈕來設置正確的時間,你知道會發生什麼嗎?現在它將在系統上顯示正確的時間(15:00),並將此信息(注意圖片中的「同步你的時鐘」選項)同步到硬體時鐘。
如果你啟動到 Linux,它會從硬體時鐘讀取時間,而硬體時鐘是當地時間(15:00),但由於 Linux 認為它是 UTC 時間,所以它在系統時鐘上增加了 5:30 的偏移。現在 Linux 顯示的時間是 20:30,比實際時間超出晚了 5:30。
現在你了解了雙啟動中時差問題的根本原因,是時候看看如何解決這個問題了。
修復 Windows 在 Linux 雙啟動設置中顯示錯誤時間的問題
有兩種方法可以處理這個問題:
- 讓 Windows 將硬體時鐘作為 UTC 時間
- 讓 Linux 將硬體時鐘作為本地時間
在 Linux 中進行修改是比較容易的,因此我推薦使用第二種方法。
現在 Ubuntu 和大多數其他 Linux 發行版都使用 systemd,因此你可以使用 timedatectl
命令來更改設置。
你要做的是告訴你的 Linux 系統將硬體時鐘(RTC)作為本地時間。你可以通過 set-local-rtc
(為 RTC 設置本地時間)選項來實現:
timedatectl set-local-rtc 1
如下圖所示,RTC 現在使用本地時間。
現在如果你啟動 Windows,它把硬體時鐘當作本地時間,而這個時間實際上是正確的。當你在 Linux 中啟動時,你的 Linux 系統知道硬體時鐘使用的是本地時間,而不是 UTC。因此,它不會嘗試添加這個時間的偏移。
這就解決了 Linux 和 Windows 雙啟動時的時差問題。
你會看到一個關於 RTC 不使用本地時間的警告。對於桌面設置,它不應該引起任何問題。至少,我想不出有什麼問題。
希望我把事情給你講清楚了。如果你還有問題,請在下面留言。
via: https://itsfoss.com/wrong-time-dual-boot/
作者:Abhishek Prakash 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive