Como sincronizar corretamente o tempo no linux executado como convidado virtual após o host sair da hibernação?

17

Eu uso várias caixas virtuais para desenvolvimento e a hora e data corretas são importantes para mim quando eu envio commits git. Eu não fecho meu host - ele é executado por meses sem reiniciar. Eu só hiberne para noites e fins de semana. Isso introduz um problema estranho aos meus sistemas operacionais convidados (todos os debians do turnkeylinux.org) - depois de algum tempo, a data dos sistemas operacionais convidados é desligada em alguns dias.

Embora todos os convidados usem o NTP, ele não funciona se detectar que a data está desativada por alguns valores grandes (poucas horas parecem ser suficientes). Existe alguma maneira de forçar a sincronização NTP mesmo para grandes diferenças de tempo? Ou qualquer outra solução que restauraria a data e a hora corretas nas caixas de convidados depois que o host sair da hibernação?

    
por SiliconMind 13.12.2013 / 21:49

2 respostas

17

Em resumo: Instale (o pacote ntp e) as adições de convidados do VirtualBox :

  • Host: Windows 6.1 SP1, x64 e 3 GB
  • VirtualBox: v4.3.6
  • Convidado: Debian 7.3, 32 bits, 768 KB

Do VirtualBox, anexe o arquivo Oracle\VirtualBox\VBoxGuestAdditions.iso ao sistema convidado (Configurações / Armazenamento) e como root

cd /media/cdrom0
sh ./VBoxLinuxAdditions.run

A Ajuda do VirtualBox em "9.4. Configuração avançada para convidados Linux e Solaris" descreve as etapas, mas eu tive que instalar o pacote linux-headers-3.2.0-4-486 , primeiro.
Então, como root,

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

Depois, reinicie o convidado.

Eu verifiquei parando o sistema convidado ( Alt + F4 , então ordene o VirtualBox para salvar o estado do convidado), esperando 5 minutos, depois reiniciando o sistema convidado < br> A princípio, o relógio foi restaurado a partir do seu valor anterior, mas depois de alguns segundos tudo correu bem (relógio sincronizado)

    
por 23.01.2014 / 12:36
1

O servidor NTP não foi projetado para ser executado dentro de uma máquina virtual. Requer um relógio de sistema de alta resolução, com tempos de resposta para interrupções de relógio que são atendidas com um alto nível de precisão. O cliente NTP está ok para rodar em algumas soluções de virtualização. Execute o NTP no sistema operacional básico da máquina e, em seguida, faça com que seus diversos sistemas operacionais aproveitem o bom relógio criado no sistema. Mesmo isso pode não ser suficiente, pois pode haver ferramentas adicionais ou opções do kernel que você precisa ativar para que os clientes da máquina virtual possam sincronizar adequadamente seus relógios virtuais com o relógio físico do sistema.

Fonte: Suporte a problemas conhecidos do NTP

A partir dessa declaração, e lendo que a sua parte importante é git commit times, seria trivial escrever um hook pré-commit para coletar o tempo da sua máquina host, e você pode fazer isso simplesmente perguntando à sua máquina host :

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

    
por 16.12.2013 / 03:06