双系统时间同步

问题描述


不管是在Windows还是Ubuntu中设置了正确时间,在切换操作系统的时候,还是会出现时间不同步的情况

原因是Windows和Ubuntu在默认情况下看待硬件时间(主板上的BOIS显示的时间)的方式不一样

  • Windows把系统硬件时间当作本地时间(Local time),即操作系统中显示的时间跟BIOS中显示的时间是一样的

  • Linux/Unix/Mac把硬件时间当作UTC(Universal Time Coordinated,协调世界时),操作系统中显示的时间是硬件时间经过换算得来

假如你的Ubuntu和Windows中设置的时区都为北京时间东八区,而你在Ubuntu中把当前系统时间更改为9:00AM。则此时硬件中存储的实际时间是1:00AM。这时你重启进入Windows后,你会发现 windows系统中显示的时间是1:00AM,比Ubuntu中慢了八个小时。同理,你在 Windows中更改或用网络同步了系统时间后,再到Ubuntu中去看,系统就会快了8小时

更改Ubuntu


转为Local Time

如果是Ubuntu16.04之前的版本,只需要将Ubuntu的UTC时间切换成Local Time

可以直接编辑配置文件,将/etc/default/rcS文件中的UTC=yes改成UTC=no

sudo gedit /etc/default/rcS
  • 1

如果想要快速修改配置文件

sudo sed -i 's/UTC=no/UTC=yes/' /etc/default/rcS
  • 1

使用ntpdate校准时间

如果是Ubuntu16.04,那么配置文件中可能没有UTC=yes,这时候可以用ntpdate校准时间

安装ntpdate

sudo apt-get install ntpdate
  • 1

校准时间

sudo ntpdate time.windows.com
  • 1

如果你是安装的Windows+Ubuntu双系统,需要将时间更新到硬件上,以免Windows的时间不对

sudo hwclock --localtime --systohc
  • 1

更改Windows


如果要让Windows把硬件时间当作UTC,在CMD窗口(快捷键Win+R,输入cmd,回车)中输入如下命令,可以快速编辑注册表

Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
  • 1

或者直接编辑注册表,打开注册表编辑器(快捷键Win+R,输入regedit,回车),并找到一下目录位置

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/TimeZoneInformation/
  • 1

添加一项类型为REG_DWORD的键值,命名为RealTimeIsUniversal,值为1,重启后时间即回复正常

posted @ 2020-07-14 10:06  hichens  阅读(2239)  评论(0编辑  收藏  举报