3

Я посмотрел на документацию, но не могу найти ничего подобного. Ситуация такова, что у меня есть BeagleBone Black, у которого нет настоящих часов. По умолчанию компьютер загружается, думая, что это 1999 год (что отлично подходит для вечеринок, но ...). NTP исправляет это, но только если сеть подключена. В противном случае, это снова 1999 год. И, к сожалению, я нуждаюсь в устройстве в месте, где оно не может получить доступ к Интернету, а также необходимо регистрировать время, которое имеет хоть какой-то смысл.

Мне пришло в голову, что для моих целей было бы хорошо, если бы был способ заставить NTP читать время из файла, если сеть была недоступна. Я предполагаю, что файл времени будет записан либо как задание cron, либо как нечто внутри самого NTP, которое поддерживает состояние этого файла.

Есть ли что-нибудь подобное для NTP? Существуют ли альтернативные инструменты, которые позволили бы мне достичь того, что мне нужно? В частности, это не будет слишком большой болью для установки на BBB?

2 ответа2

4

Вы хотите пакет fake-hwclock . Он специально разработан для подобных ситуаций. Описание со страницы пакета Debian:

fake-hwclock: сохранение / восстановление системных часов на машинах без работающего оборудования RTC

На некоторых машинах нет работающих часов реального времени (RTC) или нет драйвера для существующего оборудования. fake-hwclock - это простой набор сценариев, которые периодически сохраняют текущие часы ядра (в том числе при выключении) и восстанавливают его при загрузке, чтобы системные часы оставались как минимум близкими к реальному времени. Это остановит некоторые из проблем, которые могут быть вызваны системой, считающей, что она перешла во времени назад к 1970 году, например, необходимость выполнять проверку файловой системы при каждой загрузке.

Кроме того, по-прежнему рекомендуется использовать NTP для борьбы с ложными часами, "дрейфующими" во время остановки или перезагрузки оборудования.

2

Вы можете иметь cronjob, который запускается каждые несколько минут, например так:

date +%s > /root/lasttime

Затем сделайте еще один cronjob (при условии, что у вас есть cron, который понимает расширенные настройки времени, в противном случае в сценарии загрузки):

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

Первый хранит время в секундах с начала эпохи в /root/lasttime , затем перезагрузка считывает время из файла и устанавливает дату.

Таким образом, ваше время будет неправильным по количеству времени, в которое бигль был выключен. У вас может быть состояние гонки, при котором первое задание cron может выполняться до второго, и поэтому установите время на 1999, поэтому лучше сделать это редко или поставить проверку, чтобы убедиться, что время имеет смысл, прежде чем сохранять его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .