发布于 2020-12-01 08:14:47
更新:如德鲁凝胶所提到的,时钟同步修复是在WSL2内核版本5.10.16.3中发布的
过时
在编写本报告时,这个GitHub问题是为bug打开的。
针对我的情况(WSL2中的单个发行版),我选择的解决办法是使用Windows在WSL中运行hwclock,无论何时Windows硬件时钟。
Windows:以管理员身份打开PowerShell
schtasks /create /tn WSLClockSync /tr "wsl.exe sudo hwclock -s" /sc onevent /ec system /mo "*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (EventID=1)]]"
Set-ScheduledTask WSLClockSync -Settings (New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries)WSL2:运行
sudo visudo并将hwclock添加到sudoers以跳过密码提示
# bottom of my file looks like this
...
...
#includedir /etc/sudoers.d
<username> ALL=(ALL) NOPASSWD:/usr/sbin/hwclock, /usr/bin/apt update, /usr/bin/apt upgrade结果

有关如何从Windows筛选中获取事件XPath,请参见图像。用于让任务调度程序自动显示计划好的触发器。

发布于 2021-04-03 12:04:23
如果有人通过搜索发现这一点,并且没有注意到问题中实际上列出了一个解决方案,那么您可以通过WSL时钟漂移。
sudo hwclock -s如果您只是偶尔需要这样做,这是一个很好的解决方案。如果您需要更频繁地这样做,请考虑@piouson的解决方案
发布于 2021-04-15 00:53:43
更新
更新!注意,您可能需要从Windows安装WSL2,以获得每个这条来自微软的克雷格的帖子的最新内核版本。
旧答案
sudo hwclock -s给你带来了某种意义,但由于某些原因,我发现时间不确定--我经常发现未来的时间是一分钟左右!
sudo ntpdate pool.ntp.org应该给你正确的时间。
但是这一切都是因为Linux内核中的bug在某个时候应该包含在Windows中.
根据我的经验,GitHub问题中引用了许多黑客,它们可以解决这一问题,但并不总是如此。
https://stackoverflow.com/questions/65086856
复制相似问题