Ora locale Windows vs Linux?


40

Da quando ho iniziato a utilizzare Linux in dualboot con Windows ho notato che quando ho riavviato la macchina, l'ora sull'altro sistema operativo era sbagliata, ad esempio erano le 12:00 su Linux, quindi ho riavviato e su Windows erano le 18:00, e quando ho controllato il BIOS, l'RTC era impostato alle 18:00. Dato che il mio fuso orario è -06: 00 CST, suppongo che Linux imposti l'ora dell'RTC su UTC e ricalcoli l'ora in base al fuso orario, mentre Windows imposta l'RTC sull'ora locale. Entrambi utilizzano lo stesso server NTP per sincronizzare l'ora.

La domanda è: quale sta facendo la cosa giusta? Su quale dovrei impostare il fuso orario su UTC per avere il tempo giusto su entrambi?



domanda secondaria: perché non è successo con le versioni precedenti di Windows e Linux?
Golimar,

Risposte:


16

Nessuno dei due è sbagliato, ma usare UTC è più giusto. RTC non ha un fuso orario; è solo un muto orologio da parete. Se il tuo fuso orario locale rispetta l'ora legale (di cui esistono molti tipi e le regole cambiano arbitrariamente), quindi due volte all'anno, devi andare e cambiarlo. Il sistema operativo lo farà per te, ma se l'RTC è UTC, il sistema operativo esegue comunque la traduzione UTC-> locale - perché giocherellare con l'orologio? Inoltre, durante la transizione "fallback" dell'ora legale, l'RTC non può dirti che ore sono! Sono le 1:30 am CDT o CST?

Apparentemente, Windows 8 supporta UTC per RTC. Anche Windows 7 lo ha fatto, ma c'erano dei problemi .

C'è stato un argomento migliore contro questo ritorno quando le persone impostano i loro orologi BIOS manualmente, ma ora il tempo basato sul server è molto più diffuso.


68

Di recente ho affrontato lo stesso problema ed è così che l'ho risolto. Devi fare un piccolo cambiamento in entrambi i sistemi operativi.

Ho iniziato con Linux prima. Esegui questi comandi come root.

ntpdate pool.ntp.org

Questo aggiornerà il tuo tempo se non impostato correttamente.

Ora imposta l'orologio hardware su UTC con questo comando.

hwclock --systohc --utc

fonte

Ora avvia Windows e aggiungi il seguente registro. Basta semplicemente creare un file .reg utilizzando il codice riportato di seguito in Blocco note. Salvalo ed eseguilo.

Windows Registry Editor Version 5.00

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

fonte

Dal prossimo avvio in poi entrambi i SO ti mostreranno l'ora corretta.


6
La migliore risposta documentata con istruzioni concrete! +1.
agtoever

1
Dovrebbe includere a quali edizioni di Windows si applica la modifica del registro.
Tanath,

2
Quando Windows ha acquisito la capacità di comprendere un orologio di sistema che mantiene un orario diverso da quello locale?
Marco

1
Questo tweak di registro funziona per Windows XP / Vista / 7/8 / 8.1. @Tanath
Ayan

3
@Mark In Windows XP.
Michael Hampton,

4

Il caso normale è che i sistemi Linux hanno RTC (real-time clock) impostato su UTC e la conversione all'ora locale viene effettuata nello spazio utente in base ai dati del fuso orario e alla TZvariabile di ambiente. Questo è "meno male" perché mantiene il sistema RTC monotonicamente in aumento e applica qualsiasi fuso orario in un secondo momento, assicurando ad esempio che nessun file abbia normalmente un timestamp in futuro (che può facilmente accadere almeno una volta all'anno, se il sistema RTC è impostato sull'ora locale). Come ha sottolineato Ken , l'RTC stesso non ha il concetto di fuso orario, solo tempo.

Come hai scoperto, ciò causa problemi durante il dual-boot con un sistema che normalmente non funziona in questo modo, come la famiglia di sistemi operativi Microsoft che generalmente prevede che RTC sia impostato sull'ora locale . Sì, Windows NT (penso che tornando a NT 4, in realtà) può funzionare con RTC impostato su UTC, ma almeno alla fine ho visto che non era davvero una configurazione supportata e c'erano un certo numero di avvertenze.

