Как правильно синхронизировать время в linux, работающем как виртуальный гость, после выхода хоста из спящего режима?


19

Я использую несколько виртуальных блоков для разработки, и правильное время и дата важны для меня, когда я нажимаю git commit. Я не закрываю хост - он работает месяцами без перезапуска. Я сплю только на ночи и выходные. Это создает странную проблему для моих гостевых операционных систем (все Debian от turnkeylinux.org) - через некоторое время дата гостевых операционных систем отключается на несколько дней.

Хотя все гости используют NTP, он не работает, если обнаруживает, что дата выключена из-за больших значений (кажется, достаточно нескольких часов). Есть ли способ принудительной синхронизации NTP даже при большой разнице во времени? Или любое другое решение, которое восстановило бы правильную дату и время на гостевых ящиках после выхода хоста из спящего режима?


1
Подробности смотрите в этом ответе - в основном, гостевые дополнения обеспечивают прямую синхронизацию часов без необходимости использования NTP: superuser.com/questions/463106/…
Pierz

Ответы:


17

Вкратце: Установите (пакет ntp и) гостевые дополнения VirtualBox :)

  • Хост: Windows 6.1 SP1, x64, 3 ГБ
  • VirtualBox: v4.3.6
  • Гость: Debian 7.3, 32-бит, 768 КБ

Из VirtualBox прикрепите файл Oracle\VirtualBox\VBoxGuestAdditions.isoк гостевой системе (Настройки / Хранилище) и от имени root

cd /media/cdrom0
sh ./VBoxLinuxAdditions.run

Справка VirtualBox в разделе «9.4. Расширенная настройка для гостей Linux и Solaris» описывает шаги, но linux-headers-3.2.0-4-486сначала мне пришлось установить пакет .
Тогда, как корень,

/usr/lib/VBoxGuestAdditions/vboxadd setup
/usr/lib/VBoxGuestAdditions/vboxadd-service setup
/usr/lib/VBoxGuestAdditions/vboxadd setup

После этого перезагрузите гостя.

Я проверил, выйдя из гостевой системы ( Alt+ F4, затем приказал VirtualBox сохранить состояние гостя), подождав 5 минут, затем перезапустив гостевую систему.
Сначала часы были восстановлены с прежнего значения, но через несколько секунд все прошло нормально (часы синхронизированы)


На самом деле, это то, что я в конечном итоге делал :) Просто не было времени, чтобы опубликовать ответ, так что кредит идет на вас.
SiliconMind

NTP не требуется для синхронизации гостевых дополнений - он выполняется демоном гостевых дополнений (VBoxService).
Pierz

2
Почему вы предлагаете повторить первую команду дважды? Это действительно необходимо?
RDP

@RDP <quote> Действительно ли необходимо повторять первую команду дважды? </ Quote> Я не помню, и документация изменилась, см. [ Virtualbox.org/manual/ch09.html#idm7495]
Pierre

Вы должны установить gcc и сделать тоже. Отсутствие их приводит к ошибке при запуске службы vboxadd. Но вы не получите полезного предложения по установке этих пакетов, если вы не запустите vboxadd явно - VBoxLinuxAdditions.run не раскрывает его.
Гарри Цай

1

NTP-сервер не предназначен для работы внутри виртуальной машины. Это требует системных часов с высоким разрешением, с временем отклика на прерывания тактового генератора, которые обслуживаются с высоким уровнем точности. NTP-клиент может работать в некоторых решениях виртуализации. Запустите NTP на базовой ОС машины, а затем пусть ваши различные гостевые ОС используют хорошие часы, созданные в системе. Даже этого может быть недостаточно, поскольку могут потребоваться дополнительные инструменты или параметры ядра, чтобы клиенты виртуальных машин могли адекватно синхронизировать свои виртуальные часы с часами физической системы.

Источник: Поддержка NTP Известные проблемы

Исходя из этого утверждения и считая, что ваша важная часть - это времена git commit, было бы тривиально написать ловушку перед фиксацией для сбора времени с вашего хост-компьютера, и вы можете получить это, просто спросив свой хост-компьютер:

ssh hostmachine "date +%Y%m%d%H%M%s"


Спасибо, но это не совсем ответ :) Я использую VirtualBox, и нет вариантов синхронизации времени. Так что если не NTP то что?
SiliconMind

Извините, я сделал прыжок ... но теперь с правкой уточнил мою мысль.
vgoff
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.