Связь между аппаратными часами и системными часами при выключении

310
Dmitriy Kormulev

Я использую Centos 7 с ядром 3.10, и у меня установлены и работают hwclock и chrony. Написано, что системные часы устанавливаются с аппаратных часов на время загрузки. (здесь http://tldp.org/HOWTO/Clock-2.html )

«Другой - это« системные часы »(иногда называемые« часами ядра »или« программными часами »), которые представляют собой программный счетчик, основанный на прерывании таймера. Он не существует, когда система не работает, поэтому его нужно инициализировать из RTC (или другого источника времени) во время загрузки ».

и что он может быть установлен скриптом инициализации (который был заменен systemd) или самим ядром (здесь https://wiki.gentoo.org/wiki/System_time ):

«Обычно аппаратные часы используются для настройки системных часов при загрузке. Это может быть сделано самим ядром или службой загрузки (сценарий инициализации) ».

Хотя позже будет упомянуто, что на современном ядре (статья кажется немного устаревшей) Linux обрабатывает это сам (здесь https://wiki.gentoo.org/wiki/System_time ).

«В достаточно современном ядре (3.9 или новее) Linux можно настроить для автоматической установки системного времени».

Я проверил файл / var / log / dmesg, и это похоже на мой случай, то есть само ядро ​​установило системные часы из RTC при загрузке.

2.596137] rtc_cmos 00:00: установка системных часов на 2018-05-08 14:49:58 UTC (1525790998)

Хотя есть количество информации относительно времени загрузки я нашел очень мало информации (и весьма спорным, так как для меня) на время выключения. Написано (здесь https://wiki.gentoo.org/wiki/System_time ), что системные часы возвращаются к RTC при завершении работы. Поскольку при загрузке системное время устанавливается ядром, я догадался, что ядро ​​может быть ответственно за восстановление системного времени до RTC при завершении работы, но не может найти какую-либо определенную информацию о нем.

Итак, мои вопросы: действительно ли время устанавливается из системных часов обратно в RTC при выключении или могут быть некоторые исключения из этого? (исключения могут быть как версия ядра или специальные флаги) И если так, кто за это отвечает, ядро ​​или скрипт?

Кстати, я прочитал вопрос « Отношения между аппаратными часами и системными часами», но мой вопрос немного более конкретен и настолько отличается.

// ------------------------------------------------ -------------------------------------------------- -------------- // Мой вопрос приостановлен, поэтому я пишу здесь

согласно обсуждению ошибки здесь (хотя и немного старому) ( https://bugzilla.redhat.com/show_bug.cgi?id=753487 ) RTC действительно устанавливается на системное время при выключении, и это делается ядром

hwclock - systohc вызывается при каждом отключении, но это больше не так.

Переназначение на ядро.

Таким образом, кажется, что вопросы, касающиеся установки значений системного времени в RTC, решены.

1
Кажется, я нашел ответ на свой вопрос. согласно обсуждению ошибки здесь (хотя и немного старому) (https://bugzilla.redhat.com/show_bug.cgi?id=753487) RTC действительно установлен на системное время, и это делается ядром Dmitriy Kormulev 5 лет назад 0
Имейте в виду, что любой ответ, который вы найдете, зависит от дистрибутива. IOW эти операции инициируются в пользовательском пространстве, а не под контролем ядра Linux. * "это делается ядром" * - Конечно, ввод / вывод * "выполняется" * ядром, но по запросу из пространства пользователя. sawdust 5 лет назад 0
опилки спасибо за ваш ответ. Вы писали, что «Конечно, ввод / вывод« сделан »ядром, но по запросу из пространства пользователей». Вы имеете в виду, что специальный флаг должен быть установлен пользователем, чтобы включить это ядро ​​«I / O»? (в нашем случае RTC по системному времени)? Dmitriy Kormulev 5 лет назад 0
Нет, нет * "специального флага" *. Пользовательский пространство запрашивает ввод / вывод, просто выполняя запрос read () или write (), который вызывает системный вызов ядра. RTC - это просто другое периферийное устройство, и ядро ​​отвечает за выполнение операций ввода-вывода со всеми периферийными устройствами (за исключением некоторых ненормальных / нетипичных устройств). sawdust 5 лет назад 0

0 ответов на вопрос

Похожие вопросы