
На моем компьютере установлены две операционные системы: 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 настроены на местное время.