Як правильно синхронізувати час у Linux, який працює як віртуальний гість, після того, як хост відновиться зі сплячки?


19

Я використовую декілька віртуальних коробок для розробки, і правильний час і дата важливі для мене, коли я натискаю git виконує. Я не вимикаю свого хоста - він працює місяцями без перезавантаження. Я зимую лише вночі та вихідні. Це вводить дивну проблему в мої гостьові операційні системи (усі дебіани з 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).
П’єрз

2
Чому ви пропонуєте повторити першу команду двічі? Це справді потрібно?
RDP

@RDP <quote> Чи справді потрібно повторити першу команду двічі? </quote> Я не пам’ятаю, а документація змінилася див. [ Virtualbox.org/manual/ch09.html#idm7495]
П'єр

Ви також повинні встановити gcc і make. Відсутність у них проявляється як помилка при запуску служби vboxadd. Але ви не отримаєте корисну пропозицію встановити ці пакети, якщо явно не запустите vboxadd - VBoxLinuxAdditions.run не виставляє його.
Гаррі Цай

1

Сервер NTP не був розроблений для роботи всередині віртуальної машини. Він вимагає системного тактового режиму високої роздільної здатності, з часом відгуку на перерви годинника, які обслуговуються з високим рівнем точності. Клієнт NTP нормально працювати з деякими рішеннями для віртуалізації. Запустіть NTP на базовій ОС машини, а потім запропонуйте вашим різним гостям ОС скористатися хорошим годинником, який створюється в системі. Навіть цього може бути недостатньо, оскільки можуть бути додаткові інструменти або параметри ядра, які потрібно ввімкнути, щоб клієнти віртуальної машини могли адекватно синхронізувати свої віртуальні годинники з годинником фізичної системи.

Джерело: Підтримка відомих проблем NTP

З цього твердження і, читаючи, що вашою важливою частиною є час git вчинення часу, тоді було б тривіально написати гачок попереднього здійснення, щоб зібрати час з вашої хост-машини, і ви можете це отримати, просто запитавши у свого хост-машини:

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


Дякую, але це не зовсім відповідь :) Я використовую VirtualBox і немає варіантів синхронізації часу. Так якщо ні НТП, то що?
SiliconMind

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