SUNT的随手记

闲的时候,做一些对自己有益的事

0%

wsl2时间同步问题

使用 wsl2 linux 子系统时,在 Windows 休眠唤醒后时间不同步

系统:Ubuntu22.04

1
2
3
4
5
6
7
8
9
10
11
12
13
版本	Windows 11 企业版
版本 22H2
安装日期 ‎2023/‎3/‎31
操作系统版本 22621.1413
体验 Windows Feature Experience Pack 1000.22639.1000.0

WSL 版本: 1.2.5.0
内核版本: 5.15.90.1
WSLg 版本: 1.0.51
MSRDC 版本: 1.2.3770
Direct3D 版本: 1.608.2-61064218
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.22621.1413

wsl2 启动的 linux 子系统,在 windows 睡眠唤醒后,时间会延迟,理论上可以使用 sudo hwclock -s 来同步硬件时间,并加入定时任务每小时执行一次,但这并不太可靠,有时必须 wsl --shutdown 关闭并重启 wsl 才能生效,所以使用以下方式解决

/lib/systemd/system/systemd-timesyncd.service 中 [Unit] 单元下注释掉原 ConditionVirtualization 属性,添加新 ConditionVirtualization 属性

1
2
3
4
5
sudo vim /lib/systemd/system/systemd-timesyncd.service
//添加
# ConditionVirtualization=!container
ConditionVirtualization=
ConditionVirtualization=wsl

重新加载 systemctl 管理服务的配置文件

1
sudo systemctl daemon-reload

重启 systemd-timesyncd 服务

1
sudo systemctl restart systemd-timesyncd

查看 systemd-timesyncd 运行状态

1
sudo systemctl status systemd-timesyncd

如果没有 systemd-timesyncd ,可以安装一下

1
sudo apt install systemd-timesyncd

参考链接:
https://github.com/microsoft/WSL/issues/5324