我的客户虚拟机中的时间比主机时间快约 20-30 分钟。我该怎么做才能使客户虚拟机中的时间与主机上的时间相同?
答案1
对于 Linux 主机,首先在客户机上安装 DKMS(动态内核模块支持)包(来源):
$ sudo apt-get install dkms
然后将 Guest Additions 安装到客户系统中:
Ubuntu 20.04+
$ sudo apt-get install virtualbox-guest-utils
Ubuntu 18.04 或更早版本
$ sudo apt-get install virtualbox-guest-additions
此外,以下是一些调整 VirtualBox 时间同步的命令。
答案2
以下设置允许我的客户机可靠地保持与主机相差 1 秒的时间。已使用运行 VirtualBox 4.3.26 的主机和运行相同版本的 VirtualBox Guest Additions 的客户机进行了测试。至于 VirtualBox 5.x,到目前为止,我不需要进行这些配置更改;时间已自动同步。
参考:https://www.virtualbox.org/manual/ch09.html#changetimesync
在主机上,列出虚拟机以确定相关虚拟机的名称。
$ VBoxManage list vms | awk '{print $1}'
"CentOS6"
在主机上,通过运行以下命令为客户机配置时间同步参数。首先设置$VMNAME
其适当的值。如果的值$VMNAME
包含空格,当然应该用引号引起来。
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-interval" 10000
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust" 100
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore" 1
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 1000
上述时间参数的值已被限制为 10 的倍数。设置timesync-set-threshold
为 10000 可能很诱人,但当触发时,这可能会带来相当剧烈的时间变化的风险,因此可能会破坏应用程序。
在主机上,查看客户机的更新相关值。这些值可以随时重新确认。
$ VBoxManage guestproperty enumerate ${VMNAME} | grep timesync | sort
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-interval, value: 10000, timestamp: 1402110397618554000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust, value: 100, timestamp: 1402110777505446000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore, value: 1, timestamp: 1402110904964050000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold, value: 1000, timestamp: 1402110660162295000, flags:
在客户机上,停止并禁用所有内部 NTP 和相关计时服务。不应使用这些服务,因为它们可能会干扰 VirtualBox。在 CentOS 6 客户机上:
$ sudo /sbin/chkconfig ntpd off
$ /sbin/chkconfig --list | grep ntp
ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off
在客户机上,重新启动名为 的服务vboxadd-service
。假设之前安装了 Guest Additions,则此服务应该已安装并启用。在 CentOS 6 客户机上:
$ /sbin/service vboxadd-service status
Checking for VBoxService ...running
$ sudo /sbin/service vboxadd-service restart
Stopping VirtualBox Guest Addition service [ OK ]
Starting VirtualBox Guest Addition service [ OK ]
$ /sbin/service vboxadd-service status
Checking for VBoxService ...running
如果客户机上的时间尚未同步,请重新启动客户机。
答案3
我给出了另一种解决方案,无需安装 Virtualbox 客户机附加组件即可同步客户机和主机之间的时间:
- 在您的客户机上安装 NTP,并取消注释这些行
/etc/ntp.conf
。
disable auth
broadcastclient
- 在您的主机上激活广播。对于 Linux 用户,编辑
/etc/ntp.conf
文件并配置以下行
broadcast 192.168.123.255
对于 Windows 用户,请激活“Windows 时间”服务。然后您可以阅读此页配置它来广播时间