Сбой системного времени при грубом выключении

В данном форуме предлагается обсуждать темы связанные с любым "железом", а также его работой под Linux
Irina
Заглянувший
Сообщения: 18
Зарегистрирован: 23 окт 2006, 13:51
Откуда: Minsk

Сбой системного времени при грубом выключении

Сообщение Irina »

(Прошу прощения заранее за свое "железячное" невежество)
Несколько раз попадалась ситуация: питание на компе было грубо выключено, а потом включено. При включении в BIOS'е время уходило на 1 час вперед. (Возможно, минуты с секундами тоже +1, но это незаметно.)
Наблюдалось на 3-х разных компах. Linux Mandrake 10.0 и Mandriva 2006. Чипсеты Intel 845GE и 915G.
На одном из компов при "провокационном" выключении удалось по syslog'у определить, что shutdown заканчивается еще с нормальным временем, а вот при включении оно уже было сбито.
Программа, которая крутится на компе, плотно работает с системными часами, но по чтению, а не по записи!
Что делать? (кроме харакири...)

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Irina, вместо харакири - выключать компьютер нормально, для этого сущствуют UPS с RS232/USB портами и ПО выключающее корректно систему при издыхании аккумуляторов.
По сути проблемы - попробуйте покопаться в этой теме - авось поможет: http://forum.linux.by/viewtopic.php?t=8397
Опыт растет прямо пропорционально выведенному из строя оборудованию

Аватара пользователя
Speccyfan
Неотъемлемая часть форума
Сообщения: 540
Зарегистрирован: 18 дек 2004, 15:15
Откуда: Polotsk
Контактная информация:

Сообщение Speccyfan »

поднять ntpd и забыть про проблемы. Еще можно ntpdate юзать
Best Regards, Yury Konovalov aka Speccyfan (2:453/53)
Registered Linux User #379588

Irina
Заглянувший
Сообщения: 18
Зарегистрирован: 23 окт 2006, 13:51
Откуда: Minsk

Сообщение Irina »

Llama, у меня 17 штук SmartUPS (RS-232), но используются тупо: 220В - UPS - комп. В 99% случаев спасает от пропадания питания. Но юзеры не любят, когда что-то пищит, и рефлекторно давят на кнопку. (Харакири, однозначно. :x )
А еще я не нашла софта, который понимает RS-232 на мультикарте (с нестандартными адресами), а единственный стандартный COM1 занят.
Но это все немножко в сторону. Системные часы в linux -- это тоже что-то типа /dev/[...]? Или нет? Если запретить запись в /dev/[...]? Или все чушь, и сбои на уровне железа так не лечатся?
Ссылку посмотрела - спасибо, попробую.

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Irina, что касается софта - то юзерспейсным мониторам ups праллельно встроеный это RS232 или на мультикарте, можно покопаться в ядре на тему поддержки мультяшника... Многопортовки должны подерживаться нормально, возможно будет достаточно просто модуль вгрузить.
см. make menuconf - > Device drivers -> character sevices -> serial ілі типа того.


Вобщем делается все просто:
grep -Hri time /etc - далее разбираетесь как это сделано у вас в дистрибутиве.
man 5 rcS писал(а): UTC This is used to govern how the hardware real time clock is interpreted when it is read (e.g., at boot time,
for the purpose of setting the system clock) and when it is written (e.g., at shutdown). If this option is
set to no then the system clock is assumed to be set to local time. If the option is set to yes then the
system clock is assumed to be set to something approximating Coordinated Universal Time (UTC). (POSIX sys‐
tems keep a variant of UTC, without leap seconds.)
Из этого следует, что системные часы модифицируются два раза - при загрузке и при выключении системы.
В Debian всем рулит достаточно простенький /etc/init.d/hwclock.sh, из которого и следует вышесказанное.
Конретнее:
при старте вызывается /sbin/hwclock --hctosys, при выключении - /sbin/hwclock --systohc
Дальнейшие разборки надо проводить конкретно в дистрибутиве. Т.е. "hardware clock" у вас при старте системы читаются и на их основании (я не учитываю /etc/adjtime) устанвливается system clock (т.е. то, с чем юмеют дело обычные процессы), а при остановке (нормальной) соответсвенно system clock записывается в hardware clock. Судя по всему, у вас этот процесс нарушен внеплановым выключением - см. стартовые скрипты ну и /etc/adjtime - для начала я бы его прибил.
Насчет сислога - несколько не понял - имеется в виду, что последние сообщения в сислоге имеют "правдоподобное" время?
И что занчит "время в bios'е" ? после пропадания питания без загрузки ос проверяли что именно показывает bios setup?
У меня нет под руками mandrake, но может быть этот чуденый дистрибутив устанавливает при старте hwclock равным system time, а при неожиданном выключении естественно не успевает его вернуть обратно?
Более целенаправлено можно сказать сделав

Код: Выделить всё

grep -Hri systohc /etc
и разобравшись, где и при каких условиях ОС выполняет синхронизацию system time и hardware clock.
Опыт растет прямо пропорционально выведенному из строя оборудованию

Ответить