Поддерживать ли vboxadd-сервис на гостевой виртуальной машине, не синхронизируя время с хостом?

vboxadd-service в моем VirtualBox гости должны быть запущены, чтобы получить IP от следующих VagrantFile фрагмент кода, или же 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 не должен быть запущен на гостевой виртуальной машине, иначе время будет синхронизироваться с хостом, когда я меняю его с помощью 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
Другие вопросы по тегам