Время выключено при двойной загрузке

303

Система двойной загрузки Windows XP Pro и Ubuntu 12.04.

У меня есть биос, установленный на правильное время, и Ubuntu, настроенный на восточное время США. Ubuntu загрузится, и время отключится на -4 часа. Если я исправлю время в Ubuntu, то при загрузке в Windows XP время будет отключено на + 4 часа.

Это свежая установка 12.04. У меня не было этой проблемы до переустановки Ubuntu.

Билл Уолден
источник

Ответы:

265

https://help.ubuntu.com/community/UbuntuTime#Multiple_Boot_Systems_Time_Conflicts

Многочисленные конфликты систем загрузки

Операционные системы хранят и извлекают время на аппаратных часах, расположенных на материнской плате, чтобы они могли отслеживать время, даже когда система не имеет питания. Большинство операционных систем (Linux / Unix / Mac) хранят время на аппаратных часах как UTC по умолчанию, хотя некоторые системы (особенно Microsoft Windows) хранят время на аппаратных часах как «местное» время. Это вызывает проблемы в системе с двойной загрузкой, если обе системы по-разному смотрят на аппаратные часы.

Преимущество использования аппаратных часов в качестве UTC состоит в том, что вам не нужно менять аппаратные часы при перемещении между часовыми поясами или когда начинается или заканчивается летнее время (DST), поскольку UTC не имеет DST или смещения часового пояса.

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

Начиная с Intrepid (8.10), UTC = yes является значением по умолчанию.

Заставить Windows использовать UTC

Примечание. Этот метод изначально не поддерживался в Windows Vista и Server 2008, но вернулся с Vista SP2, Windows 7, Server 2008 R2 и Windows 8 / 8.1.

Чтобы MS Windows вычисляла время по аппаратным часам как UTC.

Создайте файл с именем WindowsTimeFixUTC.reg со следующим содержимым, а затем дважды щелкните по нему, чтобы объединить содержимое с реестром:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=dword:00000001

Примечание. Служба времени Windows по-прежнему будет записывать локальное время в RTC независимо от настройки реестра, указанной выше, при выключении, поэтому удобно отключить службу времени Windows с помощью этой команды (если синхронизация времени все еще требуется, пока в Windows используется любое стороннее время). решение синхронизации):

sc config w32time start= disabled

Сторнирование изменений
Вы можете создать файл со следующим содержимым, а затем дважды щелкнуть по нему, чтобы объединить исходные изменения, как указано выше:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=-

Если служба времени Windows была отключена, включите ее снова с помощью команды:

sc config w32time start= demand

Заставьте Linux использовать местное время

Чтобы сообщить вашей системе Ubuntu, что аппаратные часы установлены на «местное» время:

Системы до Ubuntu 15.04 (например, Ubuntu 14.04 LTS):

  1. редактировать /etc/default/rcS
  2. добавить или изменить следующий раздел

    # Set UTC=yes if your hardware clock is set to UTC (GMT)
    UTC=no
    

Системы Ubuntu 15.04 и выше (например, Ubuntu 16.04 LTS):

  1. откройте терминал и выполните следующую команду

    timedatectl set-local-rtc 1
    
Эрик Карвалью
источник
53
О, Боже. Я не могу поверить, что они были достаточно глупы, чтобы использовать местное время на аппаратных часах. Зачем тебе это делать?
Ионо
20
@twome, потому что в первые годы существования MS-DOS было не так много возможностей для работы в сети, и не было привычным перемещать ПК так далеко, чтобы он перемещал часовые пояса. (И да, даже учитывая эту историю, это был еще не лучший ход).
Джон Ханна
9
@twome, хотя я согласен с вами, что аппаратные часы остаются универсальными, поскольку они не хранят информацию о часовом поясе, с этим мало проблем: A) BIOS / UEFI имеют различные функции, такие как таймеры автоматического включения / выключения, когда вы установить время для этих триггеров. Было бы странно устанавливать это время в UTC - по крайней мере, для обычного пользователя. Б) Как сказал Джон выше, причины обратной совместимости.
Шахрияр Иманов
5
В Windows PowerShell выполните эту команду, чтобы обновить указанное выше свойство реестра: New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
Анатолий Миронов
6
Для тех, кто просматривает текст, вам нужно изменить настройки только в одной из ОС, а не в обеих.
Александр Рево
67

Чтобы установить часы BIOS на местное время вместо UTC в системной версии (15.04 и выше), вам нужно будет использовать timedatectlкоманду. Согласно Arch Wiki :

