Компьютер, независимо от ОС, живет по UTC, наплевав на BIOS-время. А сам BIOS ресетится, если отключить питание ПК (CR2032 менял трижды). Есть идеи?
Началось всё с того, что обнаружил: php-функция time() выдает мне не системное время, как должна была бы, а чистый UTC, хотя я на +2.
Т.е. вывод time() в системе соответствует тому, что говорит unixtimestamp.com в The Current Unix Timestamp. Хотя в системе везде установлен UTC+2, и BIOS-время ему тоже соответствует.
Я по-разному игрался сначала с настройками системы (Windows 10): включал/отключал автосинхронизацию и менял ее серверы, по-всякому извращался с часовыми поясами и просто отрубал всю автоматику, задавая дату/время вручную.
Нифига.
Я уж было подумал, что проблема в настройках сервера или самого php.
Но потом вспомнил, что глюки времени у меня были ещё на Windows 7. И даже когда нужен был Linux, у меня в Mint тоже косяки со временем были: скакало, если правильно помню, на 2 или 3 часа, причем в будущее.
Т.е. проблема не в системе точно, а где-то на околожелезном уровне.
Ещё есть момент: при отключении питания сбрасываются настройки BIOS, в т.ч. время.
И три подряд замены батарейки эту проблему не решили.
Возможно, это как-то связано.
В остальном машина прекрасно себя чувствует. При этом мне из функций системного времени достаточно, чтобы оно корректно отображалось в углах мониторов (автосинхронизация решает эту проблему самостоятельно), а отключение питания и сброс BIOS мне не страшны, т.к. подключен через ИБП.
Надо (не побоюсь этого слова) измерить ток, потребляемый системными часами от таблетки 2032. Прямо вот так взять мультиметр, настроить его на измерение микроамперов, и включить в разрыв проводов, которыми подсоединена эта таблетка, вытащенная из своего гнезда. Наличие описанной в вопросе проблемы будет подтверждено, если этот ток равен нулю.
Но тут есть нюанс: штатный потребляемый ток от 2032 очень мал (мизерные доли микроампера), и не всякий мультиметр достоверно отличит его от нуля - ток может оказаться ниже порога чувствительности прибора или его ошибки измерения.
Одной из причин непотребления тока может быть отсутствие (банальная утеря) перемычки на материнке, с помощью которой сбрасываются настройки BIOS/часов. Если перемычки на материнке не подписаны, то найти её может помочь чертёж в техническом описании этой материнки.
Добавлю - кроме утери или неправильного положения перемычки бывает что южный мост (чипсет) выходит из строя по линии RTC, и начинает либо потреблять от батарейки слишком большой ток (от миллиампер до десятков и сотен миллиампер при 3В батарейке) и батарейку высасывает за короткий срок (от пары дней до недели, иногда и за несколько часов). Аналогично бывает при пробое какого-нибудь диода на плате в связанных цепях.
Если кратко - это не сюда вопрос, а на форум по ремонту электроники. Или просто отдать в сервис, пусть чинят (или просто заменить материнку).
Mikhri, спасибом не отделаетесь, кликайте по "Отметить решением". Конечно, если ваше измерение и вправду покажет ноль. Если там будет не ноль, тогда ни на что не претендую.
Виктор, если интересно: проблема моя разрешилась, но совсем не так, как я думал. Оказалось, что батарейку я вставлял не теми полюсами. Почему-то был уверен, что "пупырышками" ставить наружу. А потом, читая статью про сброс памяти CMOS, обратил внимание на фото - что там наружу "зеркалом". Так что у меня всё с питанием BIOS изначально было нормально, но я, начиная со следующей после сборки системника батарейки, вставлял их не той стороной. Даже не знаю, как этот позор прокомментировать, конечно...
Еще думаю - забавно бы, наверное, я смотрелся, если бы таки дошли руки намотать проводов и воткнуть в разрыв мультиметр с батарейкой - в итоге ничего не обнаружил бы, всё бы работало. И понес бы в сервисный центр, повеселил бы людей.
Mikhri, да, это возможно, при этом контакты гнезда закорачиваются плюсом таблетки, питание системных часов прекращается. Но ведь это хорошо видно! Минус таблетки открыт и никуда не контачит. Так что пожелаю вам быть в дальнейшем повнимательнее.
А за сервисников не беспокойтесь, они и не такое видали. В Сети целые тома выложены, составленные из их "охотничьих рассказов".
Ещё есть момент: при отключении питания сбрасываются настройки BIOS, в т.ч. время.
И три подряд замены батарейки эту проблему не решили.
Возможно, это как-то связано.
Да хоть с вытащенной батарейкой. Пока не вытащишь кабель питания из розетки биос должен сохранять свои настройки.
А раз батарейку вы меняли трижды, то да, где-то в линии что-то не работает
Надо прозванивать. Сходу не получится определить время
Решить проблему со временем можно, добавив в планировщике задачу на синхронизацию
во время запуска пк, входя пользователя и т.д.
А вот с настройками bios такое не прокатит
Убунты (или другого подобного) второй системой нет? Она по умолчанию хранит железные часы в UTC, и при перезагрузке из одной системы в другую будет подобный скачок.
Конечно, если время всегда сбрасывается на 00:00 1 января, то проблема где-то в железе.
Раньше был mint, но сейчас нет - только win 10. И высокоуровневых следов, вроде загрузчика, могущих как-то на это влиять, не осталось - я винт целиком форматнул и переразбил после удаления линукса.