PC を再起動すると、Ubuntu で時間が失われます。 Windows または Linux で時間がずれている場合。 UTC を使用して動作するように Windows を構成する

01.02.2024

Windows オペレーティング システムから Linux に切り替えたばかりで、今でも時々このシステムを実行している多くの新規ユーザーは、Ubuntu で Windows をロードした後、数時間再起動すると時間が数時間前後するという問題に直面しています。すでに今が何時なのか理解するのが困難です。

これはすべて、これらのオペレーティング システムの時刻保存形式の違いにより発生します。 そして、どれだけ正しい時刻を設定したとしても、再起動するたびにこの問題が発生します。 しかし、この問題は解決できます。 そしていくつかの方法でも。 この記事では、Ubuntu と Windows で時間が失われる問題を解決する方法を見ていきます。

すでに述べたように、問題は時間を保存および復元するためのさまざまな形式にあります。 コンピュータには 2 種類の時計があります。 ハードウェア クロックは、コンピュータの電源がオフになっていても常に動作しており、ソフトウェア クロックはカーネルに組み込まれています。 コンピュータの電源がオンになると、ハードウェア クロックの値がソフトウェア クロックに書き込まれ、その後オペレーティング システムがそこから時間を取得します。 ただし、Windows と Linux では、これら 2 つのクロックでの動作が異なります。 作業には 2 つの方法があります。

  • UTC- ハードウェアとソフトウェアのクロックは両方ともグリニッジ標準時に基づいています。 つまり、時計はゼロ タイム ゾーンで世界時を提供します。 たとえば、タイムゾーンがキエフの GMT+3 の場合、時計は 3 時間遅れます。 そして、ユーザーはローカルでこの時間にタイムゾーンの修正を追加します (たとえば、プラス +3)。 各ユーザーは必要な修正を追加します。 これはサーバー上で行われ、各ユーザーが自分のタイムゾーンの正しい時刻を取得できるようになります。
  • 現地時間- このバージョンでは、ソフトウェア クロックもグリニッジ標準時に従って動作しますが、ハードウェア クロックはローカル タイム ゾーンの時刻に従って動作します。 ユーザーにとっては違いはありませんが、タイムゾーンの調整を追加する必要があります。 ただし、時刻をロードして同期するとき、Windows はソフトウェア時刻が正確になるようにハードウェア時刻から 3 時間 (またはその他のタイム ゾーン調整) を差し引きます。

では、なぜ Ubuntu と Windows の時間が失われるのでしょうか? Windows が実行されており、時間の経過とともにすべてが正常になり、ローカルタイム形式で保存されているとします。 しかし、Linux を再起動すると、オペレーティング システムは Localtime を取得し、それが UTC であると認識します。 したがって、ユーザーはすでに正しい時刻を取得し、それにタイムゾーンの修正を追加します。 したがって、時刻は正確ではなくなります。

次に時間を修正すると、ハードウェア クロックが UTC で動作するようになりました。 ただし、Windows をロードします。 システムはこれがローカルタイムであると認識し、正しいソフトウェア時刻を設定するために、ハードウェアにタイム ゾーン修正を追加します (たとえば、この場合は +3)。 その後、各ユーザーがこの修正を再度適用すると、時刻は再びずれてしまいます。

この問題を解決する唯一の確実な方法は、両方のシステムが同じフォーマットを使用して動作するようにすることですが、これはまったく難しいことではありません。 さらに、Windows を UTC で動作させる方法と、Linux をローカルタイム形式で動作させる方法の 2 つがあります。これは完全に正しいわけではありませんが、十分に可能です。 それでは、Ubuntu で時間が失われる問題の解決に進みましょう。

UTC で動作するように Windows を構成する

したがって、オペレーティング システムを切り替えるときに Windows と Linux のタイミングの問題が発生した場合、最善の方法は、Windows をより正確で論理的な形式で動作させることです。 これを行うには、レジストリ キーを 1 つ追加するだけです。 これは、コンソールで 1 つのコマンドで実行できます。 Windows 10 でコンソールを開くには、マウスを左下隅に移動し、右ボタンをクリックします。 コンテキスト メニューから、 コマンドライン (管理者):

> Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

64 ビットの場合は、REG_QWORD 値タイプを使用する必要があります。

> Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1

ほぼ準備が整いましたが、Windows タイム サービスは、この設定に関係なく、インターネット経由で更新するときにローカル形式で時刻を書き込むため、このサービスを無効にしておくと便利です。 これを行うには、次を実行します。

> sc config w32time start= 無効

