![防止 Ubuntu 更改硬件时钟](https://linux22.com/image/896549/%E9%98%B2%E6%AD%A2%20Ubuntu%20%E6%9B%B4%E6%94%B9%E7%A1%AC%E4%BB%B6%E6%97%B6%E9%92%9F.png)
我总是告诉人们“不会出错”,而且如果我从安装了 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。