크로니를 시작한 후 참조 시계를 읽는 데 몇 분이 걸립니다.

크로니를 시작한 후 참조 시계를 읽는 데 몇 분이 걸립니다.

/dev/serial0NMEA 문장 과 PPS(Pulse Per Second) 신호를 보내는 UBLOX GNSS 모듈을 통해 인터넷 없이 Raspberry Pi 4에 정확한 시간을 제공하고 싶습니다 /dev/pps0.

이 모든 정보는 출시 즉시 도착하며 전달 gpsmon -n및 검증 됩니다 sudo ppscheck /dev/pps0. 그러나 chrony정보를 얻는 데는 몇 분이 걸립니다.

콘텐츠 생성을 사용하여 chrony이를 구성했습니다 ./etc/chrony/conf.d/gps.conf

refclock SHM 0 refid NMEA offset 0.1 precision 0.2 poll 0
refclock PPS /dev/pps0 refid PPS lock NMEA poll 0 trust prefer
log refclocks

나는 구성 파일의 옵션(지연, 오프셋, 정밀도, 신뢰, 선택 안 함, 기본 설정 및 잠금)을 사용하여 많은 실험을 했지만 소용이 없었습니다.

나는 /etc/chrony/chrony.conf원래 모습을 남겼습니다.

# Welcome to the chrony configuration file. See chrony.conf(5) for more
# information about usable directives.

# Include configuration files found in /etc/chrony/conf.d.
confdir /etc/chrony/conf.d

# Use Debian vendor zone.
pool 2.debian.pool.ntp.org iburst

# Use time sources from DHCP.
sourcedir /run/chrony-dhcp

# Use NTP sources found in /etc/chrony/sources.d.
sourcedir /etc/chrony/sources.d

# This directive specify the location of the file containing ID/key pairs for
# NTP authentication.
keyfile /etc/chrony/chrony.keys

# This directive specify the file into which chronyd will store the rate
# information.
driftfile /var/lib/chrony/chrony.drift

# Save NTS keys and cookies.
ntsdumpdir /var/lib/chrony

# Uncomment the following line to turn logging on.
#log tracking measurements statistics

# Log files location.
logdir /var/log/chrony

# Stop bad estimates upsetting machine clock.
maxupdateskew 100.0

# This directive enables kernel synchronisation (every 11 minutes) of the
# real-time clock. Note that it can’t be used along with the 'rtcfile' directive.
rtcsync

# Step the system clock instead of slewing it if the adjustment is larger than
# one second, but only in the first three clock updates.
makestep 1 3

# Get TAI-UTC offset and leap seconds from the system tz database.
# This directive must be commented out when using time sources serving
# leap-smeared time.
leapsectz right/UTC

문제는 재부팅 후 PPS에서 데이터를 chrony수신할 수 없다는 것 입니다. (열에 하이픈이 표시됩니다 .) 및 (업데이트 없음)을 gpsd실행하여 이를 확인했습니다 .chronyc sourcesLastRxsudo tail -f /var/log/chrony/refclocks.log

몇 분 후(5~20분) chrony는 gpsdPPS에서 시간을 가져오기 시작하고 몇 초 후에 시스템 시간을 업데이트합니다(이전 단락에서 설명한 것과 동일한 방식으로 확인됨). 때로는 상황에 따라 다르며 chrony시간을 확보한 후 PPS를 읽는 데 몇 분이 추가로 소요됩니다 gpsd. 여러 번 재부팅을 시도했지만 결과는 항상 동일합니다. GNSS 모듈의 데이터는 즉시 입력되며 시작 gpsmon -n시 즉시 액세스할 수 있습니다 ppscheck.그렇다면 chrony동일한 정보를 얻는 데 왜 5분 이상 걸리나요?

그런데 시스템 시간을 재설정한 후에는 sudo date +%T -s "12:00:00"문제 sudo systemctl reastart chrony가 없습니다. chrony시스템 시간은 몇 초 내에 업데이트됩니다.

내가 문제를 해결하려고 시도한 것 중 하나는 running 이었습니다 sudo ntpshmmon. 부팅 시 NTP2 및 NTP3 샘플이 표시되었지만 NTP0 샘플은 chrony가 참조 시계에 연결되기 시작할 때만 표시되었습니다. 이렇게 하면 원인을 좁히는 데 도움이 되지만 거기서부터 디버깅을 계속하는 방법을 모르겠습니다.

이 질문은 다음에서 수정되었습니다.Raspberry Pi 스택 교환에 대한 질문.

관련 정보