LINUX.ORG.RU

Отставание от минут до часов в Lin после спящего режима

 , , ,


0

1

Отправляю систему в спячку через KDE4, уходит, но когда она просыпается, то почему-то все время прослеживается после просыпания проблема с часами - они отстают на пару часов.
Slackware-current, LILO, KDE-4.14.3 брал отсюда http://alien.slackbook.org/ktown/current/4.14.3/
уже даже NTP поднял http://docs.slackware.com/ru:howtos:network_services:ntp , но ситуация от этого не изменилась, как спячка, так проблема и по-новой синхронизировать приходится. В настройках часов через KDE стоит системное, но пробовал и с удаленного сервера брать.

В общем, никто случаем не сталкивался с подобным , не знаете как лечить?

★★★★★

Последнее исправление: NK (всего исправлений: 7)

поставь UTC, сколько жеж можно?! UTC по слухам даже маздай теперь умеет(раньше не умел вроде-бы, только после плясок с реестром).

но пробовал и с удаленного сервера брать.

оно только на несколько минут корректирует, два часа только вручную, командой ntpdate.

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

Slackware-current

у нас это в файле /etc/hardwareclock нужно поставить

UTC
(важно: перед UTC ничего не нужно ставить, она матчит '^UTC' в файле /etc/rc.S )

Ну можешь конечно дальше мучится, тогда сделай корректный /usr/share/zoneinfo (man hwclock)

PS:

LOCAL vs UTC Keeping the Hardware Clock in a local timescale causes inconsistent daylight saving time results:

· If Linux is running during a daylight saving time change, the time written to the Hardware Clock will be adjusted for the change.

· If Linux is NOT running during a daylight saving time change, the time read from the Hard‐ ware Clock will NOT be adjusted for the change.

The Hardware Clock on an ISA compatible system keeps only a date and time, it has no concept of timezone nor daylight saving. Therefore, when hwclock is told that it is in local time, it assumes it is in the 'correct' local time and makes no adjustments to the time read from it.

Linux handles daylight saving time changes transparently only when the Hardware Clock is kept in the UTC timescale. Doing so is made easy for system administrators as hwclock uses local time for its output and as the argument to the --date option.

POSIX systems, like Linux, are designed to have the System Clock operate in the UTC timescale. The Hardware Clock's purpose is to initialize the System Clock, so also keeping it in UTC makes sense.

Linux does, however, attempt to accommodate the Hardware Clock being in the local timescale. This is primarily for dual-booting with older versions of MS Windows. From Windows 7 on, the RealTimeIsUniversal registry key is supposed to be working properly so that its Hardware Clock can be kept in UTC.

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

Я попробую, спасибо, но я не очень понял причем тут UTC(?) У меня не то что разница в часах, а в минутах даже наблюдается!

Вот н-р, разница не в секундах , а в минутах(!) после спячки и перезагрузки:

nk@darkstar:~$ date && hwclock 
Вс мар  8 12:30:32 MSK 2015
Вс 08 мар 2015 12:24:20  .263318 seconds

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 1)

Ой, не знаю, но что-то мне кажется пробелема кроется в моем BIOS, в котором есть строчка с FactoryOS: Win7 , хоть win уже больше недели не запускал

NK ★★★★★
() автор топика
Ответ на: комментарий от NK

попробуй подождать ещё недельку

anonymous
()

что еще заметил

root@darkstar:~# hwclock 
Вс 08 мар 2015 13:23:13  .435051 seconds
root@darkstar:~# hwclock --systohc --localtime
root@darkstar:~# hwclock 
Вс 08 мар 2015 13:29:23  .903778 seconds
root@darkstar:~# hwclock --systohc --localtime --directisa
root@darkstar:~# hwclock 
Вс 08 мар 2015 13:23:27  .825693 seconds
root@darkstar:~# hwclock --systohc --localtime
root@darkstar:~# hwclock 
Вс 08 мар 2015 13:29:56  .185054 seconds
root@darkstar:~# hwclock --systohc --localtime --directisa
root@darkstar:~# hwclock 
Вс 08 мар 2015 13:24:08  .185113 seconds
root@darkstar:~# 
не очень пока разобрался, что за

