NTP同期なしでLinuxでNTP同期をYesに設定するには?

NTP同期なしでLinuxでNTP同期をYesに設定するには?

実際のNTP同期なしでLinuxでNTPSynchronizedをyesに設定する方法は?

私はいくつかのプログラムをだましたいだけです。

]$ timedatectl show -p NTPSynchronized
NTPSynchronized=yes

答え1

D-Bus属性を参照する場合org.freedesktop.timedate1関連D-Busドキュメント説明する:

NTPSynchronizedカーネルが時刻を同期として報告するかどうかを示します(cf adjtimex(3))。TimeUSecそして、RTCTimeUSecシステムとRTCに現在の時刻を表示します。この3つの属性の目的は、リモートクライアントがD-Busを介してこの情報にアクセスできるようにすることです。地域の顧客は情報に直接アクセスできます。

これは読み取り専用属性なので直接設定できません。ただし-S、カーネルの同期状態はコマンドの/オプションを使用して変更できます(通常は別々のパッケージとしてインストールする必要があります)、D-Busプロパティはカーネルの状態を尊重する必要があります。--statusadjtimex

maxerrorいくつかのテストを経た後、時計を「偽の同期」状態に設定したとき、そしていくつかの合理的な値も設定する必要があることがわかりましたesterror。この値がデフォルトの「非同期」値(16000000)の場合、両方のクロックについて)カーネルはすぐにステータスを「非同期」に戻します。たとえば、次のようになります。

adjtimex --status 0 --maxerror 50632 --esterror 438

時計が同期しているように見え、timedatectlそれを確認してください。

adjtimex --status 64 --maxerror 16000000 --esterror 16000000

同期していない状態に戻ります。

実際、D-Bus値は、NTPSynchronized実際の状態値よりもエラー変数が最大値にあるかどうかに依存しているようです。

(ランタイムmaxerror合計を使用してテストのために無効にして再起動しました。合理的な合計を使用すると、同期状態を偽にすることができます。)esterrorchronydchronydmaxerroresterror

関連情報