¿Hora local de Windows vs Linux?

40

Desde que comencé a usar Linux en el arranque dual con Windows, noté que cuando reiniciaba la máquina, la hora en el otro sistema operativo era incorrecta, por ejemplo, eran las 12:00 en Linux, luego reiniciaba y en Windows eran las 18:00, y Cuando revisé el BIOS, el RTC se configuró a las 18:00. Dado que mi zona horaria es -06: 00 CST, supongo que Linux solo establece la hora del RTC en UTC y vuelve a calcular la hora en función de la zona horaria, mientras que Windows simplemente establece el RTC en la hora local. Ambos usan el mismo servidor NTP para sincronizar la hora.

La pregunta es, ¿cuál está haciendo lo correcto? ¿En cuál debo configurar la zona horaria en UTC para tener la hora correcta en ambos?

arielnmz
fuente
pregunta secundaria: ¿por qué no sucedió esto con versiones anteriores de Windows y Linux?
golimar

Respuestas:

16

Ninguno de los dos está mal, pero usar UTC es más correcto. El RTC no tiene una zona horaria; Es solo un tonto reloj de pared. Si su zona horaria local respeta el horario de verano (de los cuales hay muchos sabores, y las reglas cambian arbitrariamente), entonces dos veces al año, debe cambiarlo. El sistema operativo lo hará por usted, pero si el RTC es UTC, el sistema operativo hace la traducción UTC-> local de todos modos, ¿por qué jugar con el reloj? Además, durante la transición "retroceso" del horario de verano, ¡el RTC no puede decirle qué hora es! ¿Son las 1:30 am CDT o CST?

Aparentemente, Windows 8 admite UTC para el RTC. Windows 7 también lo hizo, pero hubo problemas .

Hubo un mejor argumento en contra de esto cuando las personas configuraron sus relojes BIOS manualmente, pero el tiempo basado en el servidor es mucho más frecuente ahora.

Conocer
fuente
68

Recientemente me enfrenté al mismo problema y así es como lo solucioné. Necesitas hacer un pequeño cambio en ambos SO.

Empecé con Linux primero. Ejecute los siguientes comandos como root.

ntpdate pool.ntp.org

Esto actualizará su tiempo si no está configurado correctamente.

Ahora configure el reloj de hardware en UTC con este comando.

hwclock --systohc --utc

Fuente

Ahora inicie en Windows y agregue el siguiente registro. Simplemente cree un archivo .reg usando el código a continuación en el Bloc de notas. Guárdalo y ejecútalo.

Windows Registry Editor Version 5.00

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

Fuente

A partir del próximo arranque, ambos SO le mostrarán la hora correcta.

Ayan
fuente
66
¡La mejor respuesta documentada con instrucciones concretas! +1.
agtoever
1
Debe incluir a qué ediciones de Windows se aplica la modificación del registro.
Tanath
2
¿Cuándo ganó Windows la capacidad de comprender un reloj del sistema que mantiene una hora distinta a la local?
Mark
1
Este ajuste de registro funciona para Windows XP / Vista / 7/8 / 8.1. @Tanath
Ayan
3
@ Mark en Windows XP.
Michael Hampton
4

El caso normal es que los sistemas Linux tienen el RTC (reloj en tiempo real) establecido en UTC, y la conversión a la hora local se realiza en el espacio del usuario en función de los datos de la zona horaria y la TZvariable de entorno. Esto es "menos malo" porque mantiene el RTC del sistema aumentando monotónicamente y aplica cualquier magia de zona horaria más tarde, asegurando, por ejemplo, que normalmente ningún archivo tendrá una marca de tiempo en el futuro (lo que puede suceder fácilmente al menos una vez al año, si el el sistema RTC está configurado a la hora local). Como señaló Ken , el RTC en sí no tiene un concepto de zona horaria, solo el tiempo.

