La hora del reloj está apagada en el arranque dual

303

Sistema de arranque dual Windows XP Pro y Ubuntu 12.04.

Tengo el BIOS configurado para la hora correcta y Ubuntu configurado para la hora del este de EE. UU. Ubuntu arrancará y el tiempo estará apagado por -4 horas. Si corrijo el tiempo en Ubuntu, cuando arranque en Windows XP, el tiempo se desactivará en + 4 horas.

Esta es una nueva instalación de 12.04. No tuve este problema antes de reinstalar Ubuntu.

Bill Walden
fuente

Respuestas:

265

https://help.ubuntu.com/community/UbuntuTime#Multiple_Boot_Systems_Time_Conflicts

Conflictos de tiempo de múltiples sistemas de arranque

Los sistemas operativos almacenan y recuperan la hora en el reloj de hardware ubicado en su placa base para que pueda realizar un seguimiento de la hora incluso cuando el sistema no tiene energía. La mayoría de los sistemas operativos (Linux / Unix / Mac) almacenan la hora en el reloj de hardware como UTC por defecto, aunque algunos sistemas (especialmente Microsoft Windows) almacenan la hora en el reloj de hardware como la hora 'local'. Esto causa problemas en un sistema de arranque dual si ambos sistemas ven el reloj del hardware de manera diferente.

La ventaja de tener el reloj de hardware como UTC es que no necesita cambiar el reloj de hardware cuando se mueve entre zonas horarias o cuando comienza o finaliza el horario de verano (DST), ya que UTC no tiene compensación de horario de verano ni horario de verano.

Cambiar Linux para usar la hora local es más fácil y más confiable que cambiar Windows para usar UTC, por lo que los sistemas Linux / Windows de arranque dual tienden a usar la hora local.

Desde Intrepid (8.10), UTC = yes es el valor predeterminado.

Hacer que Windows use UTC

Nota: Este método no fue inicialmente compatible con Windows Vista y Server 2008, pero regresó con Vista SP2, Windows 7, Server 2008 R2 y Windows 8 / 8.1.

Para hacer que MS Windows calcule el tiempo del reloj de hardware como UTC.

Cree un archivo llamado WindowsTimeFixUTC.reg con los siguientes contenidos y luego haga doble clic en él para fusionar los contenidos con el registro:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=dword:00000001

Nota: El servicio de hora de Windows todavía escribirá la hora local en el RTC independientemente de la configuración de registro anterior al apagar, por lo que es útil deshabilitar el servicio de hora de Windows con este comando (si la sincronización de tiempo aún es necesaria mientras que en Windows use cualquier hora de terceros solución de sincronización):

sc config w32time start= disabled

Invertir el cambio
Puede crear un archivo con los siguientes contenidos y luego hacer doble clic para fusionar los cambios originales, como se indica arriba:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
     "RealTimeIsUniversal"=-

Si el servicio de hora de Windows estaba deshabilitado, habilítelo nuevamente con el comando:

sc config w32time start= demand

Hacer que Linux use la hora 'local'

Para decirle a su sistema Ubuntu que el reloj de hardware está configurado a la hora 'local':

Sistemas anteriores a Ubuntu 15.04 (por ejemplo, Ubuntu 14.04 LTS):

  1. editar /etc/default/rcS
  2. agregar o cambiar la siguiente sección

    # Set UTC=yes if your hardware clock is set to UTC (GMT)
    UTC=no
    

Sistemas Ubuntu 15.04 y superiores (por ejemplo, Ubuntu 16.04 LTS):

  1. abre una terminal y ejecuta el siguiente comando

    timedatectl set-local-rtc 1
    
Eric Carvalho
fuente
53
Oh Señor. No puedo creer que fueran lo suficientemente tontos como para usar la hora local en un reloj de hardware. ¿Por qué alguna vez harías eso?
iono
20
@twome porque dado que no había mucho en el camino de las redes en los primeros días de MS-DOS, y no habría sido común mover una PC tan lejos que movió las zonas horarias. (Y sí, incluso teniendo en cuenta esa historia, todavía no fue la mejor jugada).
Jon Hanna
99
@twome, aunque estoy de acuerdo con que el reloj de hardware permanezca como Universal, ya que no guarda la información de la zona horaria, hay algunos problemas con eso: A) BIOS / UEFI tiene varias características, como temporizadores de activación / suspensión automática, donde usted establecer tiempos para esos desencadenantes. Sería extraño establecer esos horarios en UTC, al menos para el usuario promedio. B) Como dijo Jon anteriormente, razones de compatibilidad con versiones anteriores.
Shahriyar Imanov
55
En Windows PowerShell, ejecute este comando para actualizar la propiedad de registro mencionada anteriormente: New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
Anatoly Mironov
66
Para aquellos que hojean el texto, solo tienen que cambiar la configuración en uno de los sistemas operativos, no en ambos.
Alexander Revo
67

