Разное время в Windows и Linux Mint


18

Сначала я установил Linux Mint на свой Acer Aspire 4930, а затем дважды загрузился с Windows 7.

Я всегда вижу правильное время в Linux Mint, но при загрузке в Windows время сдвигается назад на несколько часов, даже после сброса времени, при перезагрузке оно снова показывает неправильное время.


Вопросов:

  1. Почему это происходит?

  2. Что я могу с этим поделать?

Ответы:


17

В Windows системные часы RTC традиционно хранятся по местному времени. В Unix и Linux он традиционно хранится в формате UTC и /etc/localtimeиспользуется для указания текущего часового пояса, чтобы отображаемое время было правильным.

Эти два мировоззрения сталкиваются в конфигурациях с двойной загрузкой, потому что есть только один RTC. Обычно вы говорите Linux, чтобы предположить, что RTC - местное время (потому что Windows не может быть сказано). Это зависит от одного Linux на другой, но так как монетный двор, как Ubuntu вы можете вероятно установить UTC=noв /etc/default/rcS. Затем вы можете установить часы на местное время в Windows, и Linux после этого оставит их в покое.


Примечание редактора :

Этот файл отсутствует со времен Linux Mint 19 (точнее, с базы Ubuntu 18.04):

/etc/default/rcS

2
UTC уже установлено на нет, разница во времени все еще есть.
Баллистическая

5

Мята 18.2 KDE, похоже, невосприимчив к другим исправлениям (включая дополнительные, которые я нашел в поиске). Файлы, упомянутые в ответах aecolley и error404, либо больше не существуют, либо, по-видимому, больше не находятся там, где указана настройка, по крайней мере в текущей версии KDE. Команда в ответе Джулии Пеллетье работала для 18.2 Корицы, но не для 18.2 КДЕ.

После попытки полдюжины предложенных решений, следующие исправили его для 18.2 KDE. Когда отображается правильное время, выполните следующую команду терминала:

timedatectl set-local-rtc 1 --adjust-system-clock

Источник: Советы и рекомендации для Linux Mint после установки [Mint 18 - Cinnamon Edition]

Это также должно работать на Cinnamon как альтернативное решение, и я предполагаю, что другие DE также.

Примечания редактора:

  • Там нет sudoнеобходимости, запустите эту команду как ваш пользователь.

  • Это сохраняется при перезагрузке, должно быть постоянным.

  • Протестировано на Linux Mint 19.1 Cinnamon, который основан на Ubuntu 18.04.


Я подтверждаю, это работает на Mint 18.3 Cinnamon.
dchrome

@Vlastimil, это было некоторое время, так как я сделал это. Насколько я помню, sudo не требуется (если бы это было так, я бы включил его в ответ, и подобные исправления также не относятся к sudo, поэтому я почти уверен, что это не так). И да, это сохраняется.
fixer1234

@ fixer1234 Большое спасибо, приятель! Вы спасли мой день, и я думаю, что все :)
LinuxSecurityFreak

3

Наиболее общий способ сделать это с:

hwclock --systohc --localtime

которая сохраняется при перезагрузке и работает на большинстве систем.


Если ваши часы в настоящий момент показывают правильное время, то вам нужна действительно команда hwclock --systohc --localtime, которая установит аппаратные часы на местное время, используя значение, отображаемое в данный момент системой. Однако, если ваши часы в настоящее время неверны (т. Е. Аппаратные часы имеют местное время, но система добавляет смещение для вашего часового пояса, что приводит к неверному отображаемому значению), тогда вам нужно hwclock --hctosys --localtime.
17

@youen, у меня была такая ситуация, и твоя модификация просто отвлекла время в другом направлении. Исправление для меня состояло в том, чтобы перевести часы на правильное время, а затем использовать команду в ответе Джули.
fixer1234

@ fixer1234 Хорошо, странно. Честно говоря, я не пробовал вторую команду в своем комментарии, так как к тому времени уже исправил свои часы. Я полагаю, однако, что выполнение любой из этих команд, а затем установка часов на правильное отображаемое время, сработает (повторный запуск первой команды, вероятно, не был необходим, если вы уже выполнили вторую). Рад, что это сработало для вас в конце :)
youen

1

ПРЕДУПРЕЖДЕНИЕ

Этот метод содержит ошибки в версиях Windows до 7, но он решает проблему на стороне Windows уравнения, а не на стороне Linux: вам не нужно устанавливать Linux для использования локального времени .


Взято из самой славной и уважаемой Arch Linux Wiki :

Одна из причин, по которой пользователи часто устанавливают RTC по местному времени, заключается в двойной загрузке с Windows (которая использует местное время).

Тем не менее, Windows [может обрабатывать RTC как UTC] с простым исправлением реестра. Рекомендуется настроить Windows для использования UTC, а не Linux для использования локального времени.

Используя regedit, добавьте DWORDзначение с шестнадцатеричным значением 1в реестр:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

Это можно сделать из командной строки администратора:

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

Либо создайте файл * .reg (на рабочем столе) со следующим содержимым и дважды щелкните его, чтобы импортировать в реестр:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=dword:00000001

Если вышеупомянутое, кажется, не имеет никакого эффекта, и 64-разрядный вариант Windows используется, использование QWORDзначения вместо DWORDзначения может решить проблему.

Если Windows попросит обновить часы из-за изменений в летнем времени, сообщите об этом. Часы останутся в UTC, как и ожидалось, только с корректировкой отображаемого времени.

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

# timedatectl set-timezone America/Los_Angeles

У меня действительно была эта проблема на моей собственной машине с Windows, но до сих пор я просто игнорировал ее; Однако я посмотрю, сработает ли этот метод, и сообщу о своих выводах.
Алексей Магура

1
Меня устраивает. Большое спасибо! Таким образом, мне не нужно изменять каждую установку Linux, которая есть на моем ПК.
Lokesh

0

Изменить (как корневую) /etc/timeadjпеременную от UTCдо LOCAL.

Это решило проблему без необходимости возиться с regedit на стороне Windows.


0

Запустите одну из этих двух команд, которые соответствуют вашему местному времени

timedatectl set-local-rtc 1 --adjust-system-clock

'или'

timedatectl set-local-rtc 0 --adjust-system-clock
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.