Hoe de tijd synchroniseren bij het wakker worden van de host in VirtualBox?

Ik gebruik een op Ubuntu 12.04 gebaseerde box in Vagrant met behulp van VirtualBox. Tot nu toe is alles in orde – behalve één ding:

Laten we aannemen dat de VM draait. Vervolgens gaat de host naar de standby-modus. Na het opnieuw wakker te hebben gemaakt, draait de VM nog steeds, maar de interne klok gaat verder waar hij stopte toen de host uitviel. Dit betekent dus eigenlijk: zet de host 15 minuten in de sluimerstand, maak hem weer wakker en de interne klok van de VM is 15 minuten te laat.

Hoe kan ik dit oplossen (de tijd handmatig instellen is om voor de hand liggende redenen geen optie ;-))? Is er een manier om een ​​script in een Vagrant VM uit te voeren wanneer het hostsysteem van status verandert?

Ik heb in de documentatiegelezen dat de VirtualBox Guest Additions standaard de tijd synchroniseren met de elke 10 seconden hosten. Blijkbaar gebeurt dit niet, maar ik kan nergens vinden waar het is uitgeschakeld. Dus enig idee?

PS: De gasttoevoegingen zijn geïnstalleerd en komen overeen met de versie van VirtualBox die wordt gebruikt.


Antwoord 1, autoriteit 100%

De documentatie mist hier enkele details.

Wat VirtualBox elke 10 seconden doet, is slechts een kleine aanpassing (zoiets als 0,005 seconden). Alleen wanneer het tijdsverschil een drempel bereikt (standaard 20 minuten), wordt een “echte” hersynchronisatie uitgevoerd.

Je kunt de drempel verlagen (d.w.z. tot 10 seconden) met het volgende commando:

VBoxManage guestproperty set <vm-name> "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 10000

Antwoord 2, autoriteit 46%

De antwoorden van @zilupe en @Slobodan Kovacevic samenvattend, is de oplossing om het volgende toe te voegen aan Vagrantfile:

config.vm.provider 'virtualbox' do |vb|
   vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
end

Hiermee worden klokken gesynchroniseerd telkens wanneer desynchronisatie > 1s (1000ms)


Antwoord 3, autoriteit 10%

Ik geef een andere oplossing om de tijd te synchroniseren tussen guest & host zonder Virtualbox-gasttoevoeging te installeren:

  1. installeer ntp op je guest, en verwijder commentaar op deze regels in /etc/ntp.conf:

    disable auth
    broadcastclient
    

Start vervolgens ntpopnieuw met service ntp restart

  1. Actieve uitzending op je host:

    • Voor Linux-gebruikers, bewerk je bestand /etc/ntp.confen configureer broadcast (je moet IP aanpassen):

      uitzending 192.168.123.255

    • Voor Windows-gebruikers: activeer de “Windows Time“-service. U kunt dan lees deze paginaom deze te configureren voor uitzendtijd

    Start vervolgens de tijdservice op de host opnieuw.


Antwoord 4, autoriteit 7%

Om timesync te laten werken moest ik dit doen:

vboxmanage setextradata «machine-name» "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0

Het zet de tijdsynchronisatie aan. Het was om de een of andere reden uit.


Antwoord 5, autoriteit 5%

Ik heb een oplossing gevonden:

  1. installeer ntpdate
  2. voeg “s”-toestemming toe voor ntpdate, hierdoor kunnen niet-root-gebruikers ntpdate als root uitvoeren: sudo chmod u+s /usr/sbin/ntpdate
  3. voeg één regel toe in ~/.bashrc: ntpdate -u ntp.ubuntu.com

Daarna, elke keer dat u inlogt op het Linux-systeem, wordt de tijd één keer gesynchroniseerd.


Antwoord 6, autoriteit 2%

u kunt de VirtualBox Guest Additions in de VM installeren om de tijd automatisch door VB te synchroniseren.

Other episodes