--directisa access the ISA bus directly instead of /dev/rtc

Но в то же время по ходу оно такое творит

root@darkstar:~# grep "directisa" /etc/rc.d/rc.*
/etc/rc.d/rc.0:    CLOCK_OPT="--directisa"
/etc/rc.d/rc.6:    CLOCK_OPT="--directisa"
/etc/rc.d/rc.6.orig:    CLOCK_OPT="--directisa"
/etc/rc.d/rc.S:    CLOCK_OPT="--directisa"
/etc/rc.d/rc.S.orig:    CLOCK_OPT="--directisa"

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 1)
Ответ на: комментарий от NK

Вот н-р, разница не в секундах , а в минутах(!) после спячки и перезагрузки:

у тебя похоже батарейка села. Иди и купи новую, они копейки стоят.

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

nk@darkstar:~$ date && hwclock
Вс мар 8 12:30:32 MSK 2015
Вс 08 мар 2015 12:24:20 .263318 seconds

То есть hardware clock правильное, а system time врёт, да? Тогда тебе надо просто запускать в момент пробуждения скрипт с командой hwclock --hctosys.

А если наоборот, то тогда прав коллега emulek, батарейка.

а вот и проблема похожая

Не факт, там, может быть, винда время сбивает.

OldManClone ★★
()
Последнее исправление: OldManClone (всего исправлений: 1)
Ответ на: комментарий от NK

не очень пока разобрался, что за --directisa access the ISA bus directly instead of /dev/rtc

не трогай это. ISA это такая шина данных, до PCI и ещё задолго до PCE-E (которые сейчас) https://ru.wikipedia.org/wiki/ISA

Устарела в середине 90х прошлого века.

Это прямой доступ к часам, которые втыкались в ISA шину. Я таких часов и не видел (а видел я многое).

--directisa

This option is meaningful for: ISA compatible machines including x86, and x86_64; and Alpha (which has a similar Hardware Clock interface). For other machines, it has no effect. This option tells hwclock to use explicit I/O instructions to access the Hard‐ ware Clock. Without this option, hwclock will use the rtc device, which it assumes to be driven by the RTC device driver. As of v2.26 it will no longer automatically use directisa when the rtc driver is unavailable; this was causing an unsafe condition that could allow two processes to access the Hardware Clock at the same time. Direct hard‐ ware access from userspace should only be used for testing, troubleshooting, and as a last resort when all other methods fail. See the --rtc option.

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

На счет батарейки смотрите:

root@darkstar:~# date
Вс мар  8 14:41:55 MSK 2015
root@darkstar:~# hwclock 
Вс 08 мар 2015 14:29:39  .763308 seconds

потом перезагружаю ноут, захожу в bios и вижу что там часы правильно показывают, как в случае с date

Так что я думаю не батарейка, и ноуту ~3года

NK ★★★★★
() автор топика
Ответ на: комментарий от NK

а вот и проблема похожая http://www.slackware.ru/forum/viewtopic.php?f=8&t=595

это известная проблема, и имя ей — WinXP™. Решается в семёрке ковырянием реестра.

Решение:

Linux does, however, attempt to accommodate the Hardware Clock being in the local timescale. This is primarily for dual-booting with older versions of MS Windows. From Windows 7 on, the RealTimeIsUniversal registry key is supposed to be working properly so that its Hardware Clock can be kept in UTC.

но для маздая XP решения вроде-бы нет. На WinFAQ короче. И там время сбивается _ровно_ на час или типа того.

То есть hardware clock правильное, а system time врёт, да? Тогда тебе надо просто запускать в момент пробуждения скрипт с командой hwclock --hctosys.

у меня в нетбуке время само выправляется после пробуждения

посмотрел:

усыпляю скриптом /usr/sbin/pm-suspend (из базовой поставки)

оно выполняет хук

