なぜ

なぜ

Kali LinuxとWindowsをデュアルブートできるシステムがあります。テストを実行したときの正確な現地時間は11:19 IST(インド標準時)で、もちろん05:49 UTCでした。この質問の編集履歴に示すように、もともと数分後に05:58 UTCに投稿しました。

このdateコマンドで取得したタイムゾーンは正確ですが、時間が完全に間違っています。

$ date
Wednesday 19 August 2020 04:49:10 PM IST

質問コメントで述べたように、これは12時間制なので、24時間制では16:49:10です。コマンドは、date実際の時間より5時間30分速い現地時間を報告しました。

私のデスクトップのGUIクロック時間は11:19で正確です。

約1分前に私はこれを実行しました:

$ timedatectl
               Local time: Wed 2020-08-19 16:47:50 IST
           Universal time: Wed 2020-08-19 11:17:50 UTC
                 RTC time: Wed 2020-08-19 11:17:51
                Time zone: Asia/Kolkata (IST, +0530)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

ご覧のとおり、タイムゾーンは正確ですが、現地時間は非常に間違っています。興味深いことに、「世界時」がUTCの代わりにISTであれば正しいでしょう。

なぜこれが起こるのかわかりません。なぜ?どうすれば解決できますか?

答え1

完璧にするために、デフォルトのタイムゾーンが正しいことを確認してください。 (すでに述べたように、Asia/KolkataこのISTステップはほぼ重複しています。)

#dpkg-tzdataの再構成

もちろん、まだスーパーユーザーシェルを実行していない場合は、sudoorを使用してください。su

次に、一部のNTPサーバーから時刻を取得するデーモンを使用して、システムクロックを正しいUTC時刻と同期させます(インストールNTPパッケージまだインストールされていない場合):

#ntpd-qg

この-qオプションは、ntpd時間を一度だけ設定して終了するように指示します。デーモンにはなりません。このワンタイムモードはntpdスタンドアロンコマンドと同じですntpdate

この-gオプションが重要です。なぜ」を参照してください。NTPを使用して時間を同期するために推奨される方法は何ですか?「あなたの時計ははるかに正しいUTC値は1000秒以上異なります。 5時間30分の差。この-gオプションを使用しないと、シチュエーションの変更はntpd拒否されます。

(もちろん、システムクロックを正しいUTC時間にリセットする方法もあります。マシンファームウェアのSETUPユーティリティに手動で入力するか、コマンドを使用して手動で入力することもできます。これに加えて、他のツールをdate使用することもできます。ntpd同期されます。chronyd慢性パッケージ例えば。 )

なぜ

何が起こったのか? Windowsのみを実行している場合、Windowsはハードウェアリアルタイムクロック(RTC)をローカル(IST)時間として解釈します。 Linuxベースのオペレーティングシステムがインストールされていますが(Kali Linuxには適用されません)紛争が解決しないLinuxベースのオペレーティングシステム(実際には通常Unixに似たオペレーティングシステム)とWindowsの間です。

Windowsはリアルタイムクロックがローカル(IST)時間を報告していると考えていましたが、それでも疑いの余地はありません。一般に、Linuxベースのオペレーティングシステムでは、リアルタイムクロックが標準時(UTC)を報告していると想定しています。実際のクロックハードウェアにはタイムゾーンレジスタがないため、クロックの日付と時刻レジスタが実際に表すものと、クロックが実行されると理解されるタイムゾーンを決定することは、各オペレーティングシステムに依存します。

これは根本的な紛争です。問題を解決する必要があります。

Linuxベースのオペレーティングシステムは、Windowsと同じ方法でリアルタイムクロックレジスタを解釈することがよくありますが、これはさまざまな理由で悪い選択です。これはQ&A全体であり、WWW全体にわたって行われます。 。より良いオプションは、Windows と Linux ベースのオペレーティングシステムの両方が RTC レジスタを読み取って理解することに同意することです。一般的な(UTC)日付と時刻。

Windowsを構成したら、これを行うことができます。かなりよく知られているレジストリ設定があります。実際、Linux側では何もする必要はありません。とは別にRTCをUTCの日付と時刻と同期させるために使用されます。timedatectl実行時に出力に見られるようにすでに持っている Asia/Kolkataあなたの(デフォルト)タイムゾーンすでに持っている「ローカルTZのRTC」(例:「RTCをWindowsと同様にローカルに登録」)が「いいえ」に設定されています。

Windowsを再構成して再起動する前に、WindowsがRTCをIST値に再同期する場合は、UTC値に再同期する必要があります。

では、なぜGUIクロックが正しいのですか?皮肉なことに、これはISTタイムゾーンまたはデスクトップ設定で正しいISTタイムゾーンを構成していないためです。 UTC時間またはDublin/London/Lisbon/Bamako/Freetown/Yamoussoukro時間を表示します。システムでは、OSがRTCから取得する「UTC時間」は実際にはyesだからです。地元のWindowsで設定したIST時間値、GUIクロックはUTC時間を表示します。ただ見るにはよさそうです。

timedatectlこれは、報告された「世界時」が現地時間で正確な日時を持っているのと同じ理由です。すべてのレポートLinuxベースのオペレーティングシステムの現在の考えUTCは実際にローカルISTの日付と時刻を報告します。

一般化する

だからあなたは必要です

  • リアルタイムクロックを次に修正してください。本物UTCの日付と時刻(ntpd上記のように起動時に手動で設定するか、Windowsの場合はマシンファームウェアのSETUPユーティリティで設定)
  • オペレーティングシステムがリアルタイムクロックを読み取る方法に同意するようにWindowsを再構成します。

追加読書

関連情報