Убедитесь, что ваш NTP-клиент также устанавливает аппаратные часы (через BIOS), а не только программные часы Linux.
Вы можете проверить аппаратные часы с помощью hwclock
программы (расположенной в /usr/sbin
или /sbin
) и сравнить их с программными часами с помощью date
команды.
Скучное объяснение :
В вашем компьютере есть небольшая микросхема, которая называется «часы реального времени» или RTC. Эти часы работают от батареи и отсчитывают время, как наручные часы. Когда компьютер включается, часы считываются, и именно так ваша операционная система знает, который час, когда он запускается. Но после первого чтения операционным системам не нужно использовать RTC - он может просто продолжать считать время (секунды, часы и т. Д.) Само по себе. Всякий раз, когда пользователь спрашивает, во сколько его время, он может просто сообщить свое собственное время (вместо времени, которое сообщает RTC).
Сложный момент наступает, когда RTC не имеет нужного времени. Когда вы пытаетесь откорректировать время, это действительно операционная система, которая делает это за вас. Операционная система может обновлять только свои внутренние, программные, часы. В этом случае после перезагрузки неверное время будет снова загружено из RTC. Я до сих пор помню это со времен DOS. Вы должны были зайти в BIOS, чтобы изменить часы. тьфу.
В любом случае, последний гвоздь в гробу таков: время, считываемое с RTC, это просто число. И операционная система может изменить это число. Например, может потребоваться добавить 3 600 000 миллисекунд (1 час) к этому числу, чтобы пользователи GMT + 1 чувствовали себя комфортно. В других случаях что-то не так с настройками часового пояса.
В любом случае, установка аппаратных часов из операционной системы имеет тенденцию исправлять это, поскольку они проходят тот же процесс фильтрации. Таким образом, даже если ваша ОС добавляет 5 минут к RTC, она также вычтет 5 минут перед обновлением RTC.
Удачи!