L'ora non è attiva al doppio avvio


303

Sistema a doppio avvio Windows XP Pro e Ubuntu 12.04.

Ho impostato il BIOS per l'ora corretta e Ubuntu per l'ora degli Stati Uniti orientali. Ubuntu si avvierà e il tempo sarà spento di -4 ore. Se correggo l'ora in Ubuntu, quando avvio in Windows XP il tempo sarà spento di + 4 ore.

Questa è una nuova installazione di 12.04. Non ho avuto questo problema prima di reinstallare Ubuntu.

Risposte:


265

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

Conflitti temporali di più sistemi di avvio

I sistemi operativi memorizzano e recuperano l'ora nell'orologio hardware situato sulla scheda madre in modo che possa tenere traccia dell'ora anche quando il sistema non è alimentato. La maggior parte dei sistemi operativi (Linux / Unix / Mac) memorizzano l'ora sull'orologio hardware come UTC per impostazione predefinita, sebbene alcuni sistemi (in particolare Microsoft Windows) memorizzino l'ora sull'orologio hardware come l'ora "locale". Ciò causa problemi in un sistema a doppio avvio se entrambi i sistemi visualizzano l'orologio hardware in modo diverso.

Il vantaggio di avere l'orologio hardware come UTC è che non è necessario cambiare l'orologio hardware quando ci si sposta tra i fusi orari o quando l'ora legale (DST) inizia o termina poiché UTC non ha l'ora legale o offset del fuso orario.

Cambiare Linux in modo da usare l'ora locale è più facile e più affidabile che cambiare Windows per usare UTC, quindi i sistemi Linux / Windows a doppio avvio tendono ad usare l'ora locale.

Poiché Intrepid (8.10), UTC = yes è l'impostazione predefinita.

Fai in modo che Windows usi UTC

Nota: questo metodo inizialmente non era supportato su Windows Vista e Server 2008, ma è tornato con Vista SP2, Windows 7, Server 2008 R2 e Windows 8 / 8.1.

Per fare in modo che MS Windows calcoli l'ora dall'orologio hardware come UTC.

Creare un file denominato WindowsTimeFixUTC.reg con i seguenti contenuti e quindi fare doppio clic su di esso per unire i contenuti con il registro:

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

Nota: il servizio Ora di Windows scriverà comunque l'ora locale sull'RTC indipendentemente dall'impostazione del registro sopra all'arresto, quindi è utile disabilitare il servizio Ora di Windows con questo comando (se la sincronizzazione dell'ora è ancora richiesta mentre in Windows si utilizza l'ora di terze parti soluzione di sincronizzazione):

sc config w32time start= disabled

Inversione della modifica
È possibile creare un file con i seguenti contenuti e quindi fare doppio clic su di esso per unire le modifiche originali, come sopra:

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

Se il servizio Ora di Windows è stato disabilitato, abilitarlo nuovamente con il comando:

sc config w32time start= demand

Fai in modo che Linux usi l'ora locale

Per dire al sistema Ubuntu che l'orologio hardware è impostato sull'ora "locale":

Sistemi pre-Ubuntu 15.04 (ad esempio Ubuntu 14.04 LTS):

  1. modificare /etc/default/rcS
  2. aggiungere o modificare la seguente sezione

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

Sistemi Ubuntu 15.04 e versioni successive (ad esempio Ubuntu 16.04 LTS):

  1. aprire un terminale ed eseguire il comando seguente

    timedatectl set-local-rtc 1
    

53
Oh Signore. Non riesco a credere che fossero abbastanza stupidi da usare l'ora locale su un orologio hardware. Perché mai, mai?
iono il

20
@twome perché non esisteva molto in termini di reti nei primi giorni di MS-DOS e non sarebbe stato comune spostare un PC così lontano da spostare i fusi orari. (E sì, anche considerando quella storia, non era ancora la mossa migliore).
Jon Hanna,

9
@twome anche se concordo con te sul fatto che l'orologio hardware rimanga universale, poiché non conserva le informazioni sul fuso orario, ci sono alcuni problemi a questo proposito: A) BIOS / UEFI hanno varie funzionalità come timer di riattivazione / sospensione automatica, in cui è possibile impostare i tempi per quei trigger. Sarebbe strano impostare quei tempi in UTC - almeno per l'utente medio. B) Come ha detto Jon sopra, ragioni di compatibilità con le versioni precedenti.
Shahriyar Imanov,

5
In Windows PowerShell eseguire questo comando per aggiornare la proprietà del registro sopra menzionata: New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -PropertyType DWord -Value 00000001
Anatoly Mironov

6
Per scremare il testo, devi solo modificare le impostazioni in uno dei sistemi operativi, non in entrambi.
Alexander Revo,

67

