O tempo do relógio está desativado na inicialização dupla

303

Sistema de inicialização dupla Windows XP Pro e Ubuntu 12.04.

Eu tenho o BIOS definido para a hora correta e o Ubuntu definido para o horário do Leste dos EUA. O Ubuntu será inicializado e o tempo será encerrado em -4 horas. Se eu corrigir o horário no Ubuntu, quando for inicializado no Windows XP, o horário será desativado em + 4 horas.

Esta é uma nova instalação do 12.04. Eu não tive esse problema antes de reinstalar o Ubuntu.

Bill Walden
fonte

Respostas:

265

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

Conflitos de tempo de vários sistemas de inicialização

Os sistemas operacionais armazenam e recuperam a hora no relógio de hardware localizado na placa-mãe para que ela possa acompanhar a hora, mesmo quando o sistema não tem energia. A maioria dos sistemas operacionais (Linux / Unix / Mac) armazena a hora no relógio do hardware como UTC por padrão, embora alguns sistemas (principalmente o Microsoft Windows) armazenem a hora no relógio do hardware como a hora 'local'. Isso causa problemas em um sistema de inicialização dupla se os dois sistemas visualizarem o relógio do hardware de maneira diferente.

A vantagem de ter o relógio do hardware como UTC é que você não precisa alterar o relógio do hardware ao se mover entre fusos horários ou quando o Horário de Verão (DST) começa ou termina, pois o UTC não possui desvios de horário de verão ou DST.

Alterar o Linux para usar a hora local é mais fácil e mais confiável do que alterar o Windows para usar o UTC; portanto, os sistemas Linux / Windows de inicialização dupla tendem a usar a hora local.

Como Intrepid (8.10), UTC = yes é o padrão.

Faça o Windows usar o UTC

Nota: Este método não era suportado inicialmente no Windows Vista e Server 2008, mas voltou com o Vista SP2, Windows 7, Server 2008 R2 e Windows 8 / 8.1.

Para fazer o MS Windows calcular a hora no relógio do hardware como UTC.

Crie um arquivo chamado WindowsTimeFixUTC.reg com o seguinte conteúdo e clique duas vezes nele para mesclar o conteúdo com o registro:

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

Nota: O serviço de Horário do Windows ainda gravará o horário local no RTC, independentemente da configuração do registro acima no desligamento, por isso é útil desativar o serviço de Horário do Windows com este comando (se a sincronização de horário ainda for necessária enquanto o Windows usar qualquer horário de terceiros solução de sincronização):

sc config w32time start= disabled

Revertendo a alteração
Você pode criar um arquivo com o seguinte conteúdo e clicar duas vezes nele para mesclar as alterações originais, como acima:

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

Se o serviço Horário do Windows estiver desativado, ative-o novamente com o comando:

sc config w32time start= demand

Faça o Linux usar o horário 'local'

Para dizer ao seu sistema Ubuntu que o relógio do hardware está definido para o horário 'local':

Sistemas anteriores ao Ubuntu 15.04 (por exemplo, Ubuntu 14.04 LTS):

  1. editar /etc/default/rcS
  2. adicione ou altere a seção a seguir

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

Sistemas Ubuntu 15.04 e superiores (por exemplo, Ubuntu 16.04 LTS):

  1. abra um terminal e execute o seguinte comando

    timedatectl set-local-rtc 1
    
Eric Carvalho
fonte
53
Oh senhor. Não acredito que eles eram burros o suficiente para usar a hora local em um relógio de hardware. Por que você faria isso?
iono
20
@ duas porque porque não havia muito em rede nos primeiros dias do MS-DOS, e não era comum mover um PC tão longe que moveu fusos horários. (E sim, mesmo considerando essa história, ainda não era a melhor jogada).
Jon Hanna
9
@ Embora eu concorde com você, o relógio de hardware permanece como Universal, uma vez que não mantém as informações do fuso horário, existem alguns problemas com isso: A) O BIOS / UEFI possui vários recursos, como despertadores automáticos / temporizadores, onde você definir horários para esses gatilhos. Seria estranho definir esses horários no UTC - pelo menos para o usuário médio. B) Como Jon disse acima, razões de compatibilidade com versões anteriores.
Shahriyar Imanov
5
No Windows PowerShell, execute este comando para atualizar a propriedade do registro acima mencionada: New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
Anatoly Mironov
6
Para aqueles que examinam o texto, você só precisa alterar as configurações em um dos sistemas operacionais, não em ambos.
Alexander Revo
67

