web-dev-qa-db-ja.com

UbuntuからWindows 10に切り替えた後、時計に間違った時間が表示される

UEFIモードでWindows 10とUbuntu 16.04をデュアルブートしました(セキュアブートオフ)。 BIOSでの時間は正しいです。

Ubuntuを起動してからWindows 10を起動すると、間違った時間が表示されます。手動で修正するか、Windows 10でインターネットを使用して修正する必要があります。Windows10を再起動しても問題はありません。時計には正しい時間が表示されます。そして、Linuxを再起動すると時計は正確になりますが、Windows 10に戻すと時計が再び乱れます。

81

複数のブートシステムの時間の競合

オペレーティングシステムは、マザーボードにあるハードウェアクロックで時間を保存および取得するため、システムに電力が供給されていないときでも時間を追跡できます。一部のシステム(特にMicrosoft Windows)では、ほとんどのオペレーティングシステム(Linux/Unix/Mac)はデフォルトでUTCとしてハードウェアクロックに時刻を保存しますハードウェアクロックの時刻を 'local' timeとして保存します。これにより、デュアルブートシステムでハードウェアクロックの表示方法が異なる場合に問題が発生します。

UTCとしてハードウェアクロックを使用する利点は、タイムゾーン間を移動するとき、またはUTCにDSTまたはタイムゾーンオフセットがないため、夏時間(DST)が開始または終了するときにハードウェアクロックを変更する必要がないことです。

現地時間を使用するようにLinuxを変更すると、UTCを使用するようにWindowsを変更するよりも簡単で信頼性が高いため、デュアルブートLinux/Windowsシステムは現地時間を使用する傾向があります。

Intrepid(8.10)以降、UTC = yesがデフォルトです。

解決策1:WindowsでUTCを使用する

:このメソッドはWindows VistaおよびServer 2008では当初サポートされていませんでしたが、Vista SP2、Windows 7、Server 2008 R2およびWindows 8/8.1。

MS Windowsにハードウェアクロックからの時間をUTCとして計算させるため。

次の内容で WindowsTimeFixUTC.reg という名前のファイルを作成し、それをダブルクリックして内容をレジストリにマージします。

Windows Registry Editor Version 5.00

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

:Windowsタイムサービスは、シャットダウン時の上記のレジストリ設定に関係なく、RTCにローカル時間を書き込むため、便利です。このコマンドでWindowsタイムサービスを無効にするには(Windowsでサードパーティの時刻同期ソリューションを使用しているときに時刻同期が引き続き必要な場合):

sc config w32time start= disabled

Powershellで上記のコマンドを実行する場合、sc.exeを指定する必要があります。

sc.exe config w32time start= disabled

変更を元に戻す

上記のように、次の内容のファイルを作成し、ダブルクリックして元の変更をマージできます。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
 "RealTimeIsUniversal"=-

Windowsタイムサービスが無効になっている場合は、次のコマンドで再度有効にします。

sc config w32time start= demand

解決策2:Linuxで「ローカル」時間を使用する

Ubuntuシステムに、ハードウェアクロックが「ローカル」時間に設定されていることを通知するには:

Ubuntu 15.04より前のシステム(Ubuntu 14.04 LTSなど):

  1. / etc/default/rcSを編集します
  2. 次のセクションを追加または変更します

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

Ubuntu 15.04システム以上(Ubuntu 16.04 LTSなど):

  1. ターミナルを開き、次のコマンドを実行します

    timedatectl set-local-rtc 1
    

ソース: buntuヘルプ

95
Ceda EI