Per impostare l'orologio del BIOS sull'ora locale anziché UTC in una versione basata su systemd (15.04 e successive), sarà necessario utilizzare il timedatectlcomando. Secondo Arch Wiki :

È possibile impostare lo standard dell'ora dell'orologio hardware tramite la riga di comando. Puoi controllare cosa hai impostato per l'uso da:

$ timedatectl | grep local

L'orologio hardware può essere interrogato e impostato con il timedatectl comando. Per modificare lo standard dell'ora dell'orologio hardware in ora locale, utilizzare:

# timedatectl set-local-rtc 1

Se si desidera ripristinare l'orologio hardware in UTC, procedere come segue:

# timedatectl set-local-rtc 0

4
Su Ubuntu 16.10 ha aiutato a fare "hwclock --systohc --localtime". Questo scrive la "parte locale" in / etc / adjtime e quindi la rende permanente.
user1050755,

1
@ user1050755 è quello prima, dopo o invece del comando timedatectl?
Nasch

36

Il tuo fuso orario è orientale , che attualmente è EDT (Eastern Daylight Time). EDT è UTC meno quattro ore, lo stesso dell'offset che si sta verificando.

Quando ciò accade su un sistema a doppio avvio, di solito è perché un sistema operativo pensa che l'orologio hardware segua l'ora locale, mentre l'altro sistema operativo pensa che l'orologio hardware segua UTC.

Nel tuo caso, l'orologio hardware è probabilmente impostato sull'ora locale e:

  • Windows è impostato per utilizzare l'ora locale, che (date le impostazioni dell'ora) è corretta .
  • Ubuntu è impostato per utilizzare UTC, che (date le impostazioni dell'ora) non è corretto .

Se si ripristinasse semplicemente l'ora nel sistema Ubuntu, manualmente o automaticamente , sarebbe quindi sbagliato in Windows, quindi non è una buona soluzione.

Invece, la soluzione migliore è probabilmente quella di riconfigurare Ubuntu per trattare l'ora dell'orologio hardware come ora locale (quindi puoi lasciare la configurazione di Windows e l'ora dell'orologio hardware, da solo).

Per fare ciò, modifica /etc/default/rcScome root e assicurati che abbia UTC=no:

  1. Premi Alt+ F2.

  2. Digita gksu gedit /etc/default/rcSe premi Enter.

  3. Probabilmente vedrai questo:

    # assume that the BIOS clock is set to UTC time (recommended)
    UTC=yes
    
    • Se lo fai, UTC=yespassa a UTC=no. (O potresti voler aggiungere anche un commento, cambiandolo in qualcosa del genere UTC=no # changed to accommodate Windows system. Tutto su una riga dopo un #personaggio è un commento, ed è lì solo per rendere le tue impostazioni più leggibili dall'uomo.)
    • In caso contrario, cercare qualsiasi UTC=riga. Se è senza commenti (ovvero all'inizio non ha #a), modificalo di conseguenza. Se è commentato, decommentalo rimuovendo il comando iniziale #e assicurati che lo dica UTC=no.
  4. Salvare il file ed uscire dall'editor di testo.

  5. Riavviare per applicare le modifiche e verificare che l'ora stia funzionando correttamente ora su entrambi i sistemi operativi.

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

(Ma questo è molto generale; ho scritto questa risposta per applicarmi specificamente alla tua situazione, che è un problema piuttosto comune.)


Nota che ciò può verificarsi anche quando esegui l'upgrade da una versione di Ubuntu alla successiva, come ha fatto per me. Posso consigliare di eseguire la correzione di cui sopra e quindi anche di sincronizzare manualmente l'orologio come in questa risposta (adattandolo per funzionare con systemd): askubuntu.com/a/254846/139735
starbeamrainbowlabs

Questa dovrebbe essere la risposta accettata imho. Avevo Windows installato e funzionava bene, quindi ho installato Ubuntu e gli orologi sono andati in tilt - non vedo un motivo per cui dovrei modificare le impostazioni di Windows se fosse chiaramente l'aggiunta di Linux che ha rotto la mia configurazione.
Przemek D,

13

La correzione / etc / rcS non funzionava sulla mia installazione di Win7 / Ubuntu 14.04x64, né correzioni tramite la GUI dell'orologio. Poiché la radice del problema è l'ora del BIOS rispetto all'ora UTC e Windows è un problema nel culo quando si utilizza UTC, ho appena selezionato un punto sulla mappa che utilizza UTC + 0 (nessuna modifica tra l'ora del BIOS e l'ora UTC) .

Prova a cambiare la tua posizione in Reykjavik (la capitale dell'Islanda). Ecco! Il tempo di Ubuntu cambierà in base al tempo del BIOS.


Haha! Eccezionale. : DI davvero non mi interessa la mia posizione. Questa è stata una correzione di due secondi. Molte grazie.
Pale Blue Dot
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.