Se você faz Dual Boot do Windows e Ubuntu ou qualquer outra distribuição do Linux, talvez tenha notado uma diferença de horário entre os dois sistemas operacionais.
Quando você usa o Linux, mostra o tempo correto. Mas quando você inicializa no Windows, mostra a hora errada. Às vezes, é o oposto e o Linux mostra a hora errada e o Windows tem o horário correto.
Isso é estranho especialmente porque você está conectado à Internet e sua data e hora é definida para ser usada automaticamente.
Não se preocupe! Você não é o único a enfrentar esse problema. Você pode consertá-lo usando o seguinte comando no terminal Linux:
timedatectl set-local-rtc 1
Mais uma vez, não se preocupe. Vou explicar em detalhes como o comando acima corrige o problema de tempo errado no Windows após a inicialização dupla. Mas antes disso, deixe-me dizer por que você encontra uma diferença de tempo em uma configuração de inicialização dupla.
Por que o Windows e o Linux mostram tempo diferente na inicialização dupla (Dual Boot)?
Um computador tem dois relógios principais: um relógio de sistema e um relógio de hardware.
Um relógio de hardware que também é chamado de RTC (Relógio de tempo real) ou CMOS/BIOS. Este relógio está fora do sistema operacional, na placa-mãe do seu computador. Continua em execução mesmo depois que seu sistema é desligado.
O relógio do sistema é o que você vê dentro do seu sistema operacional.
Quando o seu computador estiver ligado, o relógio de hardware é lido e usado para definir o relógio do sistema. Depois, o relógio do sistema é usado para o tempo de acompanhamento. Se o seu sistema operacional fizer alguma alteração no relógio do sistema, como alterar o fuso horário, etc, ele tenta sincronizar essas informações para o relógio de hardware.
Por padrão, o Linux pressupõe que o tempo armazenado no relógio de hardware está em UTC, não na hora local. Por outro lado, o Windows acha que o tempo armazenado no relógio de hardware é hora local. É aí que o problema começa.
Deixe-me explicar com exemplos.
Você vê que estou no fuso horário de Kolkata, que é UTC + 5: 30. Depois de instalar, quando eu definir o fuso horário no Ubuntu para o fuso horário de Kolkata, o Ubuntu sincroniza esta informação para o relógio de hardware, mas com um deslocamento de 5:30 porque o relógio de hardware (RTC) tem que estar em UTC para Linux.
Vamos dizer que a hora atual em Kolkata Timezone é 15:00, o que significa que o tempo UTC é 09:30.
Agora, quando desligo o sistema e inicializo no Windows, o relógio de hardware tem o tempo UTC (09:30 neste exemplo). Mas o Windows acha que o relógio de hardware armazenou a hora local. E, portanto, altera o relógio do sistema (que deveria ter mostrado 15:00) para usar o tempo UTC (09:30) como a hora local. E, portanto, o Windows mostra 09:30 como o tempo que é 5:30 horas atrás do tempo real (15:00 neste exemplo).
Mais uma vez, se eu definir o tempo correto no Windows alternando os botões de fuso horário automático e tempo, você sabe o que vai acontecer? Agora, ele mostrará o horário correto no sistema (15:00) e sincronizará essas informações (aviso para a opção "Sincronizar seu relógio" na imagem) para o relógio de hardware.
Se você inicializar no Linux, ele lê a hora do relógio de hardware que está na hora local (15:00), mas como o Linux acredita que é o tempo UTC, adiciona um deslocamento de 5:30 ao relógio do sistema. Agora Linux mostra um tempo de 20:30, que é 5:30 horas antes do tempo real.
Agora que você entende a causa raiz dos problemas de diferença de tempo na inicialização dupla, é hora de ver como corrigir o problema.
Corrigindo o Windows mostrando o tempo errado em uma configuração de inicialização dupla com o Linux
Existem duas maneiras de resolver essa questão:
- Fazer o Windows usar o tempo UTC para o relógio de hardware
- Fazer o Linux usar o horário local para o relógio de hardware
É mais fácil fazer as mudanças no Linux e, portanto, eu recomendo ir com o segundo método.
Ubuntu e a maioria das outras distribuições do Linux usam Systemd nos dias de hoje e, portanto, você pode usar o comando timedatectl
para alterar as configurações.
O que você está fazendo é informar o seu sistema Linux para usar a hora local para o relógio de hardware (RTC). Você faz isso com a opção set-local-rtc
(Hora local definida para RTC):
timedatectl set-local-rtc 1
Como você pode notar na imagem abaixo, o RTC agora usa a hora local.
Agora, se você inicializar no Windows, é necessário que o relógio de hardware seja como hora local, que é realmente correto dessa vez. Quando você inicializa no Linux, seu sistema Linux sabe que o relógio de hardware está usando o horário local, não UTC. E, portanto, não tenta adicionar o desativado desta vez.
Isso corrige a questão da diferença de tempo entre o Linux e o Windows em Dual Boot.
Você vê um aviso sobre não usar a hora local para o RTC. Para configurações de desktop, não deve causar nenhum problema. Pelo menos, não consigo pensar em um.
Espero deixar as coisas claras para você. Se você ainda tiver dúvidas, por favor, deixe um comentário abaixo.