Como descubrió, esto causa problemas cuando el arranque dual con un sistema que normalmente no funciona de esa manera, como la familia de sistemas operativos de Microsoft que generalmente espera que el RTC esté configurado en la hora local . Sí, Windows NT (creo que volver a NT 4, en realidad) puede funcionar con el RTC configurado en UTC, pero al menos al final, parecía que no era realmente una configuración compatible y había una serie de advertencias.

La solución fácil en su caso es probablemente configurar el RTC a la hora local, decirle a su sistema Linux que el RTC está configurado a la hora local (la mecánica exacta de hacer esto varía según la distribución y la versión de lanzamiento, pero aparentemente en Ubuntu se configura UTC=noen / etc / default / rcS ), y luego configure los sistemas operativos de modo que solo uno de ellos (preferiblemente el que más usa, ya que la hora que se muestra en todos los demás será incorrecta dos veces al año hasta que se haya iniciado y haya tenido la oportunidad para corregirlo) maneja los cambios de horario de verano . Y viva con las desventajas, que deberían ser manejables en un sistema de usuario único.

También puede configurar el lado de Windows para usar UTC como zona horaria y desactivar los cambios automáticos de horario de verano en Windows, y mantener Linux configurado para tener el RTC en UTC y mostrar la hora convertida de acuerdo con sus prácticas. Sin embargo, esto hará que Windows muestre la fecha y la hora en UTC, lo que podría no ser lo que realmente desea. No es un gran problema para nosotros, los europeos, que a lo sumo estamos a unas tres horas de UTC, pero podría ser un problema mayor en los Estados Unidos. Esta es probablemente una opción más realista si solo usa Windows ocasionalmente, y su sistema operativo principal es Linux u otro sistema operativo compatible con RTC-UTC.

un CVn
fuente
¿Tiene alguna información sobre "no era realmente una configuración compatible y hubo una serie de advertencias"?
Random832
@ Random832 Déjame ver si puedo encontrar eso. Sé que lo he visto antes, pero ahora parece que no puedo encontrarlo con una búsqueda rápida en Google al menos.
un CVn
2

Si realiza un arranque dual y hay conflictos de tiempo entre Windows y Ubuntu, esto ocurre porque Ubuntu almacena la hora en el reloj de hardware como UTC de forma predeterminada, mientras que Microsoft Windows almacena la hora como hora local, lo que provoca tiempos conflictivos entre Ubuntu y Windows.

Debe configurar su sistema Linux para usar la hora local como se explica aquí en esta guía para Ubuntu .

JakeGould
fuente
ESTÁ usando la hora local, y soy consciente de que realmente almacena la hora como UTC (si al menos lee la pregunta), y sé qué puedo hacer para solucionar esto, la pregunta es cuál realmente hace lo correcto para cambia el otro en su lugar.
arielnmz
De manera predeterminada, Windows usa tiempo local, Mac OS usa UTC y los sistemas operativos tipo UNIX varían. Un sistema operativo que usa el estándar UTC, en general, considerará la hora CMOS (reloj de hardware) como la hora UTC (GMT, hora de Greenwich) y realizará un ajuste al configurar la hora del sistema en el arranque de acuerdo con su zona horaria.
Una vez más, soy consciente de eso, solo quiero saber qué sistema operativo lo hace bien para poder, por ejemplo, configurar la zona horaria de Windows en UTC y solucionar esto, o simplemente al revés.
arielnmz
@MagomedSegaIsmailov ¿Mac OS se ejecuta en sistemas que usan BIOS RTC? Asumí que EFI proporcionó algo de cordura.
Random832
0

Estoy iniciando dual Windows 10 y remix os y simplemente siguiendo solo la guía para Windows me ha funcionado las dos veces son correctas. Utilicé la línea de comando para agregarle script también porque era más fácil

Edwin Correa
fuente
Por favor no agregue "gracias" como respuestas. Invierta algo de tiempo en el sitio y obtendrá los privilegios suficientes para votar las respuestas que le gusten, que es la forma de Súper Usuario de decir gracias.
DavidPostill