O NTP pode ser configurado para carregar uma hora do arquivo, caso não seja possível carregar da rede?

3

Eu olhei para a documentação, mas não consigo encontrar nada parecido com isso. A situação é que eu tenho um BeagleBone Black que não tem um relógio real. Por padrão, o computador inicializa pensando em 1999 (o que é ótimo para festas, mas ...). O NTP conserta isso, mas apenas se a rede estiver conectada. Caso contrário, é 1999 novamente. E, infelizmente, eu neeTd o dispositivo em um local onde ele não pode obter acesso à Internet e também precisa ser tempos de registro que fazem pelo menos algum sentido.

Ocorreu-me que seria bom para os meus propósitos se houvesse uma maneira de fazer o NTP ler um horário de um arquivo se a rede estivesse indisponível. Eu imagino que o arquivo de tempo seria escrito como um trabalho cron ou algo dentro do próprio NTP que mantinha o estado deste arquivo.

Existe algo assim para o NTP? Existem ferramentas alternativas que realizariam o que eu preciso? Em particular, isso não seria muito difícil de configurar no BBB?

    
por metasoarous 18.11.2014 / 02:16

2 respostas

4

Você quer o pacote fake-hwclock . É especificamente projetado para situações como esta. Descrição da página do pacote Debian:

fake-hwclock: Save/restore system clock on machines without working RTC hardware

Some machines don't have a working realtime clock (RTC) unit, or no driver for the hardware that does exist. fake-hwclock is a simple set of scripts to save the kernel's current clock periodically (including at shutdown) and restore it at boot so that the system clock keeps at least close to realtime. This will stop some of the problems that may be caused by a system believing it has travelled in time back to 1970, such as needing to perform filesystem checks at every boot.

On top of this, use of NTP is still recommended to deal with the fake clock "drifting" while the hardware is halted or rebooting.

    
por 22.11.2014 / 06:38
2

Você poderia ter um cronjob que fosse executado a cada alguns minutos assim:

date +%s > /root/lasttime

Em seguida, tenha outro cronjob (supondo que você tenha um cron que entenda configurações de tempo avançadas, caso contrário, em um script de inicialização):

@reboot date +%s -s 'cat /root/lasttime'

O primeiro armazena o tempo em segundos desde a época em /root/lasttime , depois a reinicialização lê o tempo do arquivo e define a data.

Então o seu tempo estará errado pela quantidade de tempo que o beagle foi desligado. Você pode ter uma condição de corrida em que o primeiro cron job pode ser executado antes do segundo e assim definir o horário para 1999, portanto, é melhor torná-lo pouco frequente ou colocar um check-in para garantir que o tempo faça sentido antes de armazená-lo. / p>     

por 18.11.2014 / 02:27