Die Zeit in meiner Gast-VM ist etwa 20 bis 30 Minuten schneller als die Host-Zeit. Was kann ich tun, damit die Zeit im Gast dieselbe ist wie auf dem Host?
Antwort1
Bei einem Linux-Host installieren Sie zunächst das DKMS-Paket (Dynamic Kernel Module Support) auf dem Gastcomputer (Quelle):
$ sudo apt-get install dkms
Installieren Sie dann Guest Additions im Gastsystem:
Ubuntu 20.04+
$ sudo apt-get install virtualbox-guest-utils
Ubuntu 18.04 oder älter
$ sudo apt-get install virtualbox-guest-additions
Außerdem finden Sie hier Beschreibungen voneinige Befehle zum Optimieren der VirtualBox-Zeitsynchronisierung.
Antwort2
Das folgende Setup ermöglicht meinem Gast, zuverlässig eine Zeit beizubehalten, die auf eine Sekunde genau mit der meines Hosts übereinstimmt. Es wurde getestet, wobei der Host VirtualBox 4.3.26 ausführt und der Gast dieselbe Version von VirtualBox Guest Additions ausführt. Was VirtualBox 5.x betrifft, musste ich diese Konfigurationsänderungen bisher nicht vornehmen; die Zeit wurde automatisch synchronisiert.
Referenz:https://www.virtualbox.org/manual/ch09.html#changetimesync
Listen Sie auf dem Host VMs auf, um den Namen der relevanten VM zu ermitteln.
$ VBoxManage list vms | awk '{print $1}'
"CentOS6"
Konfigurieren Sie auf dem Host die Zeitsynchronisierungsparameter für den Gast, indem Sie die folgenden Befehle ausführen. Stellen Sie zuerst $VMNAME
den entsprechenden Wert ein. Wenn der Wert $VMNAME
ein Leerzeichen enthält, sollte er natürlich in Anführungszeichen gesetzt werden.
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-interval" 10000
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust" 100
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore" 1
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 1000
Die Werte der oben genannten Zeitparameter wurden auf Vielfache von 10 beschränkt. Es mag verlockend sein, timesync-set-threshold
stattdessen 10.000 festzulegen, aber dadurch besteht das Risiko einer ziemlich drastischen Zeitänderung beim Auslösen und kann daher Anwendungen beschädigen.
Auf dem Host werden die aktualisierten, relevanten Werte für den Gast angezeigt. Diese können jederzeit erneut bestätigt werden.
$ VBoxManage guestproperty enumerate ${VMNAME} | grep timesync | sort
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-interval, value: 10000, timestamp: 1402110397618554000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust, value: 100, timestamp: 1402110777505446000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore, value: 1, timestamp: 1402110904964050000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold, value: 1000, timestamp: 1402110660162295000, flags:
Stoppen und deaktivieren Sie auf dem Gast alle internen NTP- und zugehörigen Zeiterfassungsdienste. Sie sollten nicht verwendet werden, da sie wahrscheinlich mit VirtualBox in Konflikt geraten. Auf einem CentOS 6-Gast:
$ sudo /sbin/chkconfig ntpd off
$ /sbin/chkconfig --list | grep ntp
ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off
Starten Sie auf dem Gast den Dienst mit dem Namen neu vboxadd-service
. Vorausgesetzt, Guest Additions wurde zuvor installiert, wäre dieser Dienst installiert und aktiviert worden. Auf einem CentOS 6-Gast:
$ /sbin/service vboxadd-service status
Checking for VBoxService ...running
$ sudo /sbin/service vboxadd-service restart
Stopping VirtualBox Guest Addition service [ OK ]
Starting VirtualBox Guest Addition service [ OK ]
$ /sbin/service vboxadd-service status
Checking for VBoxService ...running
Wenn die Zeit auf dem Gast noch nicht synchronisiert ist, starten Sie den Gast neu.
Antwort3
Ich biete eine andere Lösung zum Synchronisieren der Zeit zwischen Gast und Host, ohne die Virtualbox-Gasterweiterung zu installieren:
- Installieren Sie NTP auf Ihrem Gast und entfernen Sie die Kommentarzeichen aus diesen Zeilen
/etc/ntp.conf
.
disable auth
broadcastclient
- Aktivieren Sie Broadcast auf Ihrem Host. Für Linux-Benutzer bearbeiten Sie Ihre
/etc/ntp.conf
Datei und konfigurieren Sie die Zeile
broadcast 192.168.123.255
Für Windows-Benutzer aktivieren Sie den Dienst „Windows Time“. Sie können dannLesen Sie diese Seiteum es für die Sendezeit zu konfigurieren