どうすれば取り戻せますか?

すべてを元の状態に戻したい場合は、できるだけ簡単に行うことができます。 まず、レジストリ キーを正しい位置に戻します。

> Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0

そして、同期サービスを再度開始します。

> sc config w32time start= 要求

ローカルタイムで実行するように Linux を構成する

デフォルトでは、Linux は UTC 時刻形式を使用しますが、Ubuntu 16.04 が Windows 時刻を混乱させる場合、非常に簡単にシステムにローカル時刻をハードウェア タイマーに保存させることができます。 Ubuntu 16.04 を含む Systemd を使用するすべてのディストリビューションでは、次のコマンドを実行するだけです。

sudo timedatectl set-local-rtc 1 --adjust-system- Clock

ハードウェアとソフトウェアのクロックの現在の状態を表示するには、次のコマンドを実行します。

sudo timedatectl

完了したら、コンピュータを再起動して Windows を起動し、再起動時に時間が失われないことを確認します。 古い Ubuntu システムでは、/etc/default/rcS ファイルを編集して、UTC=yes を UTC=no に置き換える必要があります。 これは次のコマンドで実行できます。

sudo sed -i "s/UTC=yes/UTC=no/" /etc/default/rcS

どうすれば取り戻せますか?

ここでも、1 つのコマンドですべてを元の状態に戻すことができます。

sudo timedatectl set-local-rtc 0

古い Ubuntu ディストリビューションでは次のようになります。

sudo sed -i "s/UTC=no/UTC=yes/" /etc/default/rcS

結論

それでおしまい。 Windows 10 で問題が発生した場合、つまり Ubuntu やその他の Linux ディストリビューションで時間が失われてしまった場合、完全に機能する 2 つの方法を使用して問題を解決する方法がすでにわかります。 ご質問がございましたら、コメント欄でお尋ねください。
タイム ゾーンが混同されないように Ubuntu と Windows で正しい時刻を設定する方法はわかりましたが、タイム ゾーンとは何ですか? なぜタイム ゾーンが必要なのでしょうか。これについてのビデオを終わりにしましょう。

UEFI モード (セキュア ブート)。 BIOS 時間は正しいです。

Ubuntu を起動してから Windows 10 を起動すると、間違った時間が表示されます。 Windows 10 では手動またはオンラインで修正する必要がありますが、Windows 10 を再起動すると問題はありません。 時計は正確な時間を示します。 Linux を再起動すると時計は正確になりますが、Windows 10 に戻すと時計は再び動作し始めます。

オペレーティング システムは、マザーボード上のハードウェア クロックに時間を保存および取得して、システムの電源が入っていないときでも時間を追跡します。 ほとんどのオペレーティング システム (Linux/Unix/Mac) は、デフォルトでハードウェア クロックの時間を UTC として保存しますが、一部のシステム (特に Microsoft Windows) はハードウェア クロックの時間を「ローカル」時間として保存します。 これにより、両方のシステムがハードウェア クロックを異なる方法で扱う場合、デュアル ブート システムで問題が発生します。

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

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

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

Windows に UTC を使用させる

注記。 この方法は当初、Windows Vista および Server 2008 ではサポートされていませんでしたが、Vista SP2、Windows 7、Server 2008 R2、および Windows 8/8.1 でサポートされるようになりました。

これにより、MS Windows はハードウェア クロックから UTC 形式で時刻を計算します。

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

Windows レジストリ エディタ バージョン 5.00 "RealTimeIsUniversal"=dword:00000001

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

Sc config w32time start= 無効

変更をキャンセル

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

Windows レジストリ エディタ バージョン 5.00 "RealTimeIsUniversal"=-

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

Sc config w32time start= 要求

Linux を「ローカル」時間にする

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

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

    # ハードウェアクロックが UTC (GMT) に設定されている場合は、UTC=no に設定する場合は UTC=yes を設定します

