在不与主机同步时间的情况下,在客户机虚拟机上保持 vboxadd 服务运行?



我的 VirtualBox 来宾中的vboxadd-service必须运行才能从以下VagrantFile代码片段中获取 ip,否则vagrant hostupdater命令将无法按预期工作:

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

关闭vboxadd-service时生成的/etc/hosts文件:

## 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!

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

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

这似乎有效:

# 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/ $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

最新更新