問題描述
為什么主板硬件時鍾比系統時間慢8個小時?為什么UOS和Windows雙系統的情況下,時鍾會錯亂?
【桌面專業版】【服務器企業版】
【ARM64】【MIPS64】【AMD64】
解決方案
bios中的時間沒有時區概念,只負責計時;但是操作系統有。
默認情況下,windows在存取系統時間過程中,將bios時間當做本地時間來操作,所以bios中的時間顯示和操作系統中時鍾顯示一致。
UOS和其他linux發行版中將bios時鍾當做UTC+0:00時間,讀取時操作系統時鍾會根據當前時區設置,如中國為UTC+8:00,那么系統顯示時鍾就跟BIOS時鍾相差8小時;寫入時,會將用戶設置的新時間轉換為UTC+0:00時區時間寫入bios中。
這樣做的好處,當系統上存在多個使用不同時區的操作系統的時候,例如一個UTC+8:00的系統和一個UTC+4:00的系統,在一個系統中修正了當前時鍾后,存入UTC+0:00時區,其他操作系統使用系統時區顯示依然是可以正常顯示的,不會亂掉;而windows的這種做法,會導致本地有多個時區的系統的情況下,進入其他系統都都會錯亂。
這個是一個特性,不是一個bug。所以原則上我們會和其他Linux發行版保持一致,不會去修復這個問題。如果有商業需求可以提商業化定制方案。
Windows可以通過修改注冊表將默認邏輯修改為和Linux一致:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
“RealTimeIsUniversal”=hex(b):01,00,00,00,00,00,00,00
UOS和其他發行版可以使用如下命令讓操作系統將本地時間寫入bios:
sudo timedatectl set-local-rtc 1 —adjust-system-clock
使用如下命令保存UTC時間:
sudo timedatectl set-local-rtc 0 —adjust-system-clock