Para configurar el reloj del BIOS a la hora local en lugar de UTC en una versión basada en systemd (15.04 y superior), deberá usar el timedatectlcomando. De acuerdo con Arch Wiki :

Puede establecer la hora estándar del reloj de hardware a través de la línea de comando. Puede verificar lo que ha configurado para usar:

$ timedatectl | grep local

El reloj de hardware se puede consultar y configurar con el timedatectl comando. Para cambiar el estándar de tiempo de reloj de hardware a tiempo local, use:

# timedatectl set-local-rtc 1

Si desea volver al reloj de hardware que está en UTC, haga lo siguiente:

# timedatectl set-local-rtc 0
muru
fuente
44
En Ubuntu 16.10 ayudó a hacer "hwclock --systohc --localtime". Esto escribe la "parte local" en / etc / adjtime y, por lo tanto, la hace permanente.
user1050755
1
@ user1050755 ¿es eso antes, después o en lugar del comando timedatectl?
Nasch
36

Su zona horaria es oriental , que actualmente es EDT (hora de verano del este). EDT es UTC menos cuatro horas, lo mismo que el desplazamiento que está experimentando.

Cuando esto sucede en un sistema de arranque dual, generalmente se debe a que un sistema operativo piensa que el reloj de hardware rastrea la hora local, mientras que el otro sistema operativo piensa que el reloj de hardware rastrea UTC.

En su caso, su reloj de hardware probablemente esté configurado a la hora local y:

  • Windows está configurado para usar la hora local, que (dada la configuración de su hora) es correcta .
  • Ubuntu está configurado para usar UTC, que (dada su configuración de tiempo) es incorrecto .

Si solo restableciera la hora en el sistema Ubuntu, ya sea manual o automáticamente , entonces sería incorrecto en Windows, por lo que no es una buena solución.

En cambio, la mejor solución es probablemente reconfigurar Ubuntu para tratar la hora del reloj del hardware como la hora local (luego puede dejar la configuración de Windows y la hora del reloj del hardware, solo).

Para hacer esto, edite /etc/default/rcScomo root y asegúrese de que tenga UTC=no:

  1. Presione Alt+ F2.

  2. Escribe gksu gedit /etc/default/rcSy presiona Enter.

  3. Probablemente verás esto:

    # assume that the BIOS clock is set to UTC time (recommended)
    UTC=yes
    
    • Si lo haces, cambia UTC=yesa UTC=no. (O puede que también desee agregar un comentario, cambiándolo a algo así UTC=no # changed to accommodate Windows system. Todo en una línea después de un #personaje es un comentario, y está ahí solo para que su configuración sea más legible para los humanos).
    • Si no lo hace, busque cualquier UTC=línea. Si no está comentado (es decir, no tiene un #al principio), cámbielo en consecuencia. Si está comentado, descomente quitando el encabezado #y asegúrese de que diga UTC=no.
  4. Guarde el archivo y salga del editor de texto.

  5. Reinicie para aplicar sus cambios y verifique que el tiempo esté funcionando correctamente ahora en ambos sistemas operativos.

Fuente: https://help.ubuntu.com/community/UbuntuTime#Make_Linux_use_.27Local.27_time

(Pero eso es muy general; he escrito esta respuesta para aplicarla específicamente a su situación, que es un problema algo común).

Eliah Kagan
fuente
Tenga en cuenta que esto también puede ocurrir cuando actualiza de una versión de Ubuntu a la siguiente, como sucedió conmigo. Puedo recomendar realizar la corrección anterior, y luego también sincronizar manualmente su reloj como en esta respuesta (ajustándolo para que funcione con systemd): askubuntu.com/a/254846/139735
starbeamrainbowlabs
Esta debería ser la respuesta aceptada en mi humilde opinión. Tenía Windows instalado y funcionando bien, luego instalé Ubuntu y los relojes se volvieron locos: no puedo ver una razón por la que debería modificar la configuración de Windows si fue claramente la adición de Linux lo que rompió mi configuración.
Przemek D
13

La corrección / etc / rcS no funcionó en mi instalación de Win7 / Ubuntu 14.04x64, ni ninguna corrección a través de la GUI del reloj. Debido a que la raíz del problema es la hora del BIOS frente a la hora UTC, y Windows es un fastidio cuando se trata de usar UTC, acabo de elegir un punto en el mapa que usa UTC + 0 (sin cambios entre la hora BIOS y UTC) .

Intente cambiar su ubicación a Reykjavik (la capital de Islandia). Voila! Su hora de Ubuntu cambiará para coincidir con la hora de su BIOS.

OpensourceFool
fuente
¡Jaja! Increíble. : DI realmente no me importa mi ubicación. Esto fue dos segundos fijo. Muchas gracias.
Pale Blue Dot