web-dev-qa-db-ja.com

RTC and system clock not in sync

RTC(ハードウェアクロック/ BIOS)でシステムクロック同期を設定する方法。システムアラームを使用してシステムを起動するためにシステムクロックを使用するスクリプトを書いています。このための唯一の要件は、適切なRTCクロックを使用します。テストシステム(SLES 10 SP4)では、システムクロックを管理するためにNTPサーバーを使用します。ただし、RTCクロックは常に進んでいます。たとえば、現在システムクロックは14:00 26.05.2016を示し、RTCは16:00時間を示しています。マニュアルページを読みますhwclockのそれは、次のコマンドがRTCクロックをシステムクロックに同期することを示しています。

hwclock --systohc --localtime。

しかし、再起動/シャットダウン後、システムが再起動すると、RTCが再び混乱します。そのため、RTCシステムが再起動しました。誰かが私を正しい方向に向けることができます。事前に感謝します。

3
Sachin H

hwclockコマンドを使用して、ハードウェアクロックを設定できます。
男からhwclock page

 --set  Set the Hardware Clock to the time given by the --date option.

次のコマンドを使用して、現在のシステム時刻をハードウェアクロックに適用できます。

hwclock -w

または手動で:

hwclock --set --date "$(date)"

質問に詳細を追加した後でも、私の答えは十分ではないので、以下に詳細を示します。
タイムゾーンはtimedatectl statusコマンドで確認できます。
timedatectl list-timezonesを使用してタイムゾーンを一覧表示します。
たとえば、timedatectl set-timezone UTCを使用して、タイムゾーンをUTCに設定できます。
タイムゾーン設定の詳細 ここ

1
mazs

クロックが最適に設定されていない場合、systemdベースのシステムでtimedatectlを実行すると警告が表示されます。

Warning: The system is configured to read the RTC time in the local time zone.
         This mode can not be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.

これは次のように修正できます:

timedatectl set-local-rtc 0

0
Stuart Cardall

これは仮想マシンですか?またはブレードハードウェア上の物理システム?

一部の製造元のブレードハードウェアには、各ブレードのハードウェアクロックをブレードエンクロージャの管理プロセッサのクロックに同期するオプションがあります。少なくとも富士通のブレードハードウェア(の一部のモデル)では、この同期オプションはデフォルトで有効になっています。オフにするには、ブレードのBIOS設定にアクセスする必要がありました。

仮想マシンは通常、物理ホストシステムのクロックに従って仮想ハードウェアクロックをVM初期化時間に同期します。これは、仮想マシンが実際の物理ハードウェアクロックを持つことができないためです。ホスティングプロバイダーが主にWindowsシステムでは、UTCではなく現地時間を使用するように同期が構成されている可能性があります。


また、特にエンタープライズLinuxディストリビューションを実行している場合は、物理システムと仮想システムの両方に影響を与える可能性がある1つの問題があります。

hwclockツールおよびRTCが/etc/adjtimeでUTCまたは現地時間に設定されることを示す規則が存在する前に、いくつかのディストリビューション固有の方法がありました。この設定を保存します。下位互換性のために、これらの方法がまだ存在する可能性があります。また、エンタープライズディストリビューションは、下位互換性に特に熱心です。

これは、/etc/adjtimeのUTC /ローカル設定が/etc/sysconfig/clock/etc/default/rcSなどのレガシー設定と競合する場合に問題を引き起こす可能性があります。ディストリビューションのinitramfsは、 hwclockコマンドはインタラクティブにsysadminによって実行され、上書きされない限り/etc/adjtimeに従い、新しい設定を/etc/adjtimeに自動的に保存しますonly--utcまたは--localオプションが使用されます。

修正するには:

  • /etc/adjtime/etc/sysconfig/clock/etc/default/rcSまたは類似のレガシー設定が、ハードウェアクロックがUTCで実行されるか、現地時間で実行されるかについて一致していることを確認してください。
  • その後、initramfsファイルを更新して、初期の起動プロセスがシステムの他の部分と同じ設定を使用するようにします。

これを行わないと、各ブートで現在のUTCオフセットの量だけ正確にクロックがシフトするシステムが表示される場合があります。

これが再び発生するリスクを最小限に抑える必要がある場合は、ディストリビューションがレガシーUTC/localtime構成を「中立」に設定することをサポートしているかどうかを調査して、/etc/adjtimeがこの問題の唯一の真の情報源になるようにすることができます。通常、起動スクリプトはhwclockを介してのみハードウェアクロックにアクセスするため、レガシー構成は実際には不要な場合があります。

0
telcoM

システムのセットアップ方法によって異なります。通常、UnixはRTCがGMT/UTCであると想定し、システムはそのオフセット/タイムゾーンを認識しています...しかし、これはRTCがローカル時間であると想定している古いWindowsシステムと互換性がありません。マルチブートシステムで問題が発生します。したがって、/ etc/default/rcSには、システムがGMTまたは現地時間でRTCを使用するかどうかを示す設定があります(デフォルトではない後者が必要になる可能性があります)。

# assume that the BIOS clock is set to UTC time (recommended)
UTC=yes
0
xenoid