如何在VirtualBox中手动设置系统时间?


30

我试图在VirtualBox中手动设置计算机的时间,但是它总是将自身重置为更改之前的状态。如何禁用ntp并告诉系统我希望在什么时间?


您能否提供有关您的问题的更多详细信息?您希望什么时候成为计算机,什么时间设置您的计算机?
2011年

5
我想在计算机上设置一个任意的错误时间。
Jeremy Bicha

Answers:


30

我找到了解决方案。阅读以下材料:链接

基本上,如果您有Windows主机和Ubuntu来宾,请执行以下操作:

  1. 查找您的VM(虚拟机)的名称-运行VB(VirtualBox),选择您的VM,打开设置,在“常规”选项卡中检查名称,例如我的情况 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 guest虚拟机并手动设置时间和日期。


6
这绝对应该是公认的答案!我不想禁用来宾添加,因为我在ubuntu服务器14来宾中安装了共享文件夹
Jon B

不幸的是,它不会“冻结”来宾系统上的时间。在某些情况下,尽管您想完全冻结所有时间(例如进行可复制的构建)。
VasyaNovikov 2015年

这节省了我很多时间
elsadek '16

如果您的主机操作系统是Ubuntu,则命令为:vboxmanage setextradata“ your_VM_name_here”“ VBoxInternal / Devices / VMMDev / 0 / Config / GetHostTimeDisabled” 1
Radu Maris

看到这个问题,它的工作时,我试了一下:stackoverflow.com/a/45724822/18149vboxadd-service需要一个额外的参数上的客人,主要是--disable-timesync
leeand00

23

如另一个答案中所述,如果您在VirtualBox下以来宾身份运行Ubuntu,则应注意,来宾添加会自动使系统时间保持同步(即,不是通过主板设置中的选项)。

在这种情况下,您的解决方案是禁用来宾添加,这可以通过执行

sudo service vboxadd-service stop

要么

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

然后,您可以根据需要设置时间(在命令行中使用date --set或使用系统设置小程序)

VirtualBox服务将在下次重新启动时重新启动,或者您可以手动进行。


3
脱离主题,但禁用/卸载Guest Additions也允许您在Windows guest OS上设置系统时钟
speckledcarp

3
在我的Ubuntu版本中,命令为sudo service virtualbox-guest-utils stop。我猜这个包被改名了吗?
Crashthatch 2015年

@Crashthatch是您唯一可行的解​​决方案。谢谢。
Bevor

11

唯一的方法是使用命令行在Virtualbox主板上设置时间:

VBoxManage modifyvm <name> --biossystemtimeoffset <msec>

例如,将日期设置为1年:

VBoxManage modifyvm <name> --biossystemtimeoffset -31536000000

4

好吧,如果要设置任意日期,则首先应禁用或卸载ntp。

  • 要禁用它,请打开一个终端并运行 sudo update-rc.d -f ntp remove
  • 要卸载它,请使用您喜欢的软件管理软件

之后,您可以使用date-command设置系统时间:

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在还原之前只保留了几秒钟的日期。就是说,我的意思是,运行日期再次显示了我设置为正常工作的时间,但是面板中的时间指示器却没有,并且当我再次运行日期时,时间已切换为与面板时钟匹配。更改指标日期时间时钟也不起作用。我认为我将不得不打开一个错误。
Jeremy Bicha

您确定已卸载/禁用ntp吗?您是否安装了其他一些自动时间管理软件(即chrony)?
2011年

这是VirtualBox中新安装的Natty,我清除了所有ntp并没有安装任何其他时间管理软件。
Jeremy Bicha

2
Virtualbox将时间从主机“转移”到客户端。您必须在此处更改一些选项。也许virtualbox.org/manual/ch03.html#settings-motherboard会有所帮助。
2011年

3

单击面板的“时间和日期”部分,然后将出现“日历”,并且在“时间和日期设置”的下面,因此单击它。

单击挂锁图标并输入密码,然后选择手动设置时间。


我将继续进行下去,并将其标记为对于大多数用户的最佳答案。我的特定问题是VirtualBox。
Jeremy Bicha

1

在软件中心中查找ntpdate并将其删除,或者在终端中:sudo apt-get remove ntpdate

(您可能必须重新启动才能完全禁用ntp)

然后设定您的日期。


好的,我清除了ntpdate并重新启动,但是我仍然无法设置系统时钟并使它固定。
Jeremy Bicha

0

基于中给出的“ .ps1”(Windows PowerShell脚本)示例

https://superuser.com/questions/539880/using-virtual-box-is-it-possible-to-set-your-virtual-machine-time-to-differen

我编写了一个常规的“ .bat”脚本文件,以更改VirtualBox虚拟机启动的时钟时间。

期望的开始时间以纪元格式设置在变量“ TEMPO_START_TIMESTAMP”上。您可以在“ http://www.timestampconvert.com/ ”上获得所需的等效开始时间。

变量“ NOME”(上面的“ .ps1”脚本中使用的名称相同)需要使用要启动的VirtualBox虚拟机的名称。

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管理”界面。

我希望这有帮助。

问候

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.