VirtualBox: Jak zsynchronizować czas hosta i gościa?

39

Czas w mojej maszynie wirtualnej gościa jest szybszy niż czas hosta o około 20-30 minut. Co mogę zrobić, aby czas u gościa był taki sam jak u gospodarza?

Acumenus
źródło

Odpowiedzi:

16

W przypadku hosta Linux najpierw zainstaluj pakiet DKMS (obsługa dynamicznego modułu jądra) na maszynie-gościu ( źródło ):

$ sudo apt-get install dkms

Następnie zainstaluj Dodatki gości w systemie gościa:

$ sudo apt-get install virtualbox-guest-additions

Poniżej znajdują się opisy niektórych poleceń służących do dostrojenia synchronizacji czasu VirtualBox .

Nikita Krupenko
źródło
3
W ostatnich dystrybucjach zmienisz te pakiety dla virtualbox-guest-dkmsi virtualbox-guest-utils.
Yvan
aptto menedżer pakietów specjalnie dla dystrybucji opartych na Debianie. To nie będzie działać na innych gościach Linuksa.
Kyle Strand
33

Poniższa konfiguracja umożliwia mojemu gościowi niezawodne utrzymanie czasu z dokładnością do 1 sekundy od mojego hosta. Jest testowany z hostem z VirtualBox 4.3.26 i gościem z tą samą wersją VirtualBox Guest Additions. Jeśli chodzi o VirtualBox 5.x, do tej pory nie miałem potrzeby wprowadzania tych zmian konfiguracji; czas został automatycznie zsynchronizowany.

Odniesienie: https://www.virtualbox.org/manual/ch09.html#changetimesync


Na hoście wyświetl listę maszyn wirtualnych, aby ustalić nazwę odpowiedniej maszyny wirtualnej.

$ VBoxManage list vms | awk '{print $1}'
"CentOS6"

Na hoście skonfiguruj parametry synchronizacji czasu dla gościa, uruchamiając poniższe polecenia. Najpierw ustaw $VMNAMEodpowiednią wartość. Jeśli wartość $VMNAMEzawiera spację, należy ją oczywiście zacytować.

$ 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

Wartości powyższych parametrów czasu zostały ograniczone do wielokrotności 10. Może być kuszące, aby timesync-set-thresholdzamiast tego ustawić wartość 10000, ale może to ryzykować dość drastyczną zmianę czasu po uruchomieniu, a zatem może uszkodzić aplikacje.


Na hoście przejrzyj zaktualizowane odpowiednie wartości dla gościa. Można je potwierdzić w dowolnym momencie.

$ 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:

Na gościu zatrzymaj i wyłącz wszystkie wewnętrzne usługi NTP i powiązane usługi pomiaru czasu. Nie należy ich używać, ponieważ mogą zakłócać działanie VirtualBox. Na gościu CentOS 6:

$ 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

Na gościu uruchom ponownie usługę o nazwie vboxadd-service. Zakładając, że dodatki gości zostały wcześniej zainstalowane, ta usługa zostałaby zainstalowana i włączona. Na gościu CentOS 6:

$ /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

Jeśli czas gościa nie jest jeszcze zsynchronizowany, uruchom go ponownie.

Acumenus
źródło
Dzięki! Ostatnim krokiem ponownego uruchomienia vboxadd-serviceusługi jest to, co sprawiło, że wszystko działa dla mnie i nie wydaje się być udokumentowane (przynajmniej pod podanym linkiem).
j_random_hacker
Kiedy próbuję tego na gościu CentOS 7, usługa vboxadd nie została znaleziona? Jest to minimalna instalacja, bez GUI.
Br.Bill
1

Daję inne rozwiązanie do synchronizacji czasu między gościem i hostem bez instalowania dodawania gościa Virtualbox:

  1. Zainstaluj NTP na swoim gościu i usuń komentarz z tych linii /etc/ntp.conf.
disable auth
broadcastclient
  1. Aktywuj transmisję na swoim hoście. W przypadku użytkowników systemu Linux edytuj /etc/ntp.confplik i skonfiguruj linię
broadcast 192.168.123.255 

W przypadku użytkowników systemu Windows aktywuj usługę „Czas systemu Windows”. Następnie możesz przeczytać tę stronę, aby skonfigurować czas emisji

fred727
źródło
1
Co jest ważnego w adresie IP 192.168.123.255?
Br.Bill