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 ein anderes 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

7 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.

  • Hallo
    wo und wie muss ich die Batchdatei einbinden damit mein System ( Win7 ) in virtual box immer mit dem von mir gewünschtem Datum startet?
    Gruß Klaus

  • Das Skript an einem gewünschten Ort ablegen und den VM-Namen und das Start-Datum anpassen.
    Es wird kein spezieller Ort oder ehöten Rechte benötigt.
    Einzig muss man daran denken, das man die VM dann immer über das Skript und nicht direkt aus VirtualBox heraus startet.

  • danke für deine Antwort.
    Ich habe jetzt dein Skript als CMD Datei ausgeführt. ich habe „VMname“ durch den Namen der Maschine „SKS“ im ganzen Skrpit ersetzt. das Skript wird auch ausgeführt glaube ich zumindest weil ich bekomme keine Fehlermeldung, aber die BOX startet nicht automatisch. Was mache ich falsch?

  • Im Skript muss nur im Abschnitt „Konfiguration“ bei der Variabeln „VMname“ der Name eingetragen werden:

    rem Konfiguration

    set VMname=Debian <- Den Namen der VM eintragen
    set VMdate=08/01/2018

    Sonst muss eigentlich nichts geändert werden, außer man hat VirtualBox an anderer Stelle installiert als per Vorgabe vorgesehen. In einem solchen Fall muss noch der Pfad angepasst werden:

    set VBoxPath=C:Program FilesOracleVirtualBox

    Zur weiteren Eingrenzung was evtl. schief läuft kann man am Ende des Skript schlicht ein „Pause“ einfügen und es dann nochmal ausführen und sich die Meldungen ansehen.

  • Hallo Andy,
    habe dein Script runtergezogen und kann damit auch meine Virtuelle Maschine starten. Nur leider läuft das WindowsDatum einfach weiter…

Schreibe einen Kommentar

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