Jak poprawnie zsynchronizować czas w systemie Linux działającym jako gość wirtualny po wznowieniu działania hosta ze stanu hibernacji?

19

Korzystam z wielu wirtualnych skrzynek do programowania, a poprawna data i godzina są dla mnie ważne, kiedy pcham polecenia git. Nie wyłączam hosta - działa przez wiele miesięcy bez ponownego uruchamiania. Zimuję go tylko na noce i weekendy. Wprowadza to dziwny problem do moich systemów operacyjnych gości (wszyscy debianie z turnkeylinux.org) - po pewnym czasie data systemów operacyjnych gości jest wyłączona o kilka dni.

Chociaż wszyscy goście używają NTP, nie działa, jeśli wykryje, że data jest wyłączona z powodu dużych wartości (wydaje się, że wystarczy kilka godzin). Czy jest jakiś sposób na wymuszenie synchronizacji NTP nawet w przypadku dużych różnic czasowych? Lub jakiekolwiek inne rozwiązanie, które przywróciłoby poprawną datę i godzinę w skrzynkach gości po wznowieniu działania hosta ze stanu hibernacji?

SiliconMind
źródło
1
Zobacz tę odpowiedź, aby uzyskać szczegółowe informacje - w zasadzie dodatki dla gości zapewniają bezpośrednią synchronizację zegara bez potrzeby NTP: superuser.com/questions/463106/…
Pierz

Odpowiedzi:

17

W skrócie: Zainstaluj (pakiet ntp i) dodatki dla gości VirtualBox :)

  • Host: Windows 6.1 SP1, x64, 3 GB
  • VirtualBox: v4.3.6
  • Gość: Debian 7.3, 32-bity, 768 KB

Z VirtualBox, dołącz plik Oracle\VirtualBox\VBoxGuestAdditions.isodo systemu gościa (Ustawienia / Pamięć) i jako root

cd /media/cdrom0
sh ./VBoxLinuxAdditions.run

Pomoc VirtualBox w „9.4. Zaawansowana konfiguracja dla gości Linux i Solaris” opisuje kroki, ale linux-headers-3.2.0-4-486najpierw musiałem zainstalować pakiet .
Następnie jako root

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

Następnie uruchom ponownie gościa.

Sprawdziłem, wychodząc z systemu gościa ( Alt+ F4, a następnie zamów VirtualBox, aby zapisać stan gościa), odczekaj 5 minut, a następnie zrestartuj system gościa
Początkowo zegar został przywrócony z poprzedniej wartości, ale po kilku sekundach wszystko poszło dobrze (zegar zsynchronizowany)

Pierre
źródło
W rzeczywistości to właśnie skończyłem :) Po prostu nie miałem czasu, aby opublikować odpowiedź, więc podziękowania należą się tobie.
SiliconMind
NTP nie jest wymagane do synchronizacji zegara dodatków gości - wykonuje je demon dodatków gości (VBoxService).
Pierz
2
Dlaczego sugerujesz powtórzenie pierwszego polecenia dwa razy? Czy to naprawdę konieczne?
RDP
@RDP <quote> Czy naprawdę konieczne jest dwukrotne powtórzenie pierwszego polecenia? </quote> Nie pamiętam, a dokumentacja uległa zmianie, patrz [ virtualbox.org/manual/ch09.html#idm7495]
Pierre
Musisz także zainstalować gcc i make. Brak ich manifestuje się jako błąd podczas uruchamiania usługi vboxadd. Ale nie otrzymujesz pomocnej sugestii, aby zainstalować te pakiety, chyba że uruchomisz vboxadd jawnie - VBoxLinuxAdditions.run go nie ujawnia.
Harry Tsai,
1

Serwer NTP nie został zaprojektowany do działania wewnątrz maszyny wirtualnej. Wymaga zegara systemowego o wysokiej rozdzielczości, z czasami reakcji na przerwania zegarowe obsługiwane z wysoką dokładnością. Klient NTP może działać w niektórych rozwiązaniach do wirtualizacji. Uruchom NTP na podstawowym systemie operacyjnym komputera, a następnie pozwól, aby różne systemy operacyjne gości korzystały z dobrego zegara utworzonego w systemie. Nawet to może nie wystarczyć, ponieważ mogą istnieć dodatkowe narzędzia lub opcje jądra, które należy włączyć, aby klienci maszyn wirtualnych mogli odpowiednio zsynchronizować swoje zegary wirtualne z zegarem fizycznym.

Źródło: Obsługa znanych problemów NTP

Z tego oświadczenia i przeczytania, że ​​waszą ważną częścią są czasy zatwierdzania git, byłoby trywialne napisanie haka przed zatwierdzeniem, aby zebrać czas z komputera hosta, a można to uzyskać po prostu pytając komputer hosta:

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

vgoff
źródło
Dzięki, ale to nie do końca odpowiedź :) Używam VirtualBox i nie ma opcji synchronizacji czasu. Więc jeśli nie NTP, to co?
SiliconMind,
Przepraszam, zrobiłem skok ... ale teraz z poprawką wyjaśniłem moją myśl.
vgoff,