如何在运行时从guest虚拟机中禁用VirtualBox时间同步

时间:2014-07-30 15:45:50

标签: vagrant virtualbox virtualization

我有一个运行带有Guest Additions的Centos 6.5的VirtualBox VM,我需要能够随意禁用和启用来自guest虚拟机的时间同步。默认情况下,guest虚拟机每隔10秒与主机同步一次[1],这是Guest Additions内置的功能。

有一些方法可以禁用时间同步,但它们不足以满足我的需求:

  1. 在VM启动时禁用时间同步:

    VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

  2. 在运行时禁用VM中的guest虚拟机添加:

    sudo service vboxadd-service stop

  3. 他们不为我工作的原因是:

    1. 第一个选项仅适用于启动时 - 我需要能够在运行时执行此操作
    2. 第二个选项会停止添加来宾
    3. 所需的其他功能

      当我运行sudo VBoxControl guestproperty enumerate时,我没有看到与时间同步有关的事情。

      所以......一种在不禁用vboxadd-service服务的情况下从VirtualBox VM中禁用和启用时间同步的方法请:)

      [1] https://www.virtualbox.org/manual/ch09.html#idp59923008 - 第9.14.3节

4 个答案:

答案 0 :(得分:4)

您应该能够在客户端上编辑vboxadd-service脚本并添加--disable-timesync选项。然后应禁用sudo service vboxadd-service restart和时间同步。

另见https://www.winklerweb.net/index.php/blog/11-tools/25-disabling-time-synchronization-in-virtualbox-ubuntu-16-04

答案 1 :(得分:0)

这个对我有用: https://superuser.com/questions/742924/is-it-possible-to-get-a-virtualbox-vm-always-start-from-same-time-if-so-how

但我有windows guest,注册表的更改是必要的,以使其工作。我不知道您的来宾CentOS系统中的Windows注册表设置等同于什么。

答案 2 :(得分:0)

我有一个用流浪汉构建的ubuntu / trusty64虚拟机。我必须在虚拟机上的virtualbox guest虚拟机添加中关闭时间同步。为此,我将VBOX_OPTS添加到/etc/init.d/virtualbox-guest-utils中,如下所示:

编辑/etc/init.d/virtualbox-guest-utils插入以下行:

if [ -n "$2" ]; then

 VBOX_OPTS="$VBOX_OPTS $2"

fi

修改此行:

start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/VBoxService -- $VBOX_OPTS

现在像这样停止并启动服务

sudo service virtualbox-guest-utils stop
sudo service virtualbox-guest-utils start --disable-timesync

现在,我可以将日期设置为所需的日期,直到我重新启动计算机之前,日期都将保持这种状态。

date -s "2024-02-22 22:41:49,332" && date --rfc-3339=ns
date
Sat Feb 22 23:27:31 EST 2024

答案 3 :(得分:0)

我尝试了 --disable-timesync 解决方案,但在我的 VM 上没有任何区别。

请注意,在 Ubuntu 18.04 中,设置已更改为部分使用 systemd 环境。该服务位于此文件中:

/lib/systemd/system/vboxadd-service.service

ExecStart= 行为我们提供了找到文件的脚本的名称:

/opt/VBoxGuestAdditions-6.1.20/init/vboxadd-service

您必须小心,因为他们重新实现了 daemon(),您不能只是添加一个新选项。您必须确保所有条目都知道该附加选项。

第一个在这里,您必须添加$4

daemon() {
    $1 $2 $3 $4
}

还有另一个定义,您还需要添加如下所示的 $4

daemon() {
    start-stop-daemon --start --exec $1 -- $2 $3 $4
}

然后你可以像这样在行上添加一个选项:

    daemon $binary --disable-timesync --pidfile $PIDFILE > /dev/null

如果没有前两次编辑,就会失败。

现在,正如我上面提到的,这对我不起作用。相反,我必须做的是更改 VM 半虚拟化设置。默认情况下,它设置为 Default,我认为这意味着 KVM。相反,我现在使用最小

使用最小设置后,我的 VM 现在可以通过 ntp 正确计时。抖动只有大约 4 或更少。偏移量也非常小。我保留了 --disable-timesync,因为它应该没有必要。