実際のNTP同期なしでLinuxでNTPSynchronizedをyesに設定する方法は?
私はいくつかのプログラムをだましたいだけです。
]$ timedatectl show -p NTPSynchronized
NTPSynchronized=yes
答え1
D-Bus属性を参照する場合org.freedesktop.timedate1
、関連D-Busドキュメント説明する:
NTPSynchronized
カーネルが時刻を同期として報告するかどうかを示します(cfadjtimex(3)
)。TimeUSec
そして、RTCTimeUSec
システムとRTCに現在の時刻を表示します。この3つの属性の目的は、リモートクライアントがD-Busを介してこの情報にアクセスできるようにすることです。地域の顧客は情報に直接アクセスできます。
これは読み取り専用属性なので直接設定できません。ただし-S
、カーネルの同期状態はコマンドの/オプションを使用して変更できます(通常は別々のパッケージとしてインストールする必要があります)、D-Busプロパティはカーネルの状態を尊重する必要があります。--status
adjtimex
maxerror
いくつかのテストを経た後、時計を「偽の同期」状態に設定したとき、そしていくつかの合理的な値も設定する必要があることがわかりましたesterror
。この値がデフォルトの「非同期」値(16000000)の場合、両方のクロックについて)カーネルはすぐにステータスを「非同期」に戻します。たとえば、次のようになります。
adjtimex --status 0 --maxerror 50632 --esterror 438
時計が同期しているように見え、timedatectl
それを確認してください。
adjtimex --status 64 --maxerror 16000000 --esterror 16000000
同期していない状態に戻ります。
実際、D-Bus値は、NTPSynchronized
実際の状態値よりもエラー変数が最大値にあるかどうかに依存しているようです。
(ランタイムmaxerror
合計を使用してテストのために無効にして再起動しました。合理的な合計を使用すると、同期状態を偽にすることができます。)esterror
chronyd
chronyd
maxerror
esterror