Я предполагаю, что Windows как-то плохо себя ведет после пробуждения из-за системного времени. Согласно статье в Википедии, раздел реестра, на который вы ссылаетесь, работает не полностью, даже в последних версиях Windows:
Windows ожидает, что часы реального времени компьютера будут работать по местному времени. Поскольку в Windows NT была запись реестра RealTimeIsUniversal = 1, но эта функция еще не поддерживается или не полностью реализована (включая Vista), поэтому невозможно запускать часы реального времени в формате универсального координированного времени.
Я думаю, что вам лучше всего сказать Linux, что системные часы работают по местному времени, и два раза в год кусать пулю с помощью летнего времени.
ETA: в этой статье немного подробнее описывается проблема, а также намеки на тот факт, что проблемы с этим разделом реестра устранены в Vista SP2 и Windows 7:
2001-07-09: Я получил ответ от кого-то из Microsoft Base Kernel Team, который заинтересовался RealTimeIsUniversal, и они рассмотрели соответствующие части исходного кода ядра NT. Флаг RealTimeIsUniversal присутствует (остаток со времен, когда NT все еще работал на RISC-машинах с UTC RTC), но его реализация сейчас кажется неполной, и в настоящее время он не охватывается документацией Microsoft и набором регрессионных тестов, поэтому его использование не рекомендуется в этот раз. За последние несколько дней было выявлено несколько потенциальных ошибок RealTimeIsUniversal, возможно, их будет больше. Например, отладчик ядра предполагает, что время CMOS является местным, и ошибочно получит время, когда RealTimeIsUniversal = 1. Может быть аналогичная проблема в коде, который возобновляет обработку после приостановки ЦП, или в коде, который рассчитывает время изменения DST.
2008-10-31: Ура! Кто-то из Отдела основных операционных систем Microsoft намекнул мне по электронной почте, что как Vista SP2, так и Windows 7 исправят проблемы с поддержкой RealTimeIsUniversal = 1, из-за которой запуск часов CMOS в UTC пока не практичен для Windows (т. Е. Время был не прав после возобновления приостановки / гибернации Windows). Тем не менее, он предупреждает, что эта улучшенная поддержка UTC в часах CMOS может быть не сразу широко задокументирована, и детали могут измениться в будущем.
Итак, в заключение я думаю, что у вас есть два варианта:
- Обновите операционную систему до последней версии.
- Переключите Linux на местное время.
PS: В отличие от других постеров, это не может быть батарея CMOS. Часы реального времени не питаются от батареи, пока система работает. Это включает в себя режим сна (очевидно). Если батарея CMOS разрядилась, часы реального времени вернутся к своим заводским настройкам, которые обычно 1 января несколько лет назад. Смещение пары часов просто не происходит, поскольку нет никакого "состояния" часов, которое переживало бы полную потерю мощности. Это не родственные настенные часы с отслаивающейся батареей, которые сохраняют свое время, даже когда батарея разряжена.