resume_clock()
{
        printf "Loading system time from hardware clock..."
        /sbin/hwclock --hctosys >/dev/null 2>&1 0<&1 && echo Done. || \
            echo Failed.
}
из /usr/lib/pm-utils/sleep.d/90clock

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

То есть hardware clock правильное, а system time врёт, да?

наоборот, вот это помогает,

root@darkstar:~# ntpdate time.nist.gov
 8 Mar 14:50:44 ntpdate[1594]: step time server 206.246.122.250 offset 1098.033131 sec
root@darkstar:~# hwclock
Вс 08 мар 2015 14:33:09  .966423 seconds
root@darkstar:~# hwclock --systohc
root@darkstar:~# hwclock
Вс 08 мар 2015 14:51:31  .153994 seconds
но стоит перезагрузиться - опять hwclock сбито

NK ★★★★★
() автор топика
Ответ на: комментарий от emulek

т.е. pm-utils что ли проблема и особый ноут?

NK ★★★★★
() автор топика
Ответ на: комментарий от NK

Так что я думаю не батарейка, и ноуту ~3года

для кетайской батарейки 3 года — немало.

вот я не помню, чем там KDE усыпляет. Поставь на всякий случай pm-utils и посмотри настройки KDE.

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

Батарейку проверить легко. Вырубаешь кабель, включаешь и сразу в биос. Все настройки должны на дефолт сброситься.

ashot ★★★★
()
Ответ на: комментарий от NK

потом перезагружаю ноут, захожу в bios и вижу что там часы правильно показывают,

vs

но стоит перезагрузиться - опять hwclock сбито

Что-то тут не то...

OldManClone ★★
()
Ответ на: комментарий от NK

но стоит перезагрузиться - опять hwclock сбито

перезагрузка и сон — разные вещи вообще-то. Перезагрузкой рулит /etc/rc.d/rc.0, а вот сном рулит совсем другая ерунда. У меня это pm-suspend(из pm-utils), но в KDE я честно говоря не в курсе.

У в любом случае, если часы _так_ сбиваются, то это либо часы навернулись (вряд-ли, но если так, то спасёт только ntpdate в загрузке), либо батарейка.

Вот если-бы оно в UTC сбрасывалась(ну или как-то так) — другой вопрос.

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

чем там KDE усыпляет

смотри, ситуация такая уже, что я заметил hwclock не тот показывает даже после перезагрузки...

К слову, специально сейчас в Win7 загрузился и что я вижу там время показывается, как раз мое проблемное, как в слаке с hwclock, по ходу отсюда ноги и растут, я не знаю что уже думать, но не ужели это FactoryOS ?!. O_o

NK ★★★★★
() автор топика
Ответ на: комментарий от ashot

Вырубаешь кабель, включаешь и сразу в биос. Все настройки должны на дефолт сброситься.

это если совсем сдохла. Когда батарейка полумёртвая, то оно сохраняется, но местами. CMOS держится, но вот часы уже начинает колбасить.

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

Ну мы про батарейку биоса и говорим.

ashot ★★★★
()
Ответ на: комментарий от NK

но не ужели это FactoryOS ?!

не. Я же говорю — маздай по дефолту ставит в localtime, а Linux — UTC (вообще говоря, выбирается при установке Slackware, можно потом командой timeconfig). Ну если время разное, то получается ерунда. И если не WinXP, то нужно UTC настроить и там и там.

emulek
()

жесть, короче, синхронизировал время через win7 и на час спустил, там винда не обновленная, bios в обще теперь 2011 год показывает

NK ★★★★★
() автор топика
Ответ на: комментарий от emulek

Спорить не буду, но у меня сразу сдохла.

ashot ★★★★
()
Ответ на: комментарий от NK

В win7 выставил UTC - 2021 год теперь... Реально не понимаю, может еще причина что BIOS обновленный, а винда не обновлена? Но почему так завязан BIOS на винде?

Попробую BIOS откатить, но наверно как OldManClone советует сделаю, в rc.local - hwclock --systohc пропишу

