Antix-linux: часы спешат на 3 часа!
И вдогонку к основной моей проблеме (со звуком: ссылка на вопрос) тщетно пытаюсь решить проблему другую, настолько бестолковую, что сложно подобрать аналоги. Короче, системные часы спешат на 3 часа! Команда hwclock -v
показывает следующее:
hwclock from util-linux 2.38.1
System Time: 1718041634.664290
Trying to open: /dev/rtc0
Using the rtc interface to the clock.
Last drift adjustment done at 1718022443 seconds after 1969
Last calibration done at 1718022443 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Waiting for clock tick...
...got clock tick
Time read from Hardware Clock: 2024/06/10 17:47:15
Hw clock time : 2024/06/10 17:47:15 = 1718041635 seconds since 1969
Time since last adjustment is 19192 seconds
Calculated Hardware Clock drift is 0.000000 seconds
2024-06-10 20:47:14.686511+03:00
Отсюда можно заключить, что система считает установленное в bios'е время как UTC и при загрузке конвертирует его в local time, добавляя 3 (регион Europe/Moscow (GMT+3)). Соответственно, стоит задача заставить систему считать, что в bios'е записано local time, а не UTC. Казалось бы, в чём проблема гугл же в помощь. Однако гугл почему-то выдаёт решения только с помощью команды timedatectl
. Однако у меня sysvint-ядро, а не systemd - команды timedatectl
в системе нет! А других способов изменить эту настройку гугл, видимо, не знает, или скрывает (или я не умею гуглить). Очень надеюсь на вашу помощь (а так же на помощь по этому вопросу).
P.S. Проблема на самом деле шире. Дело в том, что когда я только установил систему, часы почему-то отставали на 3 часа! Я нашёл вроде как решение: в файле '/etc/default/rcS' прописал строку UTC=no
. И время стало определяться корректно. При этом, однако, команда hwclock -v
по-прежнему выдавала Hardware clock is on UTC time
, что меня несколько смущало. И, как водится, радость моя была не долгой. Примерно через пару дней часы вдруг стали спешить на 3 часа! Предполагаю, что так стало после того, как я сменил локализацию системы с ru-RU
на en-US
. Строка UTC=no
в означенном файле по-прежнему присутствует. Итог всего: я совершено не понимаю логику вычисления локального времени в linux!..
PP.S. Если принудительно синхронизировать время с ntp-сервером, то оно начинает отображаться корректно. Есть мысль добавить такую синхронизацию в 'rc.local', но это заткнёт проблему, а не решит её...
----- UPD -----
Дизассемблировав 'hwclock' я увидел, что он открывает файл '/etc/adjtime' и читает из него три строки. Я изменил третью строку с UTC
на LOCAL
. На первый взгляд, ничего не изменилось, кроме того, что 'hwclock' стал писать Hardware clock is on local time
. После ребута я обнаружил, что часы в трее по-прежнему спешат на 3 часа, однако теперь и время в bios стало спешить на 3 часа! Зашёл в настройки bios, установил корректное время и снова загрузил Antix - время стало отображаться корректно! 'hwclock' стал выдавать следующее:
hwclock from util-linux 2.38.1
System Time: 1718039037.137119
Trying to open: /dev/rtc0
Using the rtc interface to the clock.
Last drift adjustment done at 1718048638 seconds after 1969
Last calibration done at 1718048638 seconds after 1969
Hardware clock is on local time
Assuming hardware clock is kept in local time.
Waiting for clock tick...
...got clock tick
Time read from Hardware Clock: 2024/06/10 20:03:58
Hw clock time : 2024/06/10 20:03:58 = 1718039038 seconds since 1969
Time since last adjustment is -9600 seconds
Calculated Hardware Clock drift is 0.000000 seconds
2024-06-10 20:03:57.170562+03:00
Вроде бы проблема решена. Однако мой печальный опыт говорит, что рано радоваться. Жду, когда время снова поломается (линукс превращает человека в законченного пессимиста)...
----- UPD-2 -----
Прошло довольно много времени - часы всё это время работают как часы (тьфу-тьфу-тьфу) :)) Т.е., время отображается корректно, данную проблему считаю решённой.