Portfólio Blog Sobre
Dual boot: sincronizando o relógio entre sistemas
Sistemas Operacionais e Ferramentas

Dual boot: sincronizando o relógio entre sistemas

Tenho Ubuntu e Windows 11 no mesmo computador. E cada vez que eu alternava entre eles, o relógio ficava maluco, atrasado ou adiantado.

Minha saída até aqui era um .bat que ressincronizava a hora pela rede a cada inicialização. Essa gambiarra resolve o problema, porém com atraso até conectar a internet pra buscar o servidor NTP.

Pesquisando sobre o assunto encontrei a correção definitiva: uma chave no registro do Windows. Antes de mexer nela, confirmei o lado do Ubuntu.

Conceitos fundamentais

ConceitoO que é
RTC (Real Time Clock, relógio de tempo real)O relógio da placa-mãe, alimentado por uma bateria própria. Continua contando com o computador desligado e fora da tomada
UTC (Coordinated Universal Time, tempo universal coordenado)A referência de hora usada no mundo todo, sem fuso e sem horário de verão
fuso horárioO deslocamento aplicado sobre o UTC para chegar na hora do lugar onde você está. São Paulo fica três horas atrás
NTP (Network Time Protocol, protocolo de hora em rede)O protocolo que acerta o relógio do sistema consultando servidores de hora pela internet
NTP.brO serviço público de hora legal brasileira, operado pelo NIC.br, com relógios sincronizados por GPS
stratumA distância até a fonte de hora. Stratum 1 é o servidor ligado direto ao relógio de referência, stratum 2 é quem consulta um stratum 1, e assim por diante
dual bootDois sistemas operacionais instalados no mesmo computador, com a escolha feita na inicialização
registro do WindowsO banco de configurações do Windows, organizado em chaves e valores. Editável pelo regedit ou pelo comando reg
RealTimeIsUniversalA chave do registro que faz o Windows tratar o RTC como UTC
timedatectlO comando do Ubuntu que mostra e configura hora, fuso e sincronização

Por que a divergência entre horários?

Os dois sistemas leem o mesmo RTC e discordam.

  • O Ubuntu trata o RTC como UTC. Com 15:50 em São Paulo, ele grava 18:50 e aplica o fuso na hora de mostrar na tela.
  • O Windows, na configuração padrão, trata o RTC como hora local. Com 15:50 em São Paulo, ele grava 15:50.

O Sistema Operacional que inicia depois lê esse número pela própria convenção, e erra pelo tamanho do fuso. Em seguida cada um se acerta pela rede e regrava o RTC do seu jeito, deixando o outro errado no próximo boot.

Passo 1: confirmar o Ubuntu

O Ubuntu já mantém o RTC em UTC por padrão, então aqui o trabalho é conferir.

Conferindo a saída do timedatectl…

O comando é o timedatectl, sem argumento:

timedatectl
               Local time: sáb 2026-07-25 15:50:18 -03
           Universal time: sáb 2026-07-25 18:50:18 UTC
                 RTC time: sáb 2026-07-25 18:50:18
                Time zone: America/Sao_Paulo (-03, -0300)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Analisando a saída do comando:

LinhaO que precisa aparecer
RTC in local TZno, indicando que o RTC está sendo tratado como UTC
RTC timeIgual ao Universal time, e não ao Local time
NTP serviceactive, com o relógio se acertando pela rede

Com o NTP service inativo, ligue a sincronização:

sudo timedatectl set-ntp true

Com o RTC in local TZ em yes, alguém já mudou essa máquina. Para voltar ao padrão:

sudo timedatectl set-local-rtc 0 --adjust-system-clock

Passo 2: ajustar o Windows

Com o Ubuntu confirmado em UTC, falta fazer o Windows adotar a mesma convenção.

Aplicando a chave no registro…

Abra o Prompt de Comando como administrador e rode:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f

A partir daí o Windows lê e grava o RTC em UTC, igual ao Ubuntu. Falta garantir que o serviço de hora suba junto com o sistema e acerte o relógio na primeira oportunidade:

:: o espaço depois de "start=" faz parte da sintaxe do sc
sc config w32time start= auto
net start w32time
w32tm /resync /rediscover

Reinicie e entre nos dois sistemas para ver o resultado.

NOTE

O relógio da BIOS/UEFI passa a mostrar UTC, três horas à frente do relógio de parede aqui. É o comportamento esperado quando os dois sistemas usam a mesma convenção.

TIP

A Microsoft não lista RealTimeIsUniversal na documentação do serviço de hora, embora a chave apareça na documentação da comunidade Ubuntu para dual boot e funcione no Windows 11 de 64 bits. Programas antigos que leem o RTC direto, sem passar pelo sistema, podem mostrar a hora em UTC.

Conferindo o resultado

Depois de passar pelos dois sistemas, cada lado responde se o acerto pegou.

Conferindo no Ubuntu…

O timedatectl responde de novo. Como aqui interessam quatro linhas da saída, dá para filtrar:

timedatectl | grep -E "Universal time|RTC time|RTC in local TZ|System clock synchronized"
           Universal time: sáb 2026-07-25 19:12:00 UTC
                 RTC time: sáb 2026-07-25 19:12:00
System clock synchronized: yes
          RTC in local TZ: no

O RTC time continua igual ao Universal time depois de você ter passado pelo Windows. Essa é a prova de que o outro sistema parou de regravar o RTC em hora local.

Conferindo no Windows…

Abra o Prompt de Comando e rode as duas consultas. A do registro precisa devolver 0x1, e o w32tm mostra a última sincronização bem-sucedida com a fonte de hora em uso:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal
w32tm /query /status

O caminho inverso

Dá para resolver pelo outro lado, deixando o Ubuntu tratar o RTC como hora local:

sudo timedatectl set-local-rtc 1 --adjust-system-clock

O manual do timedatectl desaconselha. Em tradução livre:

Manter o RTC no fuso local não tem suporte completo e cria vários problemas com mudanças de fuso e ajustes de horário de verão. Se possível, mantenha o RTC em modo UTC.

Hora local não carrega informação de fuso. Na virada do horário de verão para trás, a mesma hora acontece duas vezes, e o número gravado no RTC não diz qual das duas ele representa. Por isso o ajuste aqui ficou do lado do Windows.

Dica extra: sincronizar com o NTP.br

Com os dois sistemas concordando sobre o RTC, dá para melhorar de onde vem a hora. O Ubuntu consulta ntp.ubuntu.com por padrão e o Windows consulta time.windows.com, os dois fora do Brasil. O NIC.br mantém o NTP.br, que distribui a hora legal brasileira a partir de relógios sincronizados por GPS.

Apontando o Ubuntu para o pool.ntp.br…

A sincronização no Ubuntu 24.04 é feita pelo systemd-timesyncd, configurado num arquivo só:

sudo nano /etc/systemd/timesyncd.conf

Deixe a seção [Time] assim, com o servidor da distribuição como reserva:

[Time]
NTP=pool.ntp.br
FallbackNTP=ntp.ubuntu.com

Reinicie o serviço e confira de onde veio a hora:

sudo systemctl restart systemd-timesyncd
timedatectl timesync-status
       Server: 200.160.7.193 (pool.ntp.br)
Poll interval: 34min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 1
    Reference: GPS
    Precision: 1us (-26)
Root distance: 37us (max: 5s)

Stratum: 1 com Reference: GPS indica que o servidor consultado recebe a hora direto de um receptor GPS, sem intermediário.

Apontando o Windows para o pool.ntp.br…

O NTP.br recomenda o próprio serviço de hora do Windows, sem instalar cliente de terceiro. No Prompt de Comando como administrador:

:: 0x8 marca a fonte como cliente; syncfromflags:manual usa a lista definida acima
w32tm /config /manualpeerlist:"pool.ntp.br,0x8" /syncfromflags:manual /update
net stop w32time
net start w32time
w32tm /resync /rediscover

O w32tm /query /source fecha a conferência, respondendo com o servidor em uso:

w32tm /query /source

Só digo uma coisa: esse artigo veio na hora certa! 😄

Referências

Ver todos os artigos →