Подтвердить что ты не робот

Как синхронизировать время при пробуждении хоста в VirtualBox?

Я запускаю Ubuntu 12.04 на базе Vagrant с использованием VirtualBox. Пока все в порядке - за исключением одного:

Предположим, что виртуальная машина запущена. Затем хост переходит в режим ожидания. После повторного пробуждения виртуальная машина все еще работает, но ее внутренние часы продолжаются, когда они останавливаются, когда хост опустился. Таким образом, это в основном означает: поставить хост на 15 минут, разбудить его снова, тогда внутренние часы VM будут опоздать на 15 минут.

Как я могу это исправить (установка времени вручную не по понятным причинам;-))? Есть ли способ запустить script внутри Vagrant VM всякий раз, когда хост-система изменяет свое состояние?

Я прочитал в документации, что по умолчанию гостевые дополнения VirtualBox синхронизируют время с хостом каждые 10 секунд. Видимо, этого не происходит, но я не могу найти места, где он отключен. Итак, любые идеи?

PS: добавляются гостевые дополнения и соответствуют используемой версии VirtualBox.

4b9b3361

Ответ 1

В документации нет некоторых деталей.

Что VirtualBox делает каждые 10 секунд, это просто небольшая корректировка (примерно 0,005 секунды). Только когда разность времени достигает порога (по умолчанию 20 минут) выполняется "реальная" повторная синхронизация.

Вы можете уменьшить значение thresold (то есть до 10 секунд) с помощью следующей команды:

VBoxManage guestproperty set <vm-name> "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 10000

Ответ 2

Подводя итог ответам @zilupe и @Slobodan Kovacevic, решение состоит в следующем: Vagrantfile:

config.vm.provider 'virtualbox' do |vb|
   vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
end

Это будет синхронизировать часы каждый раз, когда desync становится > 1 с (1000 мс)

Ответ 3

Я даю другое решение для синхронизации времени между гостем и хостом без установки дополнения к Virtualbox:

  • установите ntp на своего гостя и отметьте эти строки в /etc/ntp.conf:

    disable auth
    broadcastclient
    

Затем перезапустите ntp с помощью service ntp restart

  1. Активное вещание на хосте:

    • Для пользователей Linux отредактируйте файл /etc/ntp.conf и настройте широковещательную рассылку (вы должны настроить IP):

      broadcast 192.168.123.255

    • Для пользователей Windows активируйте услугу "" Время Windows ". Вы можете прочитать эту страницу, чтобы настроить его на время трансляции

    Затем перезапустите службу времени на хосте.

Ответ 4

Для меня, чтобы работать в режиме timesync, я должен был сделать это:

vboxmanage setextradata «machine-name» "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0

Включает функцию timesync. По какой-то причине это было запрещено.

Ответ 5

вы можете установить гостевые дополнения VirtualBox в виртуальной машине, чтобы автоматически синхронизировать время с помощью VB.

Ответ 6

Я нашел решение:

  • установить ntpdate
  • добавить "s" разрешение для ntpdate, это позволяет пользователям без полномочий root запускать ntpdate с правами root: sudo chmod u+s /usr/sbin/ntpdate
  • добавьте одну строку в ~/.bashrc: ntpdate -u ntp.ubuntu.com

После этого каждый раз, когда вы входите в систему linux, время будет синхронизироваться один раз.