3

У меня Ubuntu Server работает в качестве гостя на хосте Windows с использованием VirtualBox 3. На сервере Ubuntu установлены гостевые дополнения.

Чтобы сэкономить немного времени при использовании этого изображения, я приостанавливаю, а не выключаю. Это отлично работает за исключением даты часов на гостевой машине.

Есть ли команда, которую я могу запустить на госте после его восстановления, чтобы заставить его установить часы с основного хоста?

3 ответа3

5

Поскольку у вас есть хост Windows, вы можете убедиться, что у вас локально работает ntp-сервер: http://blogs.msdn.com/b/w32time/archive/2008/04/02/configuring-a-standalone-time-server .aspx

Вы можете проверить, включен ли сервер, выполнив следующую команду:

w32tm /query /configuration

Имейте в виду, что вам нужно подняться, чтобы выполнить эту команду. Когда вы выполните это, вы получите полный список настроек конфигурации. Мы особенно заинтересованы в разделе NtpServer:

NtpServer (Local)
DllName: C:\Windows\system32\w32time.dll (Local)
Enabled: 1 (Local)
InputProvider: 0 (Local)
AllowNonstandardModeCombinations: 1 (Local)

В третьей строке будет указано, включен ли NtpServer (он же «серверная часть»). Если Enabled равен 1, то он включен. Если вы видите, что Enabled равен 0, то он выключен Если вы не используете Vista или Server 2008, вы можете запросить реестр напрямую:

 reg query HKLM\system\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer

Вы должны увидеть запись, которая выглядит примерно так:

Enabled    REG_DWORD    0x1

Как и раньше, 1 включено, 0 выключено. Вы можете в любой момент включить NtpServer, выполнив следующие команды:

reg add HKLM\system\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer /v Enabled /t REG_DWORD /d 0x1 /f

w32tm /config /update

Первая команда изменит флаг «Включено» в реестре на 1 (включив NtpServer), затем вторая команда сообщит службе w32time, что необходимо повторно прочитать конфигурацию в реестре, чтобы изменения стали активными. Вы можете подтвердить, что NtpServer действительно работает, снова вызвав w32time:

w32tm /query /configuration

Затем используйте это как ваш ntp-сервер из вашего клиента Linux

ntpdate 10.0.2.2

(Помните, что при запуске NAT 10.0.2.2 является адресом хоста).

Я сам искал ответ и нашел его полезным, так как наш брандмауэр блокирует порт ntp по умолчанию.

2

Если вы маршрутизируете интернет-соединение с гостевой ОС, вы можете использовать ntpdate для синхронизации его часов с серверами специального времени, например

sudo ntpdate ntp.ubuntu.com
0

Вы должны установить гостевые дополнения VirtualBox: https://www.virtualbox.org/manual/ch04.html#idm1933 и удалить все установленные ntp/ntpd. Обратите внимание, что у вас есть пакет в Ubuntu/Debian с именем virtualbox-guest-dkms который перекомпилируется при обновлении ядра, это лучший способ установки гостевых дополнений.

VirtualBox сохранит дату, даже если вы долго зависали, и перезагружали ее из замороженного состояния. NTP не может этого сделать, так как он должен работать без «паузы».

Обновление: похоже, это ошибка: https://www.virtualbox.org/ticket/16181

Обновление: я прочитал следующую ветку:https://forums.virtualbox.org/viewtopic.php?f=8&t=27279

И кажется, что использование следующего в гостевой системе поможет (что прямо противоположно вопросу ОП):

VBoxService --enable-timesync

Странно то, что даже когда я устанавливаю --timesync-set-on-restore 1 журнал показывает Guest Property: /VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore not found .

Но, похоже, работает немного лучше (если часы вашего хоста верны).

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