我的VirtualBox guest虚拟机中的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
关闭/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
运行?有没有办法让服务保持运行而不与主机同步?
答案 0 :(得分: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