Как вручную установить системное время в VirtualBox?


30

Я пытаюсь вручную установить время компьютера в VirtualBox, но оно всегда сбрасывается на то, что было до того, как я его изменил. Как я могу отключить ntp и сказать системе, во сколько я хочу, чтобы это было?


Можете ли вы дать более подробную информацию о вашей проблеме? В какое время вы хотите, чтобы это было и какое время устанавливает ваш компьютер?
QBi

5
Я хочу установить произвольное неправильное время на моем компьютере.
Джереми Бича

Ответы:


30

Я нашел решение. Прочитайте следующий материал: ссылка

В основном, если у вас есть хост Windows и гость Ubuntu, сделайте следующее:

  1. Найдите имя вашей виртуальной машины (Virtual Machine) - запустите VB (VirtualBox), выберите свою виртуальную машину, откройте настройки, во вкладке «Общие» проверьте имя, например, в моем случае Ubuntu 12.04 32bit
  2. В Windows запустите интерпретатор командной строки, перейдите в C:\Program Files\Oracleпапку и нажмите, VirtualBoxчтобы выбрать, затем, удерживая левую клавишу Shift, щелкните правой кнопкой мыши и выберите меню «Открыть командное окно здесь», переводчик должен быть запущен сейчас
  3. Вставьте следующую команду (измените имя виртуальной машины на свое имя!):

    VBoxManage setextradata "Ubuntu 12.04 32bit" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

  4. Наконец, запустите гостя Ubuntu и установите время и дату вручную.


6
это определенно должен быть принятый ответ! я не хотел отключать гостевые добавления, так как у меня есть общая папка, смонтированная на моем сервере Ubuntu 14 guest
Jon B

К сожалению, это не «замораживает» время в гостевой системе. В некоторых сценариях вы все время хотите полностью зависнуть (например, для выполнения воспроизводимых сборок).
ВасяНовиков

это просто сэкономило мне много времени
elsadek

Если вашей операционной системой является Ubuntu, введите команду: vboxmanage setextradata "your_VM_name_here" "VBoxInternal / Devices / VMMDev / 0 / Config / GetHostTimeDisabled" 1
Раду Марис

Смотрите этот вопрос, он работал , когда я пробовал: stackoverflow.com/a/45724822/18149 The vboxadd-serviceнеобходимый дополнительный аргумент на госте, в основном--disable-timesync
leeand00

23

Как упоминалось в другом ответе, если вы используете Ubuntu в качестве гостя в VirtualBox, вы должны знать, что системное время автоматически синхронизируется гостевыми дополнениями (т. Е. Не через параметр в настройках материнской платы).

Ваше решение в этом случае - отключить гостевые дополнения, чего можно добиться, выполнив

sudo service vboxadd-service stop

или

sudo /etc/init.d/vboxadd-service stop

Затем вы можете установить желаемое время (из командной строки, используя date --setили используя апплет системных настроек)

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


3
Не по теме, но отключение / удаление Guest Additions позволяет вам также устанавливать системные часы в гостевых ОС Windows
speckledcarp

3
В моей версии Ubuntu команда была sudo service virtualbox-guest-utils stop. Я думаю, пакет был переименован?
Crashthatch

@Crashthatch ваше решение является единственным, который работает. Спасибо.
Бевор

11

Единственный способ - установить время на материнской плате Virtualbox с помощью командной строки:

VBoxManage modifyvm <name> --biossystemtimeoffset <msec>

Например, чтобы установить дату на 1 год назад:

VBoxManage modifyvm <name> --biossystemtimeoffset -31536000000

4

Хорошо, если вы хотите установить произвольные даты, сначала вы должны отключить или удалить ntp.

  • Чтобы отключить его, откройте терминал и запустите sudo update-rc.d -f ntp remove
  • Чтобы удалить его, используйте ваше любимое программное обеспечение для управления программным обеспечением

После этого вы можете использовать команду date-com для установки системного времени:

date -s "17 April 2011 12:34:56"
date --set="17 April 2011 12:34:56"

Обе команды эквивалентны. Чтобы установить только время, вы можете использовать:

date +%T -s "12:34:56" 