NK ★★★★★
() автор топика
Ответ на: комментарий от NK

Но почему так завязан BIOS на винде?

При изменении времени винды она меняет время bios

Решение

А)

1 вин в localtime.

2 в лине ставишь local без синхронизации с биос

Б)

1 запрещаешь винде менять время биос через реестр.

2 ставишь utc в винде через реестр

3 ставишь utc в лине без обновления времени биоса

4 в биосе ставишь utc

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

$ grep '^batt_status' /proc/driver/rtc
batt_status : okay

NK ★★★★★
() автор топика
Ответ на: комментарий от OldManClone

vs

так

bios
hwclock

угу, я то же не пойму, вот смотрите Отставание от минут до часов в Lin после спящего режима (комментарий)
заметил что по ходу ключ --directisa такое делает

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 1)
Ответ на: комментарий от emulek

оно уже в /etc/rc.d/rc.S прописано Патрегом?

прописано, оно прописано, но вот там с ключем /sbin/hwclock $CLOCK_OPT , который как раз CLOCK_OPT="--directisa"

NK ★★★★★
() автор топика
Ответ на: комментарий от emulek

да вот пожалуйста, в виртуалках, одна Деб (кранч), другая Слака
http://tau.rghost.ru/6RYbbxQGt/image.png

В результате всех эксперементов, что я заметил: в слаке вот она запустилась и работает, она BIOS-время не трогает и не записывает информацию в них, до перезагрузки, только когда перезагружаемся или выключаемся она закидывает (по ходу) время из системы и в выводе при выключении это видно http://tau.rghost.ru/6cgHqZDqR/image.png , другая проблема, что если возвращаемся из спячки она берет (откуда-то) старое и непонятное время.

И возвращаюсь к скриншоты 1-ому пока непонятно, как сделать, как в дебе, что бы системное время было == локальному,системному, потому что как заметил , если к спячки на диск приходить откуда-то вылазит проблема с часами

NK ★★★★★
() автор топика
Ответ на: комментарий от mr_fff

спасибо за советы

запрещаешь винде менять время биос через реестр

я в обще забил в результате всех проблем на время в ней, при дуалбуте, дата вроде правильно стоит , ну и ладно, плюс она еще у меня не обновлена и там по старому время к+utc и копаться в реестре желания нет

Но что заметил:в слаке -
hwclock , как раз и показывает время, которое в Win, а
hwclock --directisa, то которое в BIOS O_o и в винде разница во времени не то что как если бы это было заметно с UTC, а даже в минутах есть

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 2)
Ответ на: комментарий от emulek

из /usr/lib/pm-utils/sleep.d/90clock

спасибо за подсказку, в общем-то так и сделал, только создал свой (симлинк на) файл-скрипт 99local с содержимым

# cat /usr/lib/pm-utils/sleep.d/99local

#!/bin/sh
hwclock --directisa --hctosys

90clock у меня то же есть, но теперь после спячки время берется из BIOS на данном ноуте (HP Pavilion dv6-7052er, скажу что ноут хороший, но наверно после всего пережитого вряд ли в следующий раз возьму hp еще раз).

Напоследок, спросить хочу про NTPd, периодичность обновление времени с сервера в нем самом задать можно или только выход в крон вешать?

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 1)
Ответ на: комментарий от NK

прописано, оно прописано, но вот там с ключем /sbin/hwclock $CLOCK_OPT , который как раз CLOCK_OPT="--directisa"

не так.

# Set the system time from the hardware clock using hwclock --hctosys.
if [ -x /sbin/hwclock ]; then
  # Check for a broken motherboard RTC clock (where ioports for rtc are
  # unknown) to prevent hwclock causing a hang:
  if ! grep -q -w rtc /proc/ioports ; then
    CLOCK_OPT="--directisa"
  fi
  if grep -wq "^UTC" /etc/hardwareclock ; then
    echo -n "Setting system time from the hardware clock (UTC): "
    /sbin/hwclock $CLOCK_OPT --utc --hctosys
  else
    echo -n "Setting system time from the hardware clock (localtime): "
    /sbin/hwclock $CLOCK_OPT --localtime --hctosys
  fi
  date
