Поиск по сайту:

Как исправить Windows и Linux, показывающие разное время при двойной загрузке


Ваш компьютер хранит время в аппаратных часах на материнской плате. Часы отсчитывают время, даже когда компьютер выключен. По умолчанию Windows предполагает, что время хранится в местном времени, в то время как Linux предполагает, что время хранится в формате UTC, и применяет смещение. Это приводит к тому, что одна из ваших операционных систем показывает неправильное время в ситуации двойной загрузки.

Чтобы исправить это, у вас есть два варианта: заставить Linux использовать местное время или заставить Windows использовать время UTC. Не выполняйте оба шага инструкций, иначе они все равно не будут говорить на одном языке! Мы рекомендуем, чтобы Linux использовал местное время, если это возможно.

Вариант первый: заставить Linux использовать местное время

Лучше всего заставить Linux использовать местное время так же, как в Windows. В Windows есть параметр реестра, который заставляет его хранить время в формате UTC, но, как сообщается, он плохо поддерживается и может вызывать проблемы с некоторыми сторонними приложениями, которые всегда предполагают, что аппаратные часы работают по местному времени. Он также несовместим с собственной службой синхронизации времени в Интернете Windows.

Действия, необходимые для того, чтобы ваша система Linux использовала местное время, могут различаться в зависимости от дистрибутива Linux. Однако в любом дистрибутиве Linux с systemd вы можете использовать команду timedatectl , чтобы внести это изменение. Это будет работать в современных версиях Ubuntu, Fedora, Red Hat, Debian, Mint и других дистрибутивах Linux, использующих systemd.

Чтобы внести это изменение, сначала откройте окно терминала в вашей системе Linux. Выполните следующую команду, чтобы перевести часы реального времени на материнской плате в местное время. Linux будет хранить время по местному времени, как это делает Windows.

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

Чтобы проверить текущие настройки, запустите:

timedatectl

Если вы видите «RTC в местном часовом поясе: да», Linux настроен на использование местного часового пояса вместо UTC. Команда предупреждает вас, что этот режим поддерживается не полностью и может вызвать некоторые проблемы при переключении между часовыми поясами и переходом на летнее время. Однако этот режим, вероятно, лучше поддерживается, чем параметр UTC в Windows. Если вы выполняете двойную загрузку с Windows, Windows автоматически перейдет на летнее время.

Если вы когда-нибудь захотите отменить это изменение, выполните следующую команду:

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

Вариант второй: заставить Windows использовать время UTC

Заставить Windows использовать время UTC, как в Linux, вероятно, не лучший вариант. Вы можете отредактировать реестр, чтобы Windows использовала время UTC, но это потенциально может вызвать больше проблем, чем просто заставить Linux использовать местное время.

Если вы действительно хотите это сделать, вам сначала нужно отключить функцию обновления времени в Интернете в Windows. Это гарантирует, что Windows не установит часы неправильно при попытке синхронизировать текущее время из Интернета. В Windows 10 перейдите в «Настройки» > «Время и язык» и отключите «Установить время автоматически». В Windows 7 щелкните правой кнопкой мыши системные часы на панели задач и выберите «Настроить дату/время». Перейдите на вкладку «Интернет-время», нажмите кнопку «Изменить настройки», снимите флажок «Синхронизировать с сервером времени в Интернете» и нажмите «ОК».

Заставьте Windows использовать время UTC, отредактировав реестр

Теперь вам нужно будет добавить соответствующее значение в реестр Windows. Вот наше стандартное предупреждение: Редактор реестра — это мощный инструмент, и неправильное его использование может сделать вашу систему нестабильной или даже неработоспособной. Это довольно простой способ, и у вас не должно возникнуть проблем, если вы будете следовать инструкциям. Тем не менее, если вы никогда не работали с ним раньше, подумайте о том, как использовать редактор реестра, прежде чем начать. И обязательно сделайте резервную копию реестра (и своего компьютера!) перед внесением изменений.

Сначала откройте редактор реестра, нажав «Пуск», введя «regedit» и нажав «Ввод». Согласитесь с появившимся запросом безопасности.

Перейдите к следующему ключу на левой панели редактора реестра:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation

В последних версиях Windows 10 вы можете скопировать и вставить указанную выше строку в поле адреса. Однако этот хак будет работать и в Windows 7.

Щелкните правой кнопкой мыши ключ «TimeZoneInformation» и выберите «Создать» > «Значение DWORD (32-разрядное)».

Назовите новое значение RealTimeIsUniversal.

Дважды щелкните значение RealTimeIsUniversal, которое вы только что создали, задайте для данных значения значение 1 и нажмите «ОК».

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

Если вы когда-нибудь захотите отменить это изменение, вернитесь в это место в реестре, щелкните правой кнопкой мыши добавленное вами значение RealTimeIsUniversal и удалите его из реестра.

Загрузите наш взлом реестра в один клик

Если вы не хотите редактировать реестр самостоятельно, вы можете использовать наш загружаемый хак реестра. Мы создали один хак, который заставляет Windows использовать время UTC, и один, который восстанавливает местное время. Оба включены в следующий ZIP-файл. Просто загрузите файл, дважды щелкните хак, который вы хотите использовать, и согласитесь добавить информацию в свой реестр.

Заставить Windows использовать время UTC

Приведенные выше хаки делают то же самое, что мы описали выше. Взлом «Заставить Windows использовать время UTC» создает запись «RealTimeIsUniversal» со значением «1», а взлом «Заставить Windows использовать местное время» удаляет запись «RealTimeIsUniversal».

Если вы когда-нибудь захотите посмотреть, что делает этот или любой другой файл .reg, щелкните его правой кнопкой мыши и выберите «Изменить», чтобы просмотреть файл в Блокноте. Вы можете легко создавать свои собственные хаки реестра, которые просто состоят из списка записей реестра, которые нужно добавлять, редактировать и удалять в правильно отформатированном списке.

Как насчет двойной загрузки Windows на Mac?

Хотя macOS от Apple использует время UTC, как и Linux, вам не нужно делать ничего особенного при запуске Windows в Boot Camp на Mac. Драйверы Apple Boot Camp справляются со всем. (Однако двойная загрузка Hackintosh — это отдельная история, и вам придется попробовать использовать настройку реестра Windows, описанную выше.)

Если вам интересно, почему Windows использует местное время вместо UTC, как другие операционные системы, официальный блог Microsoft The Old New Thing объясняет это здесь. Короче говоря, это было сделано для сохранения обратной совместимости с системами Windows 3.1 и предотвращения путаницы при установке времени в BIOS компьютера. Конечно, производители ПК выбрали местное время, чтобы быть совместимым с Windows, а Windows выбрала местное время, чтобы быть совместимым с решением, которое выбрали производители ПК, поэтому цикл стал самоусиливающимся.

В настоящее время нет стандарта для маркировки того, хранится ли время как UTC или местное время в прошивке BIOS или UEFI, что, вероятно, было бы наиболее логичным решением. Но это потребует некоторой работы, и большинство людей даже не заметят, что разные операционные системы используют разные форматы времени, за исключением конфигураций с двойной загрузкой.