强制 Ubuntu 来宾从 VirtualBox 上的 Windows 主机更新日期

Ric*_*ich 3 virtualbox virtual-machine

我在使用 VirtualBox 3 的 Windows 主机上以访客身份运行 Ubuntu Server。Ubuntu Server 安装了访客附加功能。

为了在我使用此图像时节省一点时间,我暂停而不是关闭。除了来宾机器上的时钟日期外,这工作正常。

一旦恢复来强制它从底层主机设置时钟,我是否可以在来宾上运行命令?

小智 5

由于你有一台 Windows 主机,你可以确保你有一个本地运行的 ntp 服务器:http : //blogs.msdn.com/b/w32time/archive/2008/04/02/configuring-a-standalone-time-server .aspx

您可以通过运行以下命令来验证服务器是否已打开:

w32tm /query /configuration
Run Code Online (Sandbox Code Playgroud)

请记住,您需要提升权限才能运行此命令。当您执行此操作时,您将获得一份配置设置清单。我们对 NtpServer 部分特别感兴趣:

NtpServer (Local)
DllName: C:\Windows\system32\w32time.dll (Local)
Enabled: 1 (Local)
InputProvider: 0 (Local)
AllowNonstandardModeCombinations: 1 (Local)
Run Code Online (Sandbox Code Playgroud)

第三行将指定 NtpServer(又名“服务器部分”)是否打开。如果 Enabled 为 1,则它处于打开状态。如果您看到 Enabled 为 0,则它已关闭。如果您运行的不是 Vista 或 Server 2008,您可以直接查询注册表:

 reg query HKLM\system\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
Run Code Online (Sandbox Code Playgroud)

您应该会看到一个类似于以下内容的条目:

Enabled    REG_DWORD    0x1
Run Code Online (Sandbox Code Playgroud)

和以前一样,1 是打开的,0 是关闭的。您可以通过运行以下命令随时打开 NtpServer:

reg add HKLM\system\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer /v Enabled /t REG_DWORD /d 0x1 /f

w32tm /config /update
Run Code Online (Sandbox Code Playgroud)

第一个命令将注册表中的 Enabled 标志更改为 1(打开 NtpServer),然后第二个命令将告诉 w32time 服务需要重新读取注册表中的配置,以使更改生效。您可以通过再次调用 w32time 来确认 NtpServer 实际上正在运行:

w32tm /query /configuration
Run Code Online (Sandbox Code Playgroud)

然后将其用作 Linux 客户端中的 ntp 服务器

ntpdate 10.0.2.2
Run Code Online (Sandbox Code Playgroud)

(请记住,运行 NAT 时,10.0.2.2是主机地址)。

我自己在寻找答案,发现这很有用,因为我们的防火墙阻止了默认的 ntp 端口。