Hora local do Windows versus Linux?

36

Desde que comecei a usar o Linux no dualboot com o Windows, notei que, quando reinicializei a máquina, a hora do outro sistema operacional estava errada, por exemplo, Era 12:00 no Linux, então eu reiniciei e no Windows eram 18:00, e quando eu chequei o BIOS, o RTC estava configurado para 18:00. Como meu fuso horário é -06: 00 CST, presumo que o Linux apenas define o horário do RTC como UTC e calcula novamente o horário com base no fuso horário, enquanto o Windows apenas define o RTC para a hora local. Ambos usam o mesmo servidor NTP para sincronizar a hora.

A questão é: qual deles está fazendo a coisa certa? Em qual deles devo definir a configuração do fuso horário para UTC para ter a hora certa em ambos?

    
por arielnmz 02.03.2015 / 01:59

5 respostas

13

Nenhum dos dois está errado, mas o uso do UTC é mais correto. O RTC não possui um fuso horário; é apenas um relógio de parede idiota. Se o seu fuso horário local honrar o horário de verão (do qual há muitos sabores e as regras mudam arbitrariamente), então, duas vezes por ano, você precisa alterá-lo. O sistema operacional fará isso por você, mas se o RTC for UTC, o sistema operacional fará a tradução local UTC - > - por que mexer com o relógio? Além disso, durante a transição "fall back" do DST, o RTC não pode informar que horas são! É 1:30 da manhã, CDT ou CST?

Aparentemente, Windows 8 suporta UTC para o RTC . O Windows 7 também fez, mas havia problemas .

Houve um melhor argumento contra isso quando as pessoas definiram seus relógios BIOS manualmente, mas o tempo baseado em servidor é muito mais prevalente agora.

    
por 02.03.2015 / 03:29
65

Recentemente, enfrentei o mesmo problema e foi assim que consertei. Você precisa fazer uma pequena alteração no sistema operacional.

Eu comecei com o Linux primeiro. Execute os seguintes comandos como root.

ntpdate pool.ntp.org

Isso atualizará seu tempo, se não estiver configurado corretamente.

Agora defina o relógio do hardware como UTC com este comando.

hwclock --systohc --utc

Fonte

Agora inicie no Windows e adicione o seguinte registro. Basta simplesmente criar um arquivo .reg usando o código abaixo no Bloco de Notas. Salve e execute.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=dword:00000001

Fonte

A partir da próxima inicialização, ambos os sistemas operacionais mostrarão a hora correta.

    
por 02.03.2015 / 03:30
4

O caso normal é que os sistemas Linux têm o RTC (relógio de tempo real) definido como UTC, e a conversão para a hora local é feita no espaço do usuário com base nos dados de fuso horário e na variável de ambiente TZ . Isso é "menos ruim" porque mantém o sistema RTC aumentando monotonicamente e aplica qualquer mágica de fuso horário mais tarde, garantindo, por exemplo, que nenhum arquivo normalmente tenha um timestamp no futuro (o que pode acontecer facilmente pelo menos uma vez por ano, se O sistema RTC está definido para a hora local). Como Ken apontou , o RTC em si não tem noção de um fuso horário, apenas o tempo.

Como você descobriu, isso causa problemas ao dual-boot com um sistema que normalmente não opera dessa maneira, como a família Microsoft de sistemas operacionais que geralmente esperam que o RTC seja configurado para local Tempo. Sim, o Windows NT (eu acho que vai até o NT 4, na verdade) pode funcionar com o RTC definido para UTC, mas pelo menos a última vez que eu vi que não era realmente uma configuração suportada e lá foram várias advertências.

A solução fácil no seu caso é provavelmente configurar o RTC para a hora local, informar ao seu sistema Linux que o RTC está configurado para a hora local (a mecânica exata de fazer isso varia de acordo com a distribuição e versão de lançamento, mas aparentemente no Ubuntu você define UTC=no em / etc / default / rcS , e então configure os sistemas operacionais de tal forma que somente um deles (de preferência o que você usa mais, já que o tempo mostrado em todos os outros será incorreto duas vezes por ano até que ele seja inicializado e tenha um chance de corrigi-lo) lida com horário de verão muda. E viva com as desvantagens, que devem ser gerenciáveis em um sistema de usuário único.

Você também pode definir o lado do Windows para usar o UTC como um fuso horário e desativar as alterações automáticas do horário de verão no Windows e manter o Linux definido para ter o RTC no UTC e exibir o tempo convertido de acordo com suas práticas. No entanto, isso fará com que o Windows exiba a data e a hora no UTC, o que pode não ser o que você realmente deseja. Não é um grande problema para nós, europeus, que são, no máximo, algo como três horas de folga da UTC, mas pode ser mais um problema nos EUA. Esta provavelmente é uma opção mais realista se você usar o Windows apenas ocasionalmente, e seu sistema operacional principal for o Linux ou algum outro sistema operacional com suporte a RTC-UTC.

    
por 02.03.2015 / 08:47
2

If you dual boot and there are time conflicts between Windows and Ubuntu, this occurs because Ubuntu store the time on the hardware clock as UTC by default while Microsoft Windows stores the time as local time, thus causing conflicting times between Ubuntu and Windows.

Você precisa configurar seu sistema Linux para usar o horário local conforme explicado aqui neste guia para o Ubuntu .

    
por 02.03.2015 / 02:03
0

Eu sou dual boot do Windows 10 e remix os e simplesmente seguindo apenas o guia para o windows funcionou para mim ambas as vezes estão corretas. Eu usei a linha de comando para adicionar seu script também porque era mais fácil

    
por 17.05.2016 / 11:53