8

Я пытаюсь использовать VB для настройки виртуальной машины Windows 7 для использования в учебном курсе. Я хочу, чтобы виртуальная машина всегда запускалась с одинаковыми условиями, в частности:

  1. ВМ всегда запускается в одну и ту же дату и время
  2. Диск остается неизменным в результате предыдущего упражнения

Я разработал, как настроить диск как "неизменяемый", который должен позаботиться о (2), но я не могу запустить виртуальную машину одновременно. После некоторого осмотра я нашел это:

После установки и запуска гостевые дополнения Virtualbox попытаются синхронизировать время гостя со временем хоста. Это можно предотвратить, запретив гостевой службе читать часы хоста:

VBoxManage setextradata "Имя виртуальной машины" "VBoxInternal/ Устройства / VMMDev / 0 / Config / GetHostTimeDisabled" 1

Я попробовал это с выключенной виртуальной машиной и запустил ее, но она, похоже, ничего не делает. На той же странице документации также упоминается параметр «--timesync-set-start», однако я не вижу упоминания о формате для установки даты и времени. Помощь будет приветствоваться.

4 ответа4

12

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

1.Отключите синхронизацию времени вашей виртуальной машины:

1.1 Отключить хост для гостя Timesync

VBoxManage setextradata <YOUR_VM_NAME> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

VBoxManage setextradata <YOUR_VM_NAME> "VBoxInternal/TM/TSCTiedToExecution" 1

Чтобы вернуться назад:

VBoxManage setextradata <YOUR_VM_NAME> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0

1.2 Отключить гостевую добавку Timesync

Используйте regedit.exe для изменения реестра.

Найдите эту ветку: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VBoxService

Измените значение в ImagePath с

system32\VBoxService.exe

в

system32\VBoxService.exe --disable-timesync

Перезагрузите виртуальную машину или перезапустите службу "Служба гостевых дополнений VirtualBox".

2.Отключите синхронизацию времени Windows.

Проверьте настройки времени. Отключить синхронизацию времени в Интернете.

Источник: http://www.ppq.ch/snippets/15-vobxtime

4

Следующие шаги будут работать, если на хост-компьютере установлена Windows.

  1. Если "целевой машиной" является Windows: откройте "целевую виртуальную машину" и примените "Панель управления -> Дата и время -> Время в Интернете -> Изменить настройки -> Отключить" Синхронизировать с сервером времени в Интернете "".
  2. Скопируйте строки ниже как файл «yourfilename.ps1» на хост-компьютере (Windows). Отредактируйте этот файл, как описано в шаге 3. 4. 5.
    $vbox_path="C:\Program Files\ORACLE\VirtualBox"
    $vm_name="Win7_VB"
    $start_utc=1444176000
    
    #DO NOT CHANGE ANYTHING BELOW THIS LINE
    $now_utc_ms=[int64](([datetime]::UtcNow)-(get-date "1/1/1970")).TotalMilliseconds
    $dif_utc_ms=$start_utc * 1000 - $now_utc_ms
    Write-Host "START UTC:" $start_utc*1000 " DIF UTC:" $dif_utc_ms " NEW UTC:" $now_utc_ms
    cd $vbox_path
    .\VBoxManage setextradata $vm_name "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" "0"
    .\VBoxManage setextradata $vm_name "VBoxInternal/TM/TSCTiedToExecution" 1
    .\VBoxManage.exe modifyvm $vm_name --biossystemtimeoffset $dif_utc_ms
    .\VBoxManage.exe startvm $vm_name
    Start-Sleep -s 5
    
  3. Обновите "vbox_path", указав путь установки VirtualBox.
  4. Обновите vm_name именем VirtualBox Image, которое будет запущено.
  5. Обновите "start_utc" с помощью http://www.epochconverter.com/. Целевая машина всегда запускается со временем start_utc. Конвертер эпох
  6. Откройте "Windows PowerShell" из меню "Пуск" в качестве администратора.
  7. Выполните следующую команду и ответьте на вопрос как [Y].
    Set-ExecutionPolicy RemoteSigned
    
  8. Запустите правой кнопкой мыши «yourfilename.ps1» и выберите "Запустить с PowerShell", чтобы запустить целевой компьютер.

Примечание. Всегда используйте шаг 8 для запуска целевой виртуальной машины.

0

Используйте снимки.

  1. Чтобы создать новый снимок, просто используйте кнопку « Сделать снимок» в обзоре снимков :

  2. Назовите снимок и сохраните его.

  3. Если вы хотите загрузить фиксированное состояние позднее, вернитесь к предыдущему снимку с помощью кнопки « Восстановить снимок» :

Если вы хотите, чтобы у вашего снимка всегда была одна и та же дата, вы, вероятно, захотите отключить синхронизацию времени в Интернете в Windows, сняв флажок Синхронизировать с сервером времени в Интернете в диалоговом окне настройки часов.

0

Чтобы ответить на оригинальный вопрос OP (MartinK): возможно ли, чтобы виртуальная машина Virtualbox всегда запускалась в одно и то же время, если да, то как?

Это возможно просто

(a) Установка свойства "GetHostTimeDisabled" = 1 с использованием команды VBoxManage в командной строке (в автономном режиме, т.е. перед запуском ВМ)

(b) Запустите виртуальную машину с сохраненного снимка, сделанного ранее. (в желаемое время начала)

Больше никаких команд не требуется, каждый раз, когда это работает. (проверено на гостевой Windows в Windows Hosts)

Этот ответ ближе к более раннему ответу Оливера Зальцбурга, за исключением того, что он пропустил настройку параметра "GetHostTimeDisabled". OfCourse Internet Time Sync (NTP) должна быть отключена в сохраненном снимке.

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