Para definir o relógio do BIOS para a hora local, em vez do UTC, em uma versão baseada em systemd (15.04 e posterior), você precisará usar o timedatectlcomando De acordo com o Arch Wiki :

Você pode definir o padrão da hora do relógio do hardware através da linha de comando. Você pode verificar o que configurou para usar:

$ timedatectl | grep local

O relógio do hardware pode ser consultado e definido com o timedatectl comando Para alterar o padrão da hora do relógio do hardware para a hora local, use:

# timedatectl set-local-rtc 1

Se você deseja reverter para o relógio de hardware que está no UTC, faça:

# timedatectl set-local-rtc 0
muru
fonte
4
No Ubuntu 16.10, ele ajudou a executar o "hwclock --systohc --localtime". Isso grava a "parte local" em / etc / adjtime e, portanto, a torna permanente.
user1050755
1
@ user1050755 é isso antes, depois ou em vez do comando timedatectl?
nasch 16/01/19
36

Seu fuso horário é Eastern , que atualmente é EDT (Horário de verão do leste). O EDT é UTC menos quatro horas, o mesmo que o deslocamento que você está enfrentando.

Quando isso acontece em um sistema de inicialização dupla, geralmente é porque um sistema operacional pensa que o relógio do hardware rastreia a hora local, enquanto o outro sistema operacional pensa que o relógio do hardware rastreia o UTC.

No seu caso, seu relógio de hardware provavelmente está definido para a hora local e:

  • O Windows está configurado para usar a hora local, que (dadas as configurações de hora) está correta .
  • O Ubuntu está configurado para usar o UTC, que (dadas as configurações de horário) está incorreto .

Se você redefinisse a hora no sistema Ubuntu, manual ou automaticamente , ela estaria errada no Windows, então essa não é uma boa solução.

Em vez disso, a melhor solução é provavelmente reconfigurar o Ubuntu para tratar a hora do relógio do hardware como hora local (então você pode deixar a configuração do Windows e a hora do relógio do hardware sozinhas).

Para fazer isso, edite /etc/default/rcScomo root e verifique se ele possui UTC=no:

  1. Pressione Alt+ F2.

  2. Digite gksu gedit /etc/default/rcSe pressione Enter.

  3. Você provavelmente verá isso:

    # assume that the BIOS clock is set to UTC time (recommended)
    UTC=yes
    
    • Se o fizer, mude UTC=yespara UTC=no. (Ou você pode adicionar um comentário também, alterando-o para algo como UTC=no # changed to accommodate Windows system. Tudo em uma linha após um #personagem é um comentário e existe apenas para tornar suas configurações mais legíveis para humanos.)
    • Caso contrário, procure qualquer UTC=linha. Se não estiver comentado (ou seja, não possui um #no início), altere-o de acordo. Se for comentado, remova o comentário removendo a guia #e certifique-se de que diz UTC=no.
  4. Salve o arquivo e feche o editor de texto.

  5. Reinicie para aplicar suas alterações e verifique se o tempo está funcionando corretamente agora nos dois sistemas operacionais.

Fonte: https://help.ubuntu.com/community/UbuntuTime#Make_Linux_use_.27Local.27_time

(Mas isso é muito geral; escrevi esta resposta para aplicar especificamente à sua situação, que é um problema um tanto comum.)

Eliah Kagan
fonte
Observe que isso também pode ocorrer quando você atualiza de uma versão do Ubuntu para a próxima, como aconteceu comigo. Posso recomendar realizar a correção acima, e depois também sincronizar manualmente o seu relógio como neste resposta (ajustando-o para trabalhar com systemd): askubuntu.com/a/254846/139735
starbeamrainbowlabs
Esta deve ser a resposta aceita imho. Eu tinha o Windows instalado e funcionando bem, então instalei o Ubuntu e os relógios deram errado - não vejo uma razão para modificar as configurações do Windows se foi claramente a adição de linux que interrompeu minha configuração.
Przemek D
13

A correção / etc / rcS não funcionou na minha instalação do Win7 / Ubuntu 14.04x64, nem correções na GUI do relógio. Como a raiz do problema é a hora do BIOS e a hora UTC, e o Windows é uma dor de cabeça quando se trata de usar o UTC, escolhi um ponto no mapa que usa UTC + 0 (nenhuma alteração entre a hora da BIOS e a UTC) .

Tente alterar sua localização para Reykjavik (capital da Islândia). Voila! Seu tempo no Ubuntu mudará para coincidir com o tempo do BIOS.

OpensourceFool
fonte
Haha! Impressionante. : DI realmente não se importa com a minha localização. Esta foi a correção de dois segundos. Muito obrigado.
Ponto azul pálido