NTP 동기화 없이 Linux에서 NTP 동기화를 예로 설정하는 방법은 무엇입니까?

NTP 동기화 없이 Linux에서 NTP 동기화를 예로 설정하는 방법은 무엇입니까?

실제 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에 현재 시간을 표시합니다. 이 세 가지 속성의 목적은 원격 클라이언트가 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

관련 정보