VirtualBox: Zeit-Synchronisation deaktivieren

Praktisch als Ergänzung zum Beitrag VMware Workstation Player: Zeit-Synchronisation deaktivieren, diesmal allerdings für VirtualBox, eine Anleitung zum Deaktivieren des Abgleichs von Datum und Uhrzeit.

Im Gegensatz zu VMware genügt zum Deaktivieren der Zeit-Synchronisation ein Befehl:

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

Die virtuelle Maschine sollte selbstverständlich zum Zeitpunkt des Ausführens des Befehls beendet sein. Idealerweise sollte VirtualBox ebenfalls geschlossen sein, andernfalls kann es vorkommen, das die Änderung nicht übernommen wird.

Beim Starten der virtuellen Maschine wird die aktuelle Uhrzeit vom Host übernommen. Stellt man nun in der virtuellen Maschine ein anderes Datum bzw. eine andere Uhrzeit ein, so läuft diese dann weiter bis zum nächsten Neustart.

Nicht übersehen darf man die Zeit-Synchronisation die innerhalb der virtuellen Maschine seitens des dort installierten Betriebssystems stattfindet. Bei Windows und Linux beispielsweise der Abgleich via NTP über das Internet.

Möchte man bereits ab dem Startvorgang der virtuellen Maschine einanderes Datum mitgeben, so muss dies vorab über den Befehl

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

realisiert werden. Das setzt voraus, das man die Differenz in Millisekunden kennt. Wie man diese Zeit ermitteln kann, wird in diesem Beitrag erläutert:

Winaero – How to set the BIOS date in VirtualBox

Wichtig zu wissen ist, das der Offset fest in die Konfigurationsdatei der virtuellen Maschine eingetragen wird, d.h. es wird dann immer mit diesem Wert gestartet, der (natürlich) dann nicht mehr zum gewünschten Zeitpunkt passt und praktisch jedesmal vor dem Start aktualisiert werden muss.

Als Batch-Skript für Windows sieht das Ganze, gemeint ist Sync deaktivieren, Differenz ermitteln und VM starten, so aus:

@echo off

rem Konfiguration

 set VMname=Debian
 set VMdate=08/01/2018

 set VBoxPath=C:\Program Files\Oracle\VirtualBox

rem Zeit-Differenz von heute bis zum definierten Zeitpunkt ermitteln

 powershell ([datetime]'%VMdate%' - [datetime]::Now) | find "TotalMilliseconds :" > temp.txt

 set /p MS=< temp.txt
 del temp.txt /q

 rem Variable beschneiden ("TotalMilliseconds :" und
 rem alles nach dem Komma, inkl. dem Komma selbst entfernen, da die Zeit als Ganzzahl angegeben werden muss)

  set MS=%MS:~20,-5%

rem Zeit-Sychronisation mit dem Host deaktivieren

 "%VBoxPath%\VBoxManage" setextradata "%VMname%" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

rem Offset setzen

 "%VBoxPath%\VBoxManage" modifyvm "%VMname%" --biossystemtimeoffset "%MS%"

rem Virtuelle Maschine starten

 "%VBoxPath%\VBoxManage" startvm "%VMname%"

Quellen:

Oracle VM VirtualBox – User Manual – 8.8. VBoxManage modifyvm (–biossystemtimeoffset <ms>)

Oracle VM VirtualBox – User Manual – Chapter 9. Advanced topics – 9.14.4. Disabling the Guest Additions time synchronization

2 Kommentare

  • Hallo,
    mit welchen Betriebssystemen ist diese Lösung lauffähig?
    Thomas

  • Der VboxManage-Befehl ansich ist plattformunabhängig. Das Skript ist Windows-only, erfolgreich getestet unter Windows 8.1 und 10. Vmtl. geht auch Windows 7, wurde allerdings nicht probiert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.