17

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

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

2 ответа2

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 минут, затем перезапустив гостевую систему
Сначала часы были восстановлены с прежнего значения, но через несколько секунд все прошло нормально (часы синхронизированы)

1

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .