防止 Ubuntu 更改硬件时钟

防止 Ubuntu 更改硬件时钟

我总是告诉人们“不会出错”,而且如果我从安装了 Ubuntu 的 U 盘启动他们的系统,“他们的计算机甚至不会记得”,但我最近发现事实并非如此。从 U 盘启动可能会更改使用它的计算机的硬件时钟。

正如解释的那样这些帮助页面,Linux 和 Windows 分别将硬件时钟解释为 UTC 和本地时间。这意味着在双启动系统中,人们希望让 Linux 也将系统时钟读取为本地时间,以防止 Windows 不匹配。问题是我想在以 Linux 为主操作系统的计算机和以 Windows 为主操作系统的计算机上使用我的 pendrive,因此无论我对我的 pendrive 做出什么决定(本地时间与 UTC),它都不适合所有计算机。

有没有办法简单地阻止 Ubuntu 更改系统时钟,这样至少我不会弄乱其他人的设置?如果这意味着 pendrive 系统有时不会显示正确的时间,那就这样吧。

给热切举报者的提示:我知道这个问题在这个网站上已经被双启动器问了一千次(参见下面的两个问答),但据我所知,建议的解决方案始终是调整 Linux 设置以将硬件时钟解释为本地时间(或让 Windows 将其解释为 UTC)。这对我来说不是一个选择,因为我想要一个便携的不会改变的制度任何时钟。

答案1

systemd-timesyncd.service

负责更新基于 systemd 的系统上的时间。这是 systemd 的内置 NTP 客户端。这将停止并禁用它:

$ sudo -i 
# systemctl stop systemd-timesyncd
# systemctl disable systemd-timesyncd

(systemd 使用timedatectl并且它本身也可以使用)。

请注意,无论您的问题是什么,当系统时钟设置为本地时间时,systemd-timesyncd不会更新硬件时钟。因此,最简单的方法是使用本地时间。

  • 在旧版本中,会有一个UTC=yes/etc/default/rcS如果要禁用更新硬件时钟,请将其设置为 no
  • timedatectl --adjust-system-clock set-local-rtc true其功能相同,并会警告您时区变化和夏令时调整。

答案2

我认为将 USB 驱动器 Linux 安装自定义为不引人注目的客户端是一个很好的目标。我认为这可能是一个简单的内核修改,以消除执行此操作的功能,但看起来内核只是提供写入 CMOS 的功能,并且hwclock是负责更新时间的程序。所以我认为你应该获取源代码hwclock并消除功能cmos_set_time。重建它并用新构建的版本替换您的 USB 驱动器版本的 /sbin/hwclock。

相关内容