La soluzione semplice nel tuo caso è probabilmente quella di impostare l'RTC sull'ora locale, dire al tuo sistema Linux che l'RTC è impostato sull'ora locale (la meccanica esatta per farlo varia in base alla versione di distribuzione e di rilascio, ma apparentemente in Ubuntu hai impostato UTC=noin / etc / default / rcS ), quindi configurare i sistemi operativi in ​​modo tale che solo uno di essi (preferibilmente quello che si utilizza di più, poiché il tempo visualizzato in tutti gli altri sarà errato due volte all'anno fino a quando non è stato avviato e ha avuto una possibilità per correggerlo) gestisce le modifiche dell'ora legale . E vivere con gli aspetti negativi, che dovrebbero essere gestibili su un sistema a utente singolo.

È inoltre possibile impostare il lato Windows in modo che utilizzi UTC come fuso orario e disattivare le modifiche automatiche dell'ora legale in Windows, nonché mantenere Linux impostato in modo da avere RTC in UTC e visualizzare l'ora convertita in base alle sue pratiche. Tuttavia, ciò farà sì che Windows visualizzi la data e l'ora in UTC, che potrebbe non essere quello che desideri davvero. Non è un grosso problema per noi europei, che sono al massimo qualcosa come tre ore di pausa dalla UTC, ma potrebbero essere più un problema negli Stati Uniti. Questa è probabilmente un'opzione più realistica se usi Windows solo occasionalmente e il tuo sistema operativo principale è Linux o qualche altro sistema operativo compatibile con RTC-UTC.


Hai qualche informazione su "non era davvero una configurazione supportata e c'erano un certo numero di avvertenze"?
Casuale 832

@ Random832 Fammi vedere se riesco a trovarlo. So di averlo visto prima, ma ora non riesco a trovarlo con almeno una rapida ricerca su Google.
un CVn

2

Se si esegue il doppio avvio e si verificano conflitti di tempo tra Windows e Ubuntu, ciò si verifica perché Ubuntu memorizza l'ora sull'orologio hardware come UTC per impostazione predefinita mentre Microsoft Windows memorizza l'ora come ora locale, causando così tempi contrastanti tra Ubuntu e Windows.

Devi impostare il tuo sistema Linux in modo che usi l'ora locale come spiegato qui in questa guida per Ubuntu .


STA utilizzando l'ora locale e sono consapevole del fatto che memorizza l'ora come UTC (se almeno leggi la domanda), e so cosa posso fare per risolvere questo problema, la domanda è: chi effettivamente fa la cosa giusta per cambia invece l'altro.
Arielmz,

Per impostazione predefinita, Windows utilizza l'ora locale, Mac OS utilizza UTC e i sistemi operativi simili a UNIX variano. Un sistema operativo che utilizza lo standard UTC, in genere, considererà l'ora CMOS (orologio hardware) un'ora UTC (GMT, ora di Greenwich) e effettuerà una regolazione su di essa impostando l'ora di sistema all'avvio in base al proprio fuso orario.

Ancora una volta, ne sono consapevole, voglio solo sapere quale sistema operativo funziona correttamente, ad esempio posso impostare il fuso orario di Windows su UTC e sistemarlo, o viceversa.
Arielmz,

@MagomedSegaIsmailov Mac OS funziona su qualsiasi sistema che utilizza BIOS RTC? Pensavo che EFI avesse fornito un po 'di sanità mentale.
Casuale 832

0

Sto eseguendo il dual boot di Windows 10 e remix del sistema operativo e semplicemente seguendo solo la guida per Windows ha funzionato per me entrambe le volte sono corrette. Ho usato la riga di comando per aggiungere lo script anche perché era più facile


Per favore non aggiungere "grazie" come risposte. Investi un po 'di tempo nel sito e otterrai i privilegi sufficienti per migliorare le risposte che ti piacciono, che è il modo in cui Super User ti ringrazia.
DavidPostill
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.