在安裝 CentOS 5.4 和 Windows 7 雙系統後,發現 Windows 系統時間總是比實際時間慢 8 小時,且未連網時情況更明顯。最初懷疑是 Windows Time 服務未設為自動啟動,但調整後問題依舊。直到某次未插網線直接進入 Ubuntu 發現時間快 8 小時,插上網線又恢復正常,重啟進 Windows 7 又慢 8 小時,才意識到是雙系統對硬體時間的解讀方式不同導致的。
UTC(協調世界時)與 GMT(格林尼治平時) 是時間標準的基礎。問題的關鍵在於作業系統如何看待主機板上的硬體時鐘(RTC):
假設 Linux 設定為東八區,當前系統時間 09:00 AM,此時硬體實際存儲的是 UTC 時間 01:00 AM。重啟進入 Windows 後,Windows 直接讀取硬體時間並顯示為 01:00 AM,比 Linux 慢了 8 小時。反之,在 Windows 同步網路時間後,硬體時間被寫入本地時間,再進 Linux 會顯示快 8 小時。若涉及夏令時地區,情況更複雜。
Ubuntu 預設啟用 UTC,修改方式:
sudo gedit /etc/default/rcS
# 找到 UTC=yes,改為 UTC=no
Fedora 可透過圖形介面:System → Administration → Date & Time → Time Zone,取消勾選 System clock uses UTC。
以管理員身分開啟命令提示字元,執行:
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
此法只需在 Windows 端操作,Linux 保持預設 UTC 即可,雙系統時間將完美同步。
雙系統時間混亂的本質是「硬體時間定義權之爭」。建議採用方法二,讓 Windows 遵循 UTC 標準,更符合現代作業系統設計理念,也能避免夏令時帶來的額外麻煩。
Linux 關機/重啟指令詳解:shutdown、halt、reboot、init 差異與最佳實踐
CentOS 6.5 安裝 JDK 1.7 完整步驟與環境配置詳解
Linux 自旋鎖與核心調度關係深度解析:為什麼自旋鎖不能睡眠
Linux 主機間 SCP 免密碼傳輸檔案設定 (SSH Key)
Linux 高精度定時與休眠:setitimer、select、nanosleep 完全指南
基於 FPGA 的 UART 設計全解析:波特率產生、發送/接收狀態機、中間值採樣與 Verilog 完整代碼