“日期”从哪里检索日期?

“日期”从哪里检索日期?

在新买的笔记本上,我配置了Ubuntu自动同步时间,时区设置为UTC+8,笔记本连上网络后日期就没问题了。

但是当我在 air gap(离线)模式下启动笔记本电脑时,我注意到 Ubuntu 显示的日期时间不正确。我可以确认两者datedate -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

正如您提到的,有两种不同的时钟:

  1. 软件时钟由Linux内核设置和使用,为所有程序提供时间
  2. 硬件时钟(实时时钟(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。

相关内容