在新买的笔记本上,我配置了Ubuntu自动同步时间,时区设置为UTC+8,笔记本连上网络后日期就没问题了。
但是当我在 air gap(离线)模式下启动笔记本电脑时,我注意到 Ubuntu 显示的日期时间不正确。我可以确认两者date
都date -u
返回了错误的日期。终端中未设置 TZ。UEFI 菜单中的日期仍然是正确的。我相信这date
不是使用笔记本电脑时钟的日期。date
在这种情况下如何解析日期?
我尝试在 UEFI 菜单中设置时间07/09/2016 21:04:xx
并执行以下命令:
$ date
Ahd Jul 10 05:04:25 MYT 2016
$ date -u
Sab Jul 9 21:04:26 UTC 2016
$ sudo hwclock
Ahad 10 Jul 2016 05:04:35 MYT .057058 seconds
$ sudo hwclock --localtime
Sabtu 09 Jul 2016 09:04:39 MYT .813741 seconds
我在 UEFI 中设置的日期现在变成了 的结果,date -u
而它应该是 的结果date
。这与 EUFI 时间服务有关吗?
答案1
正如您提到的,有两种不同的时钟:
- 软件时钟由Linux内核设置和使用,为所有程序提供时间
- 硬件时钟(实时时钟(RTC))具有电池备用电源(即始终运行),用于在启动时调整系统时钟
UEFI 无法访问系统时钟,因此使用 RTC。使用date
系统时钟。当有互联网连接时,它正常工作的原因可能是正在运行的ntp
服务在启动时调整时间?
您可能希望使用sudo dpkg-reconfigure tzdata
基于文本的选项来正确设置系统时间。如果 Ubuntu 在重启后仍会显示您的上次登录日期(真的吗?),则启动时基于 RTC 的系统时钟初始化似乎存在问题。
来源:man rtc
答案2
看起来 Ubuntu(自版本 15 以来)默认假设 RTC 为 UTC。以下是timedatectl
命令的结果:
$ timedatectl
Local time: Ahd 2016-07-10 16:07:28 MYT
Universal time: Ahd 2016-07-10 08:07:28 UTC
RTC time: Ahd 2016-07-10 08:07:28
Time zone: Asia/Kuala_Lumpur (MYT, +0800)
Network time on: yes
NTP synchronized: no
RTC in local TZ: no
我需要确保系统中安装的其余操作系统能够以 UTC 处理 RTC。