Za pomocą wirtualnego urządzenia można ustawić czas maszyny wirtualnej na inny niż czas hosta


33

Za pomocą wirtualnego urządzenia można ustawić czas maszyny wirtualnej na inny niż czas hosta. Powiedz 1 rok w przeszłość.

Gdybym chciał uruchomić obrazy systemu Windows XP dostarczone przez Microsoft z tego miejsca.
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11575

W przypadku obrazu XP zauważono, że:

Expires: This image will shutdown and become completely unusable on February 14, 2013.

Jest to jeden z lepszych sposobów testowania IE 6 i IE 7. Inne typowe testy XP.


Odpowiedzi:


38

To wcale nie jest problem. Pamiętaj tylko, aby wyłączyć synchronizację czasu w Dodatkach gości VirtualBox, a następnie ustawić datę i godzinę na maszynie wirtualnej, jak chcesz. Istnieje również opcja przejścia do wirtualnego systemu BIOS i ustawienia tam daty i godziny, jeśli jest to potrzebne w czasie instalacji.

To polecenie wyłącza synchronizację:
http://www.virtualbox.org/manual/ch09.html#disabletimesync

VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

Następująca opcja pozwala ustawić przesunięcie w milisekundach: http://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvm

VBoxManage modifyvm "VM name" --biossystemtimeoffset <msec>

Ok, jak to robisz?
nelaaro

Co zrobić? Proszę być bardziej precyzyjnym?
Stefan Seidel

3
wyłącz synchronizację czasu i przejdź do wirtualnego systemu BIOS i ustaw tam datę + czas
nelaaro

2
Wyłącz synchronizację czasu: w VirtualBox Guest Additional znajduje się pole wyboru. Alternatywnie: virtualbox.org/manual/ch09.html#disabletimesync W przypadku systemu BIOS: naciśnij klawisz F12 (myślę) podczas uruchamiania maszyny wirtualnej, a oto narzędzia wiersza polecenia opisane: betaarchive.com/forum/viewtopic.php?t=20071 w dniu jak zmienić czas BIOS.
Stefan Seidel

3

Przykład skryptu Windows PowerShell

startVM.ps1

# Starts the VM always on the date 12/30/2016

$tempo = ""+([datetime]"12/30/2016" - [datetime]::Now).TotalMilliseconds
$tempo = ""+[math]::Round($tempo)
$nome = "virtualMachineName"

& ${env:ProgramFiles}\Oracle\VirtualBox\VBoxManage setextradata $nome "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

& ${env:ProgramFiles}\Oracle\VirtualBox\VBoxManage modifyvm $nome --biossystemtimeoffset $tempo

& ${env:ProgramFiles}\Oracle\VirtualBox\VBoxManage startvm $nome

0

Na podstawie powyższego przykładu „.ps1” (skrypt Windows PowerShell) napisałem zwykły plik skryptu „.bat”, aby zmienić czas zegara, w którym uruchamia się maszyna wirtualna VirtualBox.

Pożądany czas rozpoczęcia jest ustawiony na zmienną „TEMPO_START_TIMESTAMP” w formacie epoki. Możesz uzyskać żądany ekwiwalent czasu rozpoczęcia epoh na stroniehttp://www.timestampconvert.com/ ”.

Nazwa maszyny wirtualnej VirtualBox, która ma zostać uruchomiona, jest potrzebna w zmiennej „NOME” (ta sama nazwa używana w skrypcie „.ps1” powyżej).

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%

Będziesz także potrzebował bieżącego czasu w formacie epoh, w tym celu użyj następującego skryptu (zapisz jako „toEpoch.vbs”, ten skrypt Visual Basic jest wywoływany ze skryptu „.bat” powyżej):

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

Aby uruchomić maszynę wirtualną, po prostu uruchom powyższy plik skryptu „.bat”. Nie ma potrzeby otwierania interfejsu „Oracle VM VirtualBox Administration”.

Mam nadzieję, że to pomoże.

pozdrowienia

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.