date-Manpage имеет некоторые элементы управления форматом. Вы можете использовать их все, чтобы изменить дату


Хорошо, я сделал это, но sudo date -s держит дату только в течение нескольких секунд, прежде чем вернуться. Под этим я подразумеваю, что дата запуска снова показывает время, которое я установил, работая нормально, а индикатор времени на панели - нет, и когда я снова запускаю дату, время изменилось, чтобы соответствовать часам панели ..... И пытается Смена индикатора даты-времени тоже не работает. Я думаю, что мне придется открыть ошибку.
Джереми Бича

Вы уверены, что деинсталлировано / отключено ntp? Установлено ли у вас какое-либо другое программное обеспечение для автоматического управления временем (например, Chrony?
qbi

Это новая Natty установка в VirtualBox, и я удалил что-нибудь ntp и не установил никакого другого программного обеспечения для управления временем.
Джереми Бича

2
Virtualbox «передает» время от вашего хоста клиенту. Вам придется изменить некоторые параметры здесь. Может быть, полезен virtualbox.org/manual/ch03.html#settings-motherboard .
qbi

3

Нажмите на раздел времени и даты на панели, затем появится календарь, и под ним есть Настройки времени и даты, поэтому щелкните по нему.

Нажмите на значок замка и введите свой пароль, затем выберите «Установить время вручную».


Я собираюсь пойти дальше и отметить это как лучший ответ для большинства пользователей. Моя конкретная проблема была с VirtualBox.
Джереми Бича

1

В Центре программного обеспечения найдите ntpdate и удалите его или в терминале: sudo apt-get remove ntpdate

(Возможно, вам придется перезагрузиться, чтобы полностью отключить NTP)

Затем установите свою дату.


Хорошо, я удалил ntpdate и перезагрузился, но я все еще не могу установить системные часы и заставить их придерживаться.
Джереми Бича

0

На основе примера «.ps1» (сценарий Windows PowerShell), приведенного в

/superuser/539880/using-virtual-box-is-it-possible-to-set-your-virtual-machine-time-to-be-differen

Я написал обычный файл сценария ".bat", чтобы изменить время, в которое запускается виртуальная машина VirtualBox.

Желаемое время начала задается в переменной «TEMPO_START_TIMESTAMP» в формате эпохи. Вы можете получить желаемый эквивалент времени начала работы на сайте http://www.timestampconvert.com/ .

Имя виртуальной машины VirtualBox, которую нужно запустить, необходимо указать в переменной «NOME» (та же номенклатура, что и в сценарии «.ps1» выше).

echo off
echo %time%

set NOME="Windows_7_x64"

set TEMPO_CS_2_MS=0
set TEMPO_S_2_MS=000

rem # Starts the VM always on the date 07/11/2014 - 11h58
rem http://www.timestampconvert.com/

set   TEMPO_START_TIMESTAMP=1415361480

for /f "delims=" %%x in ('cscript /nologo toEpoch.vbs') do set epoch=%%x
rem %epoch%

set TEMPO_CURRENT_TIMESTAMP=%epoch%
rem set TEMPO_CURRENT_TIMESTAMP=1544518714

set /A TEMPO_TEMP=(%TEMPO_START_TIMESTAMP%-%TEMPO_CURRENT_TIMESTAMP%)

call set TEMPO=%TEMPO_TEMP%%TEMPO_S_2_MS%
rem %TEMPO_TEMP%
rem %TEMPO%

c:\Progra~1\Oracle\VirtualBox\VBoxManage setextradata %NOME% "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1
c:\Progra~1\Oracle\VirtualBox\VBoxManage modifyvm %NOME% --biossystemtimeoffset %TEMPO%
c:\Progra~1\Oracle\VirtualBox\VBoxManage startvm %NOME%

Вам также понадобится текущее время в формате epoh, для этого используйте следующий скрипт (за исключением «toEpoch.vbs», этот скрипт Visual Basic вызывается из скрипта «.bat» выше):

WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now())

Чтобы запустить виртуальную машину, просто запустите файл сценария ".bat" выше. Нет необходимости открывать интерфейс «Oracle VM VirtualBox Administration».

Надеюсь, это поможет.

С уважением

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