CMOSクロックはローカル時間に設定する必要があります(DOSデュアルブートのため)。 timedatectlまたはhwclockはCMOS(ハードウェア)クロックをUTCに設定し続けているようです!

CMOSクロックはローカル時間に設定する必要があります(DOSデュアルブートのため)。 timedatectlまたはhwclockはCMOS(ハードウェア)クロックをUTCに設定し続けているようです!

これはクレイジーなことだ。

あるOSにはFreeDOS(ローカル時間以外はCMOSクロックを処理できない機能)があり、他のOSにはLinux Mint 17を搭載したデュアルブートシステムがあります。

システムがどのように機能するかは、Linuxに座って「トリガー」(ソフトウェアトリガー)がテストを開始するのを待つことです。テストはFreeDOSで行われたため、スクリプトはLinuxですべてを設定し、FreeDOSを起動し、テストを実行するようにシステムを設定してからLinuxで再起動します。これは数分ごとまたは数日ごとに発生します。

私たちは時々時計が完全に混乱していることを発見しました。私たちはループに閉じ込められているようです。 'CMOSクロックをUTCに設定し、現地時間であると仮定してCMOSクロックをロードします(8時間高速です)。 CMOSクロックをUTCに設定します(さらに8時間繰り返します)。

どちらのシステムでも、あるシステムから別のシステムに起動する頻度やまれに、時計を正確に保つことは絶対的な要件です(絶対的な風)。

Linux側にNTPを設定しましたが、通常はうまくいきます。

どうやら11分モードのようです。

ハードウェア(CMOS)クロックを現地時間に設定してから11分間待ってから、もう一度見てみましょう。

tjr2pc1 ~ # date ;timedatectl status ; sleep 660 ; date;timedatectl status
Thu Feb  4 12:03:33 MST 2016
      Local time: Thu 2016-02-04 12:03:33 MST
  Universal time: Thu 2016-02-04 19:03:33 UTC
        RTC time: **Thu 2016-02-04 12:03:33**
        Timezone: America/Phoenix (MST, -0700)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: yes
      DST active: n/a

Warning: The RTC is configured to maintain time in the local time zone.     This
         mode is not fully supported and will create various problems     with time
     zone changes and daylight saving adjustments. If at all possible use
     RTC in UTC, by calling 'timedatectl set-local-rtc 0'.
Thu Feb  4 12:14:33 MST 2016
      Local time: Thu 2016-02-04 12:14:33 MST
  Universal time: Thu 2016-02-04 19:14:33 UTC
        RTC time: **Thu 2016-02-04 19:14:33**
        Timezone: America/Phoenix (MST, -0700)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: yes
      DST active: n/a
-----------------

CMOSクロックが突然UTC時間に変わることに注意してください! ****やめてください***

fake-hwclockをインストールしてみましたが、この現象は引き続き発生します。破損したCMOSのみをカーネルに残すために、/sbin/hwclockの名前を/sbin/real_hwclockに変更しました。

要約すると、私たちの目標は、FreeDOSとLinuxの両方で時間を効率的に使用することです。

これは、LinuxがCMOSクロックをUTCに設定してから終了時に現地時間に戻すことを意味するのか、それともLinuxがUTCの代わりに現地時間に設定することを強制できるのかは関係ありません。あるいは、LinuxがCMOSクロックを完全に無視するようにすることができれば(それで私はfake_hwclockをインストールしました。うまくいきたいと思いましたが、そうではありません)。方法は関係ありません。 Linuxがシャットダウンしたら、CMOSクロックを正しい現地時間に設定します(FreeDOSが正しい時刻を取得できるように)。 (すべての人を悩ませるには複雑すぎるため、FreeDOSではネットワークを実行できないため、ntpやスクリプトなどを使用して自動的に時間を正しく設定できます。そして、「Go to FreeDOS Scripting」を作成してFreeDOS Timeで設定します。愚かですが、私は単に愚かさとの戦いを停止するためにこれを行います)

timedatectl私はすでにCMOS時計が現地時間だと言っています。

/etc/default/rcS説明する:

 UTC=no

しかし、11分ごとに誰か(カーネルだと思います)CMOSクロックをUTC時間に設定します!明らかにしたのに現地時間でなければなりません。

そしてそうです。 rcSをUTC = noに設定してから何度も再起動しました。カーネルにCMOSクロックを保持したり、強制的にローカル時間に設定したりする別の設定ファイルはありますか?

更新:「11分モード」について議論し、ntpとadjtimex(実行ファイルではなくカーネル内)を非難するredditの質問を含む、「11分モード」に関するいくつかの興味深い点を発見しました。まだ解決策はありません。毎分実行され、ハードウェア時計を現地時間に戻すcronジョブを作成します。 (私はこのような大きなハンマーを使用するのが嫌いですが、正確な時間が本当に必要です。できるだけ早く、私たちの時計が完全に混乱しているからです(1台のコンピュータの時間は12時間以上遅く(奇妙です)、1台のコンピュータの時間は7時間の前に、他のコンピュータの時間は7時間高速です。コンピュータの時間は7時間速くなります)

ベストアンサー1

さて、まずこの質問について私がなぜ反対票を受けたのか理解できません。

とにかく、3年後についに解決策を見つけました。

/ etc / adjtimeに "UTC"ではなく "LOCAL"があることを確認してください(私の場合はファイルの最後の行でした)。

/ etc / hardwareclockに "localtime"があることを確認してください(私の場合は新しいファイルであり、その行だけがあります)。

上記の操作を実行すると、カーネルの「NTP同期」フラグがオフになるように見えます。これは、オフになったときにカーネルがUTC時間をCMOSクロックに書き込むのを防ぎます。したがって、カーネルはCMOSクロックにシステム時間を保存しない可能性があります(まだ確認していません)。しかし、上記の2つの変更は「11分モード」をオフにしているようです。

これは "timedatectl"の出力です:

rusty@quigon2 ~ $ timedatectl
Local time: Wed 2019-01-30 14:18:53 MST
Universal time: Wed 2019-01-30 21:18:53 UTC
RTC time: Wed 2019-01-30 14:18:50
Time zone: America/Phoenix (MST, -0700)
Network time on: yes
NTP synchronized: no
RTC in local TZ: yes

Warning: The system is configured to read the RTC time in the local time zone.
...blah blah...

(上記の「NTP同期」メッセージを参照してください)。

NTPと同期したい場合(ntpd、rdate、またはその他の手段を介して)、これは別の話です。 (私はcronジョブを使って30分ごとにrdateし、hwclock --systohc...)

いくつかの特定のオプションを使用してtimedatectlを実行すると、上記のファイルで上記の変更を行うことができます。これについてはテストしていません。

おすすめ記事