我有一台 Raspberry Pi 和一台 Windows 10 机器,它们将通过 RJ45 直接连接,并位于同一子网中,以便它们可以通信。它们都将完全离线,无法访问互联网,但 Raspberry Pi 上的时间准确很重要。
我知道 PC 比 Raspberry Pi 更能保持时间,所以我希望可以设置一种方法让 Pi 从 PC 中获取时间。这可能吗?
答案1
Windows 可以通过 Windows 时间服务提供时间 /w32tm
有Ryan Sizemore 的旧 MSDN 博客条目关于运行 Windows 作为时间服务器:
最近,一位客户问我是否可以使用 w32time 作为其网络上其他计算机和设备的时间源。Windows 时间服务完全可以充当任何符合 NTPv3 标准的设备的时间源。
运行服务器
启动 w32tm 服务Start the w32tm service
您可以
Windows Time
从Services
控制面板区域启动该服务。通过提升的命令提示符/powershell 进行验证
Win+x将为您提供一个选项
Command prompt (Admin)
,您可以在其中输入:w32tm /query /configuration
您正在寻找这样一行:
Enabled: 1 (Local)
如果未启用,您可以查询注册表并在必要时添加正确的键:
询问:
reg query HKLM\system\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
添加:
reg add HKLM\system\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer /v Enabled /t REG_DWORD /d 0x1 /f
更新:
w32tm /config /update
使用 Windows PC 作为 Pi 的时间源
你说你已经知道如何让 Pi 使用特定的地址,但是如果你正在运行基于 Debian 的 Pi 发行版(例如拉斯普比),通常可以使用ntpdate
,例如
# ntpdate windowsPCaddr
当提升权限时(即 root / sudo
);windowsPCaddr
您已经确定的 Windows PC 的地址在哪里。
故障排除
我能够在全新安装的 Windows 10 上找到并启动该服务。但是你可能会得到
The following error occurred: The serveice has note been started. (0x80070426)
Services
在这种情况下,您需要从控制面板部分启动该服务(或者可以从开始菜单中通过搜索“服务”找到它 - 它被列为“桌面应用程序”)。
其他人遇到了以下错误:
w32tm does not exist as an installed service
在这种情况下,要使用的命令是:
w32tm /register
[这是]实际的安装方法(使用以管理员身份运行的命令提示符)。有时您需要重新启动才能使一切正常,但实际上我只是等待了一段时间而没有重新启动。