Вы можете установить стандартное время аппаратных часов через командную строку. Вы можете проверить, что вы выбрали для использования:

$ timedatectl | grep local

Аппаратные часы могут быть запрошены и установлены с помощью timedatectl команды. Чтобы изменить стандарт аппаратного времени на местное, используйте:

# timedatectl set-local-rtc 1

Если вы хотите вернуться к аппаратным часам в UTC, выполните:

# timedatectl set-local-rtc 0
Мур
источник
4
На Ubuntu 16.10 это помогло сделать «hwclock --systohc --localtime». Это записывает «локальную часть» в / etc / adjtime и тем самым делает ее постоянной.
user1050755
1
@ user1050755 это до, после или вместо команды timedatectl?
Nasch
36

Ваш часовой пояс восточный , в настоящее время EDT (восточное летнее время). EDT - это UTC минус четыре часа, то же самое, что и смещение, которое вы испытываете.

Когда это происходит в системе с двойной загрузкой, обычно это происходит потому, что одна операционная система считает, что аппаратные часы отслеживают местное время, а другая операционная система считает, что аппаратные часы отслеживают UTC.

В вашем случае ваши аппаратные часы, вероятно, установлены на местное время, и:

  • Windows настроена на использование местного времени, которое (учитывая ваши настройки времени) является правильным .
  • Ubuntu настроен на использование UTC, что (учитывая ваши настройки времени) неверно .

Если вы просто сбросите время в системе Ubuntu, вручную или автоматически , это будет неправильно в Windows, так что это не очень хорошее решение.

Вместо этого лучшее решение, вероятно, состоит в том, чтобы реконфигурировать Ubuntu для обработки аппаратных часов как местного времени (тогда вы можете оставить конфигурацию Windows и аппаратные часы отдельно).

Для этого отредактируйте /etc/default/rcSкак root и убедитесь, что оно имеет UTC=no:

  1. Нажмите Alt+ F2.

  2. Введите gksu gedit /etc/default/rcSи нажмите Enter.

  3. Вы, вероятно, увидите это:

    # assume that the BIOS clock is set to UTC time (recommended)
    UTC=yes
    
    • Если вы это сделаете, измените UTC=yesна UTC=no. (Или, возможно, вы захотите добавить комментарий, изменив его на что-то вроде UTC=no # changed to accommodate Windows system. Все в строке после #символа - это комментарий, и это просто для того, чтобы сделать ваши настройки более удобочитаемыми.)
    • Если нет, поищите любую UTC=строку. Если он не закомментирован (то есть не имеет #в начале), измените его соответствующим образом. Если это закомментировано, раскомментируйте его, удалив ведущий #и убедитесь, что оно говорит UTC=no.
  4. Сохраните файл и выйдите из текстового редактора.

  5. Перезагрузитесь, чтобы изменения вступили в силу, и убедитесь, что время работает правильно в обеих операционных системах.

Источник: https://help.ubuntu.com/community/UbuntuTime#Make_Linux_use_.27Local.27_time

(Но это очень общий вопрос; я написал этот ответ, чтобы применить его конкретно к вашей ситуации, что является довольно распространенной проблемой.)

Элия ​​Каган
источник
Обратите внимание, что это также может произойти при обновлении с одного выпуска Ubuntu до следующего, как это было сделано для меня. Я могу порекомендовать выполнить вышеуказанное исправление, а затем вручную синхронизировать ваши часы, как в этом ответе (настройка его для работы с systemd): askubuntu.com/a/254846/139735
starbeamrainbowlabs
Это должен быть принятый ответ imho. У меня была Windows установлена ​​и работает нормально, затем я установил Ubuntu, и часы перестали работать - я не вижу причины, почему я должен изменить настройки Windows, если это было явное добавление linux, которое нарушило мою конфигурацию.
Przemek D
13

Исправление / etc / rcS не работало на моей установке Win7 / Ubuntu 14.04x64, а также не исправлялось через графический интерфейс часов. Поскольку корень проблемы - время BIOS против времени UTC, а Windows - это проблема, когда дело доходит до использования UTC, я просто выбрал точку на карте, которая использует UTC + 0 (нет изменений между BIOS и временем UTC) ,

Попробуйте изменить свое местоположение на Рейкьявик (столица Исландии). Вуаля! Ваше время Ubuntu изменится, чтобы соответствовать вашему времени BIOS.

OpensourceFool
источник
Ха - ха! Потрясающие. : D Мне действительно все равно, где я. Это было две секунды исправить. Большое спасибо.
Бледно-голубая точка