fi

т.е. --directisa только если у тебя rtc нету.

Впрочем, оно всё равно работать не будет, т.ч. юзай.

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

hwclock --directisa, то которое в BIOS O_o и в винде разница во времени не то что как если бы это было заметно с UTC, а даже в минутах есть

странная железка…

Напоследок, спросить хочу про NTPd, периодичность обновление времени с сервера в нем самом задать можно или только выход в крон вешать?

можно и нужно.

man 5 ntp.conf

minpoll minpoll

maxpoll maxpoll These options specify the minimum and maximum poll intervals for NTP messages, as a power of 2 in seconds The maximum poll interval defaults to 10 (1,024 s), but can be increased by the maxpoll option to an upper limit of 17 (36.4 h). The minimum poll interval defaults to 6 (64 s), but can be decreased by the minpoll option to a lower limit of 4 (16 s).

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

minpoll minpoll, maxpoll maxpoll

а не поможете с примерным, вот как сделать раз в 2 часа хотя бы?

что-то не пойму гуглю и не нахожу как эту там переодичность в итоге люди прописывают, в основном через cron, я когда-то тоже через cron.hour настраивал, в самом конфиге ntp хотелось бы

NK ★★★★★
() автор топика
Ответ на: комментарий от NK

в продолжение моего решения, вот так еще добавил # cat /usr/lib/pm-utils/sleep.d/99local

#!/bin/sh
hwclock --directisa --hctosys
ntpd -qg && hwclock --directisa --systohc  &
настройку ntp вот здесь подсматривал http://docs.slackware.com/start?id=ru:howtos:network_services:ntp

логика такая: система проснется, часы возьмет из машины, далее если удачно пройдет получение времени ntpd -qg &&, то в bios-время закинется время из слаки (--systohc) и & добавил на всякий что бы rc.local не висел, а в фоне (что ли) выполнялся и продолжался старт системы

NK ★★★★★
() автор топика
Ответ на: комментарий от NK

а не поможете с примерным, вот как сделать раз в 2 часа хотя бы?

зачем? Оно и так работает, с дефолтом.

что-то не пойму гуглю и не нахожу как эту там переодичность в итоге люди прописывают, в основном через cron, я когда-то тоже через cron.hour настраивал, в самом конфиге ntp хотелось бы

в crontab? Смысл?

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

странная железка…

да железка очень странная, вот сейчас на acer-ноуте смотрю

root@darkstar:~# hwclock && hwclock --directisa && date
Вт 10 мар 2015 10:04:35  .993290 seconds
Вт 10 мар 2015 10:04:37  .003643 seconds
Вт мар 10 10:04:37 MSK 2015

все как надо и никаких расхождений

ntp

Оно и так работает, с дефолтом.

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

NK ★★★★★
() автор топика

вся суть свидетелей Патрика
прочитать мануал даже не могут

ntpdate ru.pool.ntp.org&& hwclock -w

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

Вт 10 мар 2015 10:04:35 .993290 seconds Вт 10 мар 2015 10:04:37 .003643 seconds

похоже оно пыталось 2 секунды достучаться до direct ISA, но так и не смогла.

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

ЕМНИП оно в /var/log/syslog пишет.

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

прочитать мануал даже не могут

ты нахрен здесь нужен?

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

Осёл, ты живой. Я думал что тебя забанили.

у тебя проблема с мозгами. Ткни на мой ник, и почитай мои сообщения за последнее время. А из этой темы выйди пожалуйста нахрен.

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

Ради интереса, посмотрите, что пишется в dmesg про RTC и что в каталоге /sys/class/rtc, а так же в файле /sys/class/rtc/rtc0/time и в других (если есть /sys/class/rtc/rtc1/time).

Просто, если у вас там несколько часов, то, ИМХО, правильнее при загрузке брать время из правильных часов, а при завершении работы записывать правильное (NTP) время во все rtc.

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