[Comm] p7, RTC и UTC

Sergey Vlasov vsu на altlinux.ru
Пн Мар 10 13:09:44 MSK 2014


On Sun, Mar 09, 2014 at 04:37:58AM +0300, Speccyfighter wrote:
> 09.03.2014 11:35, Sergey пишет:
> > On Sunday 09 March 2014, Sergey wrote:
> >
> >> Система - Server Light, обновлённый до p7, так что софта не сильно много.
> >> Тем не менее, кто злодей - пока непонятно.
> > ...
> > 14844 ?        Ss     0:00 /sbin/minilogd
> >
> > Кто ещё это может делать - не понимаю.
> >
> 
> Кажется что-то поймал?
> При UTC=false и ядре led-ws:
[...]
> Время, прочитанное с аппаратных часов: 2014/03/09 04:21:11
> Аппаратное время: 2014/03/09 04:21:11 = 1394328071 секунд с 1969
> Вс 09 мар 2014 04:21:11  -0.345221 секунд
> Вс мар  9 04:21:10 FET 2014
> 
> # uname -r
> 3.4.80-led-ws-alt0.M70P.1
> 
> ------------------------------------------------------------------
> 
> А при UTC=false и ядре
> # rpm -qa|grep kernel-image|grep pae|grep 3.10.32
> kernel-image-std-pae-3.10.32-alt1
> точно в UTC RTC уводит несмотря на
> # cat /etc/adjtime|tail -n 1
> LOCAL
> Даже при отсутствующем в системе ntpd.
> У меня оно постоянно стоит - памяти 6Gb.
> 
> Завтра, уже сегодня, надо бы посмотреть с std-def и un-def.

Вообще при наличии синхронизации с NTP-сервером ядро уже давно каждые
11 минут обновляет время в RTC.  Однако, начиная с 3.10, из ядра
выпилили код, который пытался обновлять в RTC только минуты и секунды,
чтобы обновление работало независимо от часового пояса (но в этом
случае не могло быть исправлено расхождение более чем на 15 минут):

  http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=3195ef59cb42cda3aeeb24a7fd2ba1b900c4a3cc

Теперь для правильного обновления RTC необходимо, чтобы в ядре были
соответствующим образом установлены переменные sys_tz и
persistent_clock_is_local:

  http://lxr.free-electrons.com/source/kernel/time/ntp.c?v=3.10#L492

Установка этих переменных возможна только в момент первого после
загрузки системы вызова settimeofday() с указанием параметра tz:

  http://lxr.free-electrons.com/source/kernel/time.c?v=3.10#L151

В нормально сконфигурированной системе этим занимается systemd:

  Mar 10 11:05:07 atlas.home systemd[1]: RTC configured in localtime, applying delta of 240 minutes to system time.
  Mar 10 11:05:07 atlas.home systemd[1]: systemd 201 running in system mode. (+PAM +LIBWRAP +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP -GCRYPT +ACL +XZ)

Однако я наблюдал ситуацию, когда systemd неправильно определял режим
работы RTC из-за странного содержимого файла /etc/adjtime - почему-то
после слова LOCAL там было что-то ещё:

-0.000001 1099594479 0.000000
1099594479
LOCAL 1900 0
0.000000

(нашёл такой файл в старой системе, там он последний раз менялся в
2005 году).

Правильный формат этого файла выглядит, например, так:

92.715438 1273327006 0.000000
1273327006
LOCAL
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20140310/5b1d8014/attachment.bin>


Подробная информация о списке рассылки community