Вопрос или проблема
У меня есть странная проблема с системными часами в моей системе Linux, TinyCore, ядро 2.6.38.
dmesg сообщает следующее:
rtc_cmos 00:04: установка системных часов на 2012-08-08 19:20:00 UTC (значение с начала эпохи)
Но на самом деле, когда я тестирую date
, он всегда начинается с 1/1/2001 01:43:00, в то время как hwclock показывает правильное время.
Теперь, если я запущу hwclock -s
, это исправляет ситуацию до следующей загрузки.
Эта система похожа на “живую CD”, которая загружается в оперативную память и размонтирует устройство хранения.
Я предполагаю, что ядро действительно установило время из rtc0, но, возможно, перезапись файла сбрасывает системные часы. Может ли это быть (включая /dev/something)?
Предпосылки
В Linux временная зона системы определяется символьной ссылкой /etc/localtime
.
Эта ссылочная запись указывает на файл данных временной зоны, который описывает местную временную зону. Файлы данных временной зоны находятся либо в /usr/lib/zoneinfo
, либо в /usr/share/zoneinfo
в зависимости от используемого дистрибутива Linux.
hwclock
hwclock — это инструмент для доступа к аппаратным часам. Вы можете отобразить текущее время, установить аппаратные часы на указанное время, установить аппаратные часы на системное время и установить системное время из аппаратных часов.
Аппаратные часы: это часы, которые работают независимо от любой управляющей программы, работающей в ЦП, и даже когда машина выключена.
Если вы используете -s
, он установит системное время из аппаратных часов. Вот почему у вас проблема исправляется.
Решение
Вы можете выполнить команду в своем терминале, чтобы установить символьную ссылку, она будет сохраняться даже после перезагрузки:
sudo ln -sf /usr/share/zoneinfo/Portugal /etc/localtime
Для меня это Португалия, адаптируйте команду к вашей временной зоне.
Ответ или решение
Проблема: Неверно установленное системное время при загрузке TinyCore Linux
Ваша проблема с неверно установленным системным временем на системе TinyCore, работающей на ядре 2.6.38, может быть вызвана несколькими факторами. Давайте подробно проанализируем ситуацию и предложим возможные решения.
Описание Проблемы
При запуске системы вы видите сообщение в dmesg
:
rtc_cmos 00:04: setting system clock to 2012-08-08 19:20:00 UTC (since_epoch-value)
Однако, при выполнении команды date
системное время отображается как 1/1/2001 01:43:00
. Получается, что несмотря на то, что аппаратные часы (HWClock) показывают правильное время, системные часы в Linux инициализируются некорректно.
Возможные Причины Проблемы
-
Аппаратные часы (HWClock): Вы указали, что при выполнении команды
hwclock -s
системное время корректируется. Это подтверждает, что аппаратные часы функционируют нормально. Проблема заключается в том, как время инициализируется при загрузке системы. -
Файлы конфигурации: Вы предположили, что некоторые системные файлы или конфигурации могут перезаписывать системное время при старте. Поскольку ваша система работает как "живой" CD, образ может не сохранять изменения, если они не были правильно настроены.
-
Проблемы с временной зоной: Некорректно настроенная временная зона также может приводить к проблемам с отображением времени. Убедитесь, что символическая ссылка
/etc/localtime
указывает на правильный файл часового пояса.
Решение
Для устранения проблемы с системным временем, выполните следующие шаги:
-
Настройка временной зоны:
Проверьте, что символическая ссылка/etc/localtime
настроена правильно. Например, если вам потребуется установить временную зону для Португалии, выполните следующую команду:sudo ln -sf /usr/share/zoneinfo/Portugal /etc/localtime
Убедитесь, что заменили
Portugal
на вашу актуальную временную зону. -
Запуск hwclock при загрузке:
Добавьте командуhwclock -s
в скрипт стартовой инициализации вашей системы. В зависимости от системы это может быть файл/etc/rc.local
или аналогичный. Это обеспечит установку системного времени из аппаратных часов при каждой загрузке:echo "hwclock -s" >> /etc/rc.local
-
Проверка системных файлов:
Исследуйте возможные конфигурационные файлы или скрипты, которые могут влиять на установку системного времени при загрузке. Убедитесь, что никаких дополнительных заданий не перезаписывают значение системного времени.
Заключение
Проблемы с неправильным установлением системного времени в TinyCore Linux могут быть решены путем корректной настройки временной зоны и добавления команд в инициализационные скрипты. Следуя приведенным рекомендациям и применяя описанные шаги, вы сможете исправить проблему и обеспечить правильное отображение времени на вашей системе.