Hora local do Windows x Linux?

40

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

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

arielnmz
fonte
questão secundária: por que isso não aconteceu com versões mais antigas do Windows e Linux?
golimar 14/03

Respostas:

16

Nenhum dos dois está errado, mas usar o UTC é mais correto. O RTC não tem um fuso horário; é apenas um relógio de parede idiota. Se o seu fuso horário local respeitar o horário de verão (dos quais existem muitos tipos e regras mudar arbitrariamente), duas vezes por ano, você deverá alterá-lo. O sistema operacional fará isso por você, mas se o RTC for UTC, o sistema operacional fará a tradução local UTC-> de qualquer maneira - por que mexer no relógio? Além disso, durante a transição de "retorno" do horário de verão, o RTC não pode dizer a que horas são! São 01:30 CDT ou CST?

Aparentemente, o Windows 8 oferece suporte ao UTC para o RTC. O Windows 7 também funcionou, mas houve problemas .

Havia um argumento melhor contra isso quando as pessoas definiam seus relógios do BIOS manualmente, mas o tempo com base no servidor é muito mais prevalente agora.

Ken
fonte
68

Recentemente, enfrentei o mesmo problema e foi assim que o corrigi. Você precisa fazer uma pequena alteração nos dois sistemas operacionais.

Comecei com o Linux primeiro. Execute estes comandos a seguir como root.

ntpdate pool.ntp.org

Isso atualizará seu horário se não estiver definido corretamente.

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

hwclock --systohc --utc

Fonte

Agora inicialize no Windows e adicione o seguinte registro. Basta 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.

Ayan
fonte
6
Melhor resposta documentada com instruções concretas! +1.
agtoever
11
Deve incluir em quais edições do Windows o ajuste do registro se aplica.
Tanath
2
Quando o Windows conseguiu entender um relógio do sistema que mantém um horário diferente do local?
Mark
11
Este ajuste do registro funciona no Windows XP / Vista / 7/8 / 8.1. @Tanath
Ayan
3
@ Mark No Windows XP.
Michael Hampton
4

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

Como você descobriu, isso causa problemas durante a inicialização dupla com um sistema que normalmente não funciona dessa maneira, como a família de sistemas operacionais Microsoft que geralmente espera que o RTC seja definido no horário local . Sim, o Windows NT (acho que voltando ao NT 4, na verdade) pode funcionar com o RTC definido como UTC, mas pelo menos eu parecia que não era realmente uma configuração suportada e havia várias advertências.

A solução mais fácil no seu caso é provavelmente definir o RTC para a hora local, informe ao sistema Linux que o RTC está definido para a hora local (a mecânica exata de fazer isso varia de acordo com a distribuição e a versão do lançamento, mas aparentemente no Ubuntu você define UTC=no/ etc / default / rcS ) e, em seguida, configure os sistemas operacionais de modo que apenas um deles (de preferência o que você mais usa, pois o tempo exibido em todos os outros ficará incorreto duas vezes por ano até que seja inicializado e tenha uma chance para corrigi-lo) lida com as alterações do horário de verão . E convide com as desvantagens, que devem ser gerenciadas em um sistema de usuário único.

Você também pode configurar 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 configurado para ter o RTC no UTC e exibir o horário 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 os europeus, que estão no máximo a três horas de folga da UTC, mas podem ser mais um problema nos EUA. Essa é provavelmente uma opção mais realista se você usar o Windows apenas ocasionalmente, e seu sistema operacional principal for Linux ou outro sistema operacional compatível com RTC-UTC.

um CVn
fonte
Você tem alguma informação sobre "não era realmente uma configuração suportada e havia várias advertências"?
usar o seguinte comando
@ Random832 Deixe-me ver se consigo encontrar isso. Eu sei que já vi isso antes, mas agora não consigo encontrá-lo com uma rápida pesquisa no Google, pelo menos.
um CVn 03/03
2

Se você inicializar duas vezes e houver conflitos de horário entre o Windows e o Ubuntu, isso ocorre porque o Ubuntu armazena a hora no relógio do hardware como UTC por padrão, enquanto o Microsoft Windows armazena a hora como hora local, causando horários conflitantes entre o Ubuntu e o Windows.

Você precisa configurar seu sistema Linux para usar a hora local, conforme explicado aqui neste guia do Ubuntu .

JakeGould
fonte
Está usando a hora local, e sei que, de fato, armazena a hora como UTC (se pelo menos você leu a pergunta), e sei o que posso fazer para corrigir isso. A questão é: quem realmente faz a coisa certa? mude o outro.
Arielnmz 02/03
Por padrão, o Windows usa a hora local, o Mac OS usa o UTC e os sistemas operacionais semelhantes ao UNIX variam. Geralmente, um sistema operacional que usa o padrão UTC considera a hora do CMOS (relógio de hardware) como a hora UTC (GMT, hora de Greenwich) e faz um ajuste ao definir a hora do sistema na inicialização, de acordo com o seu fuso horário.
Novamente, estou ciente disso, só quero saber qual sistema operacional faz o certo para que, por exemplo, defina o fuso horário do Windows como UTC e corrija isso ou o contrário.
Arielnmz 02/03/2015
@MagomedSegaIsmailov O Mac OS roda em qualquer sistema que utilize o BIOS RTC? Eu teria assumido que a EFI forneceu alguma sanidade.
usar o seguinte código
0

Estou inicializando duas janelas do Windows 10 e remix OS e simplesmente seguindo apenas o guia do Windows funcionou para mim, ambas as vezes estão corretas. Eu usei a linha de comando para adicionar script também, pois era mais fácil

Edwin Correa
fonte
Por favor, não adicione "obrigado" como respostas. Invista algum tempo no site e você obterá privilégios suficientes para votar de imediato as respostas que desejar, que é a maneira do Superusuário de dizer obrigado.
DavidPostill