Ubuntu 15.04 以降のシステム (例: Ubuntu 16.04 LTS):

    ターミナルを開いて次のコマンドを実行します

    Apple テクノロジー、Mac OS X オペレーティング システム (および PC 上でのその起動) に関連するすべてに関する質問への回答を Web サイトで確認したい場合は、または からお問い合わせください。

    次のような質問をいただきました。

    良い一日!
    Hackintosh は Snow Leopard、Windows 7、Ubuntu を実行します。 再起動後、時間が常に失われます ((Mac OS では常に 4 ~ 5 時間に戻ります! 問題の解決方法を教えてください)

    問題 時刻同期これは、Hackintosh だけでなく、Boot Camp 経由で Wi​​ndows が動作する実際の Mac にも関係します。 その理由は非常に単純です。Mac OS X は常に、BIOS (または EFI) に記録された時刻が次の形式で書き込まれていると想定します。 UTC- 言い換えれば、グリニッジによれば。 これに、タイムゾーンに応じた適切な修正を加えます。

    しかし、Windows の動作は異なります。 直接読み取ります BIOS からの時間。 この時間を変更した場合、または自動的に同期された場合は、修正された形式 (UTC+修正) で BIOS に記録されます。

    この矛盾をどうやって解決すればいいのでしょうか? 2 つのアプローチがあります。1 つは Mac OS 側から、もう 1 つは Windows および Linux 側からです。

    Mac OS Xを使用した解決策

    これは最善の方法ではないとすぐに言ってみましょう。 肝心なのは、Mac OS X の場合、タイムゾーンをグリニッジ標準時に設定するということです。 たとえば、設定 (リモート 日時、タブ タイムゾーン) あなたの地域として選択してください レイキャビク.

    また、タブ上では、 "日時"自動時刻同期を必ず無効にしてください。無効にしないと、以前よりもさらに悪化する可能性があります。

    これらの手順を完了すると、Windows の時刻は常に正確になり、Mac OS X によって時刻が狂うことはなくなります。 しかし、なぜこれが最善の方法ではないのでしょうか? 実際、iPhone などのガジェットを Mac OS X と同期すると、タイムゾーンが間違っていると多くの重要なデータが歪んでしまいます。 たとえば、SMS の受信時刻もグリニッジになります。

    Windows と Linux を使用したソリューション

    もう 1 つの方法は、Mac OS と同じ方法で Windows と Linux に BIOS から時間を読み取ることです。 幸いなことに、そのような機会は確かに提供されていますが、それは非常に深く隠されています。

    Windows では、「実行」ウィンドウからプログラムを実行する必要があります。 登録編集レジストリエディタ。それからスレッドに行きます \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformationそこに次の名前の DWORD 値を作成します リアルタイムはユニバーサル値が 1 の場合:

    Linux (少なくとも Ubuntu) では、ファイルを編集する必要があります。 /etc/default/rcS任意のテキストエディタでパラメータの内容を置き換えます。 「UTC=いいえ」の上 「UTC=はい」。

    この後、Mac OS X を再起動してネイティブのタイムゾーンを設定し、同時にインターネット経由の自動時刻同期を有効にすることができます。 Windows と Ubuntu で再起動すると、まったく同じ時間が表示されます。

    この記事では、コンピューターの日付と時刻が失われた場合の原因とその解決策について説明しました。 この記事では、ラップトップやシステム ユニットにインストールされているオペレーティング システムの数に関係なく、一般的な問題を扱いました。

    今日は、タイムゾーンが変わったかのように、時間、つまり時計が数時間ずれてしまう問題についてお話します。 この問題は、PC で 2 つの Linux および Windows オペレーティング システムを同時に使用し始めた後に発生しました。

    この問題はそれほど新しいものではないことが判明しました。 この問題を解決するために、インターネット上に多くの問題が書かれています。

    問題の本質は、時間が間違っているかどうかです。

    PC には Linux と Windows という 2 つのオペレーティング システムがあります。

    Linux を実行しています - 時間は正常です。

    作業して Windows を再起動しました。時刻は数時間前 (正確には覚えていませんが、それ以降) を示しています。

    時間を設定したり、インターネットとの自動同期を設定したりしましたが、何も役に立ちませんでした。 この問題は単純な方法では解決できません。 インターネットで調べてみると、問題はコンピュータにハードウェアとソフトウェアの 2 種類の時計があることがわかりました。

    ハードウェア クロックは常に動作しており、コンピュータの電源がオフの場合でも、ボード上には追加のバッテリ、つまり蓄電池が搭載されています。 時間の経過を維持し、設定を保存します。

    プログラム時間は、電源がオンになるとプログラムに書き込まれ、そこから取得されます。

    Windows と Linux ではこれらのクロックの動作が異なるため、あるオペレーティング システムから別のオペレーティング システムに再起動するときにタイミングのグリッチが発生します。

    ここ。 これについて他のサイトでは次のように書かれています。

    この問題を解決するにはどうすればよいでしょうか?

    このハードウェア クロックを使用すると、Windows と Linux が同じように動作します。

    インターネット上では、「時間のロス」というトピックに関して、正しい解決策は Windows を正しく動作させることであると書かれています。 多くの人によると、Linux は正しく動作します。

    これは、時間をかけて Windows を Linux のように動作させる必要があることを意味します。

    問題そのものを解決するプロセス。

    Windows オペレーティング システムのレジストリにキーを追加する必要があります。

    コマンドを使用してこのキーを追加する方法と、コマンド ラインを使用する方法があります。 すべてを順番に手作業で行っていきます。 そして、自分が何をしたかが明確になり、頭が少し働くようになります。

    キーボード ショートカットを使用して実行ウィンドウを呼び出す +R.または、メニューから「実行」を選択するだけです。

    「regedit」と入力し、「OK」をクリックします。

    レジストリ エディタが開きます。

    パスに沿ってレジストリ ブランチに移動します HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

    そこで、エディタの左半分で右クリックし、「パラメータの作成」をクリックします。

    x32 ビット DWORD システムの場合

    x64 ビット QWORD システムの場合

    RealTimeIsUniversal という名前を付けます

    Windows オペレーティング システムから Linux に切り替えたばかりで、今でも時々このシステムを実行している多くの新規ユーザーは、Ubuntu で Windows をロードした後、数時間再起動すると時間が数時間前後するという問題に直面しています。すでに今が何時なのか理解するのが困難です。 これはすべて、これらのオペレーティング システムの時刻保存形式の違いにより発生します。 そして、どれだけ正しい時刻を設定したとしても、再起動するたびにこの問題が発生します。 しかし、この問題は解決できます。 そしていくつかの方法でも。 この記事では、Ubuntu と Windows で時間が失われる問題を解決する方法を見ていきます。

    UTC で動作するように Windows を構成する

    したがって、オペレーティング システムを切り替えるときに Windows と Linux のタイミングの問題が発生した場合、最善の方法は、Windows をより正確で論理的な形式で動作させることです。 これを行うには、レジストリ キーを 1 つ追加するだけです。 これは、コンソールで 1 つのコマンドで実行できます。 Windows 10 でコンソールを開くには、マウスを左下隅に移動し、右ボタンをクリックします。 コンテキスト メニューから、 コマンドライン (管理者):

    > Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

    64 ビットの場合は、REG_QWORD 値タイプを使用する必要があります。

    > Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1

    Target="_blank">https://losst.ru/wp-content/uploads/2016/10/utc-windows-600x139-300x70.png 300w" width="600" />

    ほぼ準備が整いましたが、Windows タイム サービスは、この設定に関係なく、インターネット経由で更新するときにローカル形式で時刻を書き込むため、このサービスを無効にしておくと便利です。 これを行うには、次を実行します。

    > sc config w32time start= 無効

    元に戻す方法は?

    すべてを元の状態に戻したい場合は、できるだけ簡単に行うことができます。 まず、レジストリ キーを正しい位置に戻します。

    > Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0

    そして、同期サービスを再度開始します。

    > sc config w32time start= 要求

    Linux をローカルタイム用に構成する

    デフォルトでは、Linux は UTC 時刻形式を使用しますが、Ubuntu 16.04 が Windows 時刻を混乱させる場合、非常に簡単にシステムにローカル時刻をハードウェア タイマーに保存させることができます。 Ubuntu 16.04 を含む Systemd を使用するすべてのディストリビューションでは、次のコマンドを実行するだけです。

    Sudo timedatectl set-local-rtc 1 --adjust-system- Clock

    ハードウェアとソフトウェアのクロックの現在の状態を表示するには、次のコマンドを実行します。

    Sudo timedatectl

    Target="_blank">https://losst.ru/wp-content/uploads/2016/10/rtc-localtime-600x242-300x121.jpg 300w" width="600" />

    完了したら、コンピュータを再起動して Windows を起動し、再起動時に時間が失われないことを確認します。 古い Ubuntu システムでは、/etc/default/rcS ファイルを編集して、UTC=yes を UTC=no に置き換える必要があります。 これは次のコマンドで実行できます。

    Sudo sed -i "s/UTC=yes/UTC=no/" /etc/default/rcS

    元に戻す方法は?

    ここでも、1 つのコマンドですべてを元の状態に戻すことができます。

    Sudo timedatectl set-local-rtc 0

    古い Ubuntu ディストリビューションでは次のようになります。

    Sudo sed -i "s/UTC=no/UTC=yes/" /etc/default/rcS

    結論

    それでおしまい。 Windows 10 で問題が発生した場合、つまり Ubuntu やその他の Linux ディストリビューションで時間が失われてしまった場合、完全に機能する 2 つの方法を使用して問題を解決する方法がすでにわかります。