сбой времени в windows и linux

бывают случаи, когда при установке второй системы, обычно это бывает linux, начинает сбиваться время в системах, к примеру вы работали под своим linux'ом и решили перейти в windows, и обнаружили, что время и дата совершенно не те, или наоборот, это происходит из-за различий формата времени, эти операционные системы по разному с ним работают, немного теории, и так, начинаем с linux, данные операционные системы работают с UTC
UTC — и аппаратные, и программные часы идут по Гринвичу. То есть часы дают универсальное время на нулевом часовом поясе. Например, если у вас часовой пояс GMT+3, Москва, то часы будут отставать на три часа. А уже пользователи локально прибавляют к этому времени поправку на часовой пояс, например, плюс +3. Каждый пользователь добавляет нужную ему поправку. Так делается на серверах, чтобы каждый пользователь мог получить правильное для своего часового пояса время.
windows же в свою очередь работает с localtime
localtime — в этом варианте программные часы тоже идут по Гринвичу, но аппаратные часы идут по времени локального часового пояса. Для пользователя разницы никакой нет, все равно нужно добавлять поправку на свой часовой пояс. Но при загрузке и синхронизации времени Windows вычитает из аппаратного времени 3 часа (или другую поправку на часовой пояс), чтобы программное время было верным.
так, вроде с теорией разобрались, теперь переходим к практике, и так, в начале грузимся по нашим windows, запускаем консоль от имени администратора и выполняем команды, для 32ч битной системы
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

или же для 64х битной
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1

но часы всё равно будут синхронизироваться со временем сервера, для этого выключим службу синхронизации часов
sc config w32time start= disabled

теперь перезагружаем нашу систему и запускаем linux логинимся в терминале под root'ом и выполняем команды
timedatectl set-local-rtc 1 --adjust-system-clock

и
sed -i 's/UTC=yes/UTC=no/' /etc/default/rcS

просмотрим состояние аппаратных часов
sudo timedatectl

теперь перезагружаемся ещё раз,входим в bios и настраиваем дату и время, проверяем…
если по каким то причтнам нам надо отключить всё это, то выполняем команды в
linux

timedatectl set-local-rtc 0

и
sed -i 's/UTC=no/UTC=yes/' /etc/default/rcS

в windows, консоль от имени администратора
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0

и
sc config w32time start= demand

ещё одним вариантом может послужить следующее, в linux debian и производных
выполним команду для установки локального времени
sudo hwclock --localtime --adjust

если же хотим вернуть обратно
sudo hwclock --utc --adjust

теперь проверим
timedatectl | grep local

если ответ
RTC in local TZ: no

то наше время тикает по гринвичу, если же ответ
RTC in local TZ: yes

то значит наше время тикает по установленному системно
на сем всё, думаю вам было полезно

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.