LINUX.ORG.RU
решено ФорумAdmin

Не работает HWCLOCK на Centos 5.8 x86_64 kernel 2.6.39

 ,


2

1

Доброго времени суток. Обновил Centos 5.8 с репы elrepo до ядра 2.6.39-4.2.el5.elrepo

при загрузки появилась проблема с часами hwclock, hwclock не находит устройства и не может взять время с BIOS

[root@alpha ~]# hwclock --debug
hwclock из util-linux-2.13-pre7
hwclock: Открытие /dev/rtc завершилось неудачей, errno=19: Нет такого устройства.
Не найден пригодный часовой интерфейс.
Невозможно получить доступ к аппаратным часам каким бы то ни было известным способом.

тема проскальзывала здесь, но либо предложенное решение мне не помогла либо у меня руки кривые... помогите победить баг.

Ответ на: комментарий от dbzer0
[root@alpha ~]# hwclock --rtc=/dev/misc/rtc
hwclock: нераспознанный ключ `--rtc=/dev/misc/rtc'
hwclock - опрос и установка аппаратных часов (RTC)

Использование: hwclock [функция] [опции...]

Функции:
  --help        вывод этой справки
...............и т.д.
[root@alpha ~]# cat /proc/devices | grep rtc
254 rtc
fordiego ()
Ответ на: комментарий от fordiego
       -f, --rtc=filename
              Overrides the default /dev file name, which is /dev/rtc on  many
              platforms but may be /dev/rtc0, /dev/rtc1, and so on.

Пробуйте ключ -f. А вообще существуют /dev/rtc*?

dbzer0 ()
Ответ на: комментарий от dbzer0

с ключем -f тоже никак может у меня версия другая?

[root@alpha dev]# hwclock --version
hwclock из util-linux-2.13-pre7

существует /dev/rtc

[root@alpha dev]# cd /dev/rtc
rtc   rtc0

fordiego ()
Ответ на: комментарий от fordiego

Это не то, там 2007, 2008 год)

Проблема в том, что у вас старый util-linux 2.13-pre7. Флаг -f, --rtc для hwclock появился только в версии 2.15~rc2, так как машина может иметь несколько хардварных часов.

Обновляйте util-linux

dbzer0 ()
Ответ на: комментарий от fordiego

Компиль, будь мужиком :D

git clone https://github.com/karelzak/util-linux.git
dbzer0 ()
Ответ на: комментарий от fordiego

Как заколнится реп. Запустите ./autogen.sh он вам подскажет, что нужно доставить, чтобы сгенерить пакет под вашу систему. Ну там libtool, autopoint, automake, autoconf, autoheader и т.д. И по идее должен собраться.

dbzer0 ()
Ответ на: комментарий от dbzer0

можно конечно попробовать запилить новый util-linux а можно занятся бражением мозгов например:

[root@alpha ~]#  cd /dev/ && ln -nsf rtc0 rtc
[root@alpha dev]# hwclock --debug
hwclock из util-linux-2.13-pre7
Используется /dev/rtc interface to clock.
Дата последней корректировки отклонения - 1354178098 секунд после 1969
Дата последней калибровки - 1354178098 секунд после 1969
Аппаратные часы выставлены по UTC времени
Подразумевается, что аппаратные часы выставлены по UTC времени.
Ожидается тиканье часов...
/dev/rtc не имеет функций прерывания. В цикле ожидается для смены время из /dev/rtc
...получено тиканье часов
Время, прочитанное с аппаратных часов: 2012/11/29 16:24:40
Аппаратное время: 2012/11/29 16:24:40 = 1354206280 секунд с 1969
Чтв 29 Ноя 2012 20:24:40  -0.527255 секунд
[root@alpha dev]#

Оп и почти все заработало.... после ребута все сбрасывается.... так что не надо сразу списыват наработки багфикса 2008 года всётаки надо разобратся как заплить udev

fordiego ()
Ответ на: комментарий от dbzer0

интересно конечно... )))) боюсь что кучу времени потрачу, а всего то надо поставит centos 6 версии где это пакет уже есть в репах)))

но смысл то в том что я имею боевой сервер с ядром 2.6.18 с centos 5.8 хочу обновит его до 2.6.39 и сейчас я отрабатываю последствия обновления, хочется сделать все быстро.... без обновления всего и вся, только самое необходимое так сказать....

fordiego ()
Ответ на: комментарий от fordiego

я так понимаю из прочитанного что в багфиксе https://bugzilla.redhat.com/show_bug.cgi?id=290731 проблему решили подстановкой

ACTION=="add", SUBSYSTEM=="rtc", RUN+="/sbin/hwclock --hctosys --rtc=/dev/%k"
ACTION=="add", MAJOR==10, MINOR==135, RUN+="/sbin/hwclock --hctosys --rtc=/dev/%k"

куда-то там... вот куда никак понять не могу

fordiego ()
Ответ на: комментарий от fordiego

Это правило udev. Кладется в /etc/udev/rules.d/ под именем:

<ЧИСЛО-ПРИОРИТЕТ>-имя.rules
Число-приоритет - указывает на последовательность применения файла с правилами. В вашем случае можете назвать /etc/udev/rules.d/10-rtc.rules

dbzer0 ()
Ответ на: комментарий от fordiego

Только во-первых, это правило не будет работать у вас, так как оно использует тот же ключ --rtc, а во вторых, все что оно делает - это синхронизирует часы ОС с хардварными.

dbzer0 ()
Ответ на: комментарий от fordiego

Но если Вы все же создали правильное устройство /dev/rtc и вам нужна синхронизация эта, то измените правило так:

ACTION=="add", SUBSYSTEM=="rtc", RUN+="/sbin/hwclock --hctosys"
ACTION=="add", MAJOR==10, MINOR==135, RUN+="/sbin/hwclock --hctosys"
dbzer0 ()
Ответ на: комментарий от dbzer0

правильно ли я понимаю что создать «правильное устройство /dev/rtc» я могу если при загрузи сделаю симлинк?

cd /dev/ && ln -nsf rtc0 rtc

тогда если я запилю этот симлинк до инициализации hwclock я устраню эту ошибку http://imglink.ru/show-image.php?id=fefb4da41c1b143bc2db96c48bf070da

и после загрузки ОС смогу вызывать hwclock без ошибок?

fordiego ()
Ответ на: комментарий от fordiego

Получилось!

добавил в самое начало /etc/rc.sysinit

строку ln -nsf /dev/rtc0 /dev/rtc

теперь hwclock работает

к сожалению не могу посмотреть что на монике выводит при загрузке но думаю и там все в порядке так как насколько я знаю rc.sysinit отрабатывает до udev

Спасибо dbzer0 очень помогли

fordiego ()
Ответ на: комментарий от fordiego

есть еще одно решение

качаем патч для ядра elrepo http://elrepo.org/bugs/view.php?id=92

применяем

patch /etc/rc.sysinit /root/initscripts-rc.sysinit-rtc.el5.elrepo.patch

затем перезагрузится, и убедится что hwclock отрабатывает, но к сожалению во время загрузки все равно ошибка http://imglink.ru/show-image.php?id=fefb4da41c1b143bc2db96c48bf070da

fordiego ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.