การใช้กล่องเสมือนเป็นไปได้ที่จะตั้งเวลาเครื่องเสมือนให้แตกต่างจากเวลาโฮสต์


33

การใช้กล่องเสมือนเป็นไปได้ที่จะตั้งเวลาเครื่องเสมือนให้แตกต่างจากเวลาโฮสต์ พูด 1 ปีที่ผ่านมา

ถ้าฉันต้องการเรียกใช้อิมเมจ windows XP ที่ Microsoft จัดหาให้จากที่นี่
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11575

มันถูกบันทึกไว้สำหรับอิมเมจ XP ที่:

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

เป็นหนึ่งในวิธีที่ดีกว่าในการทดสอบ IE 6 และ IE 7 การทดสอบทั่วไป XP อื่น ๆ


คำตอบ:


38

ไม่มีปัญหาเลย เพียงจำไว้ว่าให้ปิดการใช้งานการซิงโครไนซ์เวลาใน VirtualBox Guest Additions จากนั้นตั้งค่าวันที่ + เวลาในเครื่องเสมือนตามที่คุณต้องการ นอกจากนี้ยังมีตัวเลือกในการเข้าสู่ BIOS เสมือนจริงและตั้งค่าวันที่ + เวลาหากจำเป็นเมื่อทำการติดตั้ง

คำสั่งนี้ปิดใช้งานการซิงโครไนซ์:
http://www.virtualbox.org/manual/ch09.html#disabletimesync

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

ตัวเลือกต่อไปนี้อนุญาตให้ตั้งค่าออฟเซ็ตเป็นมิลลิวินาที: http://www.virtualbox.org/manual/ch08.html#vboxmanage-modifyvm

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

ตกลงคุณเป็นอย่างไร
nelaaro

ทำอะไร? กรุณาเจาะจงมากขึ้น?
Stefan Seidel

3
ปิดใช้งานการซิงโครไนซ์เวลา & เข้าสู่ Virtual BIOS และตั้งค่าวันที่และเวลาที่นั่น
nelaaro

2
ปิดใช้งานการซิงค์เวลา: มีช่องทำเครื่องหมายใน VirtualBox Guest เพิ่มเติม อีกวิธีหนึ่ง: virtualbox.org/manual/ch09.html#disabletimesyncสำหรับ BIOS: กด F12 (ฉันคิดว่า) ระหว่างการเริ่มต้น VM และนี่คือเครื่องมือบรรทัดคำสั่งที่อธิบายไว้: betaarchive.com/forum/viewtopic.php?t=20071บน วิธีเปลี่ยนเวลา BIOS
Stefan Seidel

3

ตัวอย่างของสคริปต์ 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

จากตัวอย่าง ".ps1" (สคริปต์ Windows PowerShell) ด้านบนฉันได้เขียนไฟล์สคริปต์ ".bat" ปกติเพื่อเปลี่ยนเวลานาฬิกาที่เครื่องเสมือนของ VirtualBox เริ่มทำงาน

เวลาเริ่มต้นที่ต้องการถูกกำหนดไว้ที่ตัวแปร "TEMPO_START_TIMESTAMP" ในรูปแบบยุค คุณสามารถรับเวลาเริ่มต้นที่เทียบเท่ากับ epoh ได้ที่ " http://www.timestampconvert.com/ "

ชื่อของเครื่องเสมือนของ VirtualBox ที่จะเริ่มต้นนั้นเป็นสิ่งจำเป็นในตัวแปร "NOME" (nomenchature เดียวกับที่ใช้ในสคริปต์ ".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" สคริปต์พื้นฐานแบบภาพนี้เรียกจากสคริปต์ ".bat" ด้านบน):

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

หากต้องการเรียกใช้เครื่องเสมือนเพียงเรียกใช้ไฟล์สคริปต์ ".bat" ด้านบน ไม่จำเป็นต้องเปิดอินเทอร์เฟซ "Oracle VM VirtualBox Administration"

ฉันหวังว่านี่จะช่วยได้.

ความนับถือ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.