Wie synchronisiere ich die Zeit unter Linux, die als virtueller Gast ausgeführt wird, nachdem der Ruhezustand des Hosts beendet wurde?

19

Ich verwende mehrere virtuelle Boxen für die Entwicklung und es ist wichtig, Zeit und Datum zu korrigieren, wenn ich git-Commits drücke. Ich fahre meinen Host nicht herunter - er läuft monatelang ohne Neustart. Ich halte es nur für Nächte und Wochenenden im Winterschlaf. Dies führt zu seltsamen Problemen mit meinen Gastbetriebssystemen (alle Debians von turnkeylinux.org) - nach einiger Zeit ist das Datum der Gastbetriebssysteme um einige Tage verschoben.

Obwohl alle Gäste NTP verwenden, funktioniert es nicht, wenn festgestellt wird, dass das Datum um einige große Werte verschoben ist (einige Stunden scheinen zu reichen). Gibt es eine Möglichkeit, die NTP-Synchronisierung auch bei großen Zeitunterschieden zu erzwingen? Oder eine andere Lösung, mit der das korrekte Datum und die korrekte Uhrzeit für Gastboxen wiederhergestellt werden, nachdem der Ruhezustand des Hosts beendet wurde?

SiliconMind
quelle
1
Weitere Informationen finden Sie in dieser Antwort. Grundsätzlich ermöglichen die Guest-Ergänzungen eine direkte Uhrensynchronisierung, ohne dass NTP erforderlich ist: superuser.com/questions/463106/…
Pierz,

Antworten:

17

Kurz gesagt : Installiere (das ntp-Paket und) die VirtualBox Guest Additions :)

  • Host: Windows 6.1 SP1, x64, 3 GB
  • VirtualBox: v4.3.6
  • Gast: Debian 7.3, 32-Bit, 768 KB

Hängen Sie die Datei von VirtualBox aus Oracle\VirtualBox\VBoxGuestAdditions.isoan das Gastsystem (Einstellungen / Speicher) und als Root an

cd /media/cdrom0
sh ./VBoxLinuxAdditions.run

In der VirtualBox-Hilfe unter "9.4. Erweiterte Konfiguration für Linux- und Solaris-Gäste" werden die Schritte beschrieben, aber zuerst musste ich das Paket installieren linux-headers-3.2.0-4-486.
Dann, als root,

/usr/lib/VBoxGuestAdditions/vboxadd setup
/usr/lib/VBoxGuestAdditions/vboxadd-service setup
/usr/lib/VBoxGuestAdditions/vboxadd setup

Starten Sie anschließend den Gast neu.

Ich habe es überprüft, indem ich das Gastsystem beendet habe ( Alt+ F4und dann VirtualBox angewiesen habe, den Status des Gasts zu speichern), 5 Minuten gewartet und dann das Gastsystem neu
gestartet habe. Zuerst wurde die Uhr von ihrem vorherigen Wert wiederhergestellt, aber nach einigen Sekunden alles ging gut (Uhr synchronisiert)

Pierre
quelle
Tatsächlich habe ich das getan :) Ich hatte gerade keine Zeit, die Antwort zu posten, also geht der Kredit an Sie.
SiliconMind
NTP wird nicht für die Synchronisierung der Uhr für Gastzusätze benötigt - es wird vom Daemon für Gastzusätze (VBoxService) ausgeführt.
Pierz
2
Warum schlagen Sie vor, den ersten Befehl zweimal zu wiederholen? Ist das wirklich notwendig?
RDP
@RDP <quote> Muss der erste Befehl wirklich zweimal wiederholt werden? </ Quote> Ich erinnere mich nicht, und die Dokumentation wurde geändert, siehe [ virtualbox.org/manual/ch09.html#idm7495]
Pierre,
Du musst gcc installieren und auch make. Wenn sie nicht vorhanden sind, wird dies als Fehler beim Starten des vboxadd-Dienstes angezeigt. Sie erhalten jedoch nicht den hilfreichen Vorschlag, diese Pakete zu installieren, es sei denn, Sie führen vboxadd explizit aus - VBoxLinuxAdditions.run macht dies nicht verfügbar.
Harry Tsai
1

Der NTP-Server wurde nicht für die Ausführung in einer virtuellen Maschine entwickelt. Es erfordert einen hochauflösenden Systemtakt mit Reaktionszeiten auf Taktunterbrechungen, die mit einer hohen Genauigkeit bedient werden. NTP-Client kann in einigen Virtualisierungslösungen ausgeführt werden. Führen Sie NTP auf dem Basisbetriebssystem des Computers aus, und lassen Sie dann die verschiedenen Gastbetriebssysteme die auf dem System erstellte gute Uhr nutzen. Auch das ist möglicherweise nicht ausreichend, da möglicherweise zusätzliche Tools oder Kerneloptionen aktiviert werden müssen, damit die Clients der virtuellen Maschine ihre virtuellen Uhren mit der physischen Systemuhr angemessen synchronisieren können.

Quelle: Support NTP Bekannte Probleme

Wenn Sie dieser Aussage entnehmen und lesen, dass es sich bei Ihrem wichtigen Teil um Git-Commit-Zeiten handelt, ist es trivial, einen Pre-Commit-Hook zu schreiben, um die Zeit von Ihrem Host-Computer zu erfassen.

ssh hostmachine "date +%Y%m%d%H%M%s"

vgoff
quelle
Danke, aber das ist keine richtige Antwort :) Ich verwende VirtualBox und es gibt keine Optionen für die Zeitsynchronisierung. Also, wenn nicht NTP, was dann?
SiliconMind
Entschuldigung, ich habe den Sprung gewagt ... aber jetzt mit einer Änderung wurde mein Gedanke klarer.
VGOFF