2017-08-16 101 views
1

vboxadd-service在我的VirtualBox的客人必须运行从以下VagrantFile代码片段获得IP,否则按预期vagrant hostupdater命令将不起作用:保持guest虚拟机上运行的vboxadd服务没有与主机同步时间?

config.hostmanager.ip_resolver = proc do |vm, resolving_vm| 
     if vm.id 
     `VBoxManage guestproperty get #{vm.id} "/VirtualBox/GuestInfo/Net/2/V4/IP"`.split()[1] 
     end 
    end 

所得/etc/hosts文件时vboxadd-service关闭:

## vagrant-hostmanager-start                    

value bareOSdirector 

value webserver 

value bareOSremoteSD 

## vagrant-hostmanager-end 

,这是因为...

如果vboxadd-service正在运行...你可以运行此命令,并得到:

VBoxManage guestproperty get "turnkey_lamp_packer_test_webserver_1502906374188_41719" "/VirtualBox/GuestInfo/Net/2/V4/IP" 
Value: 10.0.3.8 

但是,如果它没有运行,而不是你将得到:

VBoxManage guestproperty get "turnkey_lamp_packer_test_webserver_1502906374188_41719" "/VirtualBox/GuestInfo/Net/2/V4/IP" 
No value set! 

但为了让我能够轻松地更改时间在我的虚拟机测试事情...... vboxadd-service必须不在guest虚拟机上运行,​​否则,当我使用sudo date -s命令更改时,时间将与主机同步。

除了每次启动和停止服务外,如何保持vboxadd-service运行而忽略时间同步?有没有办法保持服务运行,而不与主机同步时间?

回答

1

这似乎工作:

# On the host... 
VBoxManage setextradata "vm-name" "/VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1 

# On the guest(s)... 
sudo sed -i.bak 's/\(daemon \$binary\) \(--pidfile \$PIDFILE > \/dev\/null\)/\1 --disable-timesync \2/g' /opt/VBoxGuestAdditions-5.0.40/init/vboxadd-service && rm /opt/VBoxGuestAdditions-5.0.40/init/vboxadd-service.bak 
sudo sed -i.bak '0,/start-stop-daemon --start --exec \$1 -- \$2 \$3/{s/start-stop-daemon --start --exec \$1 -- \$2 \$3/\0 $4/}' /opt/VBoxGuestAdditions-5.0.40/init/vboxadd-service && rm /opt/VBoxGuestAdditions-5.0.40/init/vboxadd-service.bak 
sudo systemctl daemon-reload 
sudo systemctl restart vboxadd-service 
sudo rm /etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service 
相关问题