Почему две операционные системы на одном компьютере имеют разницу во времени в 1 час?

Почему две операционные системы на одном компьютере имеют разницу во времени в 1 час?

На моем компьютере установлены две операционные системы: Linux (основной) и Windows 7 (используется редко).

Оба O/S настроены на мой часовой пояс (UTC+1).

В зависимости от того, как я устанавливаю время в BIOS, либо Windows показывает время на 1 час раньше текущего времени, либо Linux на 1 час позже.

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

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

EDIT: Обнаружил, что это дубликатhttps://serverfault.com/questions/16107/why-does-ubuntu-9-04-reset-my-windows-clock

решение1

Я могу назвать несколько проблем, которые могут здесь иметь место.

Во-первых, возможно, в одном из устройств у вас включен переход на летнее время, а в другом — нет, или одна из ваших ОС настроена на неправильный часовой пояс.

Linux может предполагать, что аппаратные часы вашего компьютера установлены на UTC вместо локальных, а Windows может думать, что они установлены на локальные. Если вы находитесь в UTC+1 или UTC-1, вы можете увидеть такое поведение. Linux может загружать значение аппаратных часов, корректируя его на локальное, а затем преобразовывать его обратно в UTC перед записью в аппаратные часы во время выключения.

решение2

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

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

date -s "2 feb 2016 18:05:15"

hwclock --hctosys --localtimeследует скопировать настройки даты/времени BIOS на ваш компьютер и установить их на локальное время. hwclock --systohc --localtimeследует установить время BIOS в локальном времени вместо UTC. Я бы рекомендовал установить время с помощью команды dateвыше, затем запустить: hwclock --systohc --localtime И ТАКЖЕ запустить: hwclock --hctosys --localtime, чтобы убедиться, что в /etc/adjtime последняя строка файла содержит «LOCAL» вместо «UTC» или что-то в этом роде. флаги --hctosys --localtimeвместе могут сделать это программно. Возможно, это dateсделает это само по себе, но я не проверял.

для проверки того, что системное время действительно точное в локальном времени. Не беспокойтесь о том, как отформатирована строка установки даты, она чрезвычайно гибкая. Вот пример других допустимых способов сказать это:

date -s "2 feb 2016 6:05:15 PM"
date -s "february 2, 2016 6:11:30 PM"
date -s "Tue Feb  2 18:11:30 EST 2016"

(Я живу по восточному поясному времени, GMT -5)

Если у вас все еще есть проблемы, вам может потребоваться повторно выбрать часовой пояс. В Debian или производных, таких как Ubuntu, вы используете sudo dpkg-reconfigure tzdataдля изменения часовых поясов интерфейс ncurses.

Если у вас его нет, попробуйте найти соответствующий файл с информацией о часовом поясе. В моей установке это /usr/share/zoneinfo/America/Indiana/Indianapolis.

Как только вы его найдете, скопируйте его в /etc/localtime:

cp /usr/share/zoneinfo/America/Indiana/Indianapolis /etc/localtime

Я бы убедился, что время по-прежнему установлено dateправильно после этого. Если это не так, выполните первые две команды ( dateи hwclock) еще раз.

в linux должно сделать так, чтобы любое время, которое вы устанавливаете в linux, было бы правильно передано windows. В качестве альтернативы это можно сделать, но сложнее вместо этого настроить windows на использование UTC. То, как это делается, меняется в зависимости от версии, и известно, что windows возвращается к локальному времени после обновлений.

Я помню один особенно упрямый компьютер, где выполнение всех hwclockдействий было переопределено, потому что компьютер получал текущее время через интернет с помощью NTP. Настройка часового пояса была единственным способом исправить это, не отключая NTP полностью.

В любом случае, это просто большая свалка всего моего прошлого опыта с этим вопросом. Один из них почти наверняка сработает. Я бы сначала попробовал часовой пояс, а затем обязательно попробовал бы то, что hwclock --systohc --localtimeвы сделали, чтобы убедиться, что часы BIOS настроены на местное время.

Связанный контент