是否可以让 Virtualbox VM 始终从同一时间启动,如果可以,如何启动?

Mar*_*n K 9 virtualbox virtual-machine

我正在尝试使用 VB 设置用于培训课程的 Windows 7 VM。我希望虚拟机始终从相同的条件启动,特别是:

  1. VM 始终在相同的日期和时间启动
  2. 由于之前的练习,磁盘保持不变

我已经研究出如何将磁盘配置为“不可变”,这应该处理 (2),但我无法同时启动 VM。环顾四周后,我发现了这个:

安装并启动后,Virtualbox Guest Additions 将尝试将访客时间与主机时间同步。这可以通过禁止访客服务读取主机时钟来防止:

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

我在关闭 VM 并启动时尝试了此操作,但它似乎没有做任何事情。在同一个文档页面上,还提到了一个参数“--timesync-set-start”,但是我看不到任何关于设置日期和时间的格式的提及。欢迎提供帮助。

Mad*_*wyn 18

您需要执行以下操作才能使访客时间保持原样:

1.禁用虚拟机的时间同步:

1.1 禁用主机到访客时间同步

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

VBoxManage setextradata <YOUR_VM_NAME> "VBoxInternal/TM/TSCTiedToExecution" 1
Run Code Online (Sandbox Code Playgroud)

要恢复:

VBoxManage setextradata <YOUR_VM_NAME> "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0
Run Code Online (Sandbox Code Playgroud)

1.2 禁用 GuestAddition 时间同步

使用 regedit.exe 修改注册表。

找到这个分支:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VBoxService

更改值ImagePath

system32\VBoxService.exe
Run Code Online (Sandbox Code Playgroud)

system32\VBoxService.exe --disable-timesync
Run Code Online (Sandbox Code Playgroud)

重新启动您的 VM 或重新启动服务“VirtualBox Guest Additions Service”。

2.禁用Windows的时间同步。

检查时间设置。禁用互联网时间同步。

来源:http : //www.ppq.ch/snippets/15-vobxtime


Onu*_*han 7

如果主机是 Windows/Linux,以下步骤将起作用。

  1. 如果“目标机器”是 Windows:打开“目标虚拟机”并应用“控制面板 -> 日期和时间 -> Internet 时间 -> 更改设置 -> 禁用“与 Internet 时间服务器同步”。

  2. 在主机上将下面的行复制为文件“yourfilename.ps1”(Windows)/“yourfilename.sh”(Linux)。按照步骤 3.4.5 中的说明编辑此文件。


主持人:WINDOWS

$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 modifyvm     $vm_name --biossystemtimeoffset $dif_utc_ms
VBoxManage startvm      $vm_name
Start-Sleep -s 5
Run Code Online (Sandbox Code Playgroud)

主机:LINUX

#!/bin/sh
vbox_path="/usr/bin/"
vm_name="Win7_VB"
start_utc=1444176000

#DO NOT CHANGE ANYTHING BELOW THIS LINE
now_utc_ms=$(($(date +%s)*1000))
dif_utc_ms=$(($(($start_utc * 1000)) - $now_utc_ms))
echo "START UTC:" $(($start_utc * 1000)) " DIF UTC:" $dif_utc_ms "NOW 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 modifyvm     $vm_name --biossystemtimeoffset $dif_utc_ms
VBoxManage startvm      $vm_name
sleep 5
Run Code Online (Sandbox Code Playgroud)
  1. 使用 VirtualBox 安装路径更新“vbox_path”。(主办方:视窗)
  2. 使用将启动的 VirtualBox Image 的名称更新“vm_name”。
  3. 使用http://www.epochconverter.com/更新“start_utc” 。目标机器将始终以“start_utc”时间启动。 时代转换器
  4. 管理员身份从开始菜单打开“Windows PowerShell” 。(主办方:视窗)
  5. 运行以下命令并以 [Y] 回答问题。(主办方:视窗)

    Set-ExecutionPolicy RemoteSigned
    
    Run Code Online (Sandbox Code Playgroud)
  6. 右键单击“yourfilename.ps1”运行并选择“Run with PowerShell”以启动目标机器。(主办方:视窗)

  7. 启动 Linux 终端执行以下命令以启动目标机器(主机:Linux)

    chmod +x yourfilename.sh && sh yourfilename.sh
    
    Run Code Online (Sandbox Code Playgroud)

注意:始终使用步骤 8(主机:Windows)/步骤 9(主机:Linux)运行目标虚拟机。


Der*_*ler 0

使用快照。

  1. 要创建新快照,只需使用快照概述中的拍摄快照按钮:

    在此输入图像描述

  2. 为快照命名并保存。

  3. 当您想要稍后启动固定状态时,请使用“恢复快照”按钮恢复到之前的快照:

    在此输入图像描述

如果要确保快照始终具有相同的日期,您可能需要通过取消选中时钟配置对话框中的与 Internet 时间服务器同步复选框来禁用Windows 中的Internet 时间同步