opkg install ntp-systemd
systemctl enable ntpdate.service
systemctl enable ntpd.service
편집는 /etc/ntp.conf 다음과 같은 라인을 주석 (존재하지 않는 하드웨어 클럭에 아무런 대체를하고 ntpdate를 서비스가 "ntpd가 -q"명령을 사용하기 때문에)
#server 127.127.1.0
#fudge 127.127.1.0 stratum 14
두가 서비스가 설치됩니다
/lib/systemd/system/ntpd.service :
[Unit]
Description=Network Time Service
After=network.target
[Service]
Type=forking
PIDFile=/run/ntpd.pid
ExecStart=/usr/bin/ntpd -p /run/ntpd.pid
,
/lib/systemd/system/ntpdate.service : 네트워크 (= network.target 후)까지 후
[Unit]
Description=Network Time Service (one-shot ntpdate mode)
Before=ntpd.service
[Service]
Type=oneshot
ExecStart=/usr/bin/ntpd -q -g -x
RemainAfterExit=yes
NTPD 시작되어, 날짜가 연속적으로 동기화되어야한다. 그러나 NTPD 맨 페이지에서 설명하고있다 :
대부분의 운영 체제와 오늘날의 하드웨어는 전원이 꺼져있을 때 기간 동안 시간을 유지하기 위해 시간의 년 (TOY) 칩을 통합합니다. 컴퓨터가 부팅되면 칩을 사용하여 운영 체제 시간을 초기화합니다. 시스템에 NTP 서버에 동기화 된 이 있으면 운영 체제에서 칩을 수시로 수정합니다. 어떤 TOY 칩이 없거나 어떤 이유에서든 서버 시간에서 시간이 1000 초를 초과하면 ntpd는 이 끔찍하고 틀린 것으로 가정하고 운영자가 시계를 손으로 직접 설정하고 설정할 수 있습니다. 그러면 시스템 로그에 패닉 메시지와 함께 ntpd가 종료됩니다. -g 옵션은 이 검사를 무시하고 칩 시간에 관계없이 시계가 서버 시간으로 설정됩니다.그러나 깨진 하드웨어 (예 : )가 CMOS 배터리가 고장 나거나 클럭 카운터에 결함이있는 경우를 대비하여 시계가 설정되면 1000 초를 초과하면 오류가 발생하여 ntpd가 종료됩니다.
그래서 우리는 NTPD를 시작하기 전에 날짜를 설정해야하고이 ntpd.service을 시작하기 전에 "ntpd가 -q -g -x"실행하여 ntpdate를 서비스에 의해 수행된다. NTPD 사람 페이지에서
:
그냥 클럭이 설정되어 처음으로 후 ntpd가 종료 -q. 이 동작은 폐기 될 ntpdate 프로그램의 동작을 모방합니다. -g 및 -x 옵션을이 옵션과 함께 사용할 수 있습니다. 참고 :이 옵션을 사용하면 커널 시간 규율이 비활성화됩니다.
Beaglebone에 설치하는 또 다른 서비스가 날짜와 상호 작용
/시간
timestamp.service
[Unit]
Description=Timestamping service
ConditionPathExists=/etc/timestamp
After=remount-rootfs.service
[Service]
RemainAfterExit=yes
ExecStart=/usr/bin/load-timestamp.sh
ExecStop=/usr/bin/load-timestamp.sh --save
을/etc/타임 스탬프에서 현재 타임 스탬프가 멈췄이 서비스 저장소와 시작될 때의 타임 스탬프에서 날짜를 설정하십시오. 따라서 ntpd가 설치되어 있지 않으면 수동으로 날짜를 설정하고 비글 본을 다시 부팅하면 날짜가 부팅 시간보다 뒤쳐집니다.
안녕하세요, 업데이트 해 주셔서 감사합니다. 그럼 조금 설명 할 수 있니? 얼마나 자주 업데이트됩니까? 인터넷을 사용할 수 있고 업데이트를 한 후 전원 공급시 항상 올바르게 작동합니까?/usr/bin/ntpdate -b -s -u pool.ntp.org를 실행하는 크론 작업이 여전히 필요합니까? – Eradicatore
안녕 Eradicatore. 늦게 답변을 드려 죄송합니다. 첫 번째 답변을 올린 직후 Beaglebone을 파괴했으며 새 것으로 바뀌 었습니다. 더 많은 설명으로 답변을 업데이트했습니다. 더 이상 ntpdate로 cron 작업이 필요하지 않습니다.이 작업은 ntpd로 대체됩니다. ntpd는 계속 실행되며 네트워크가 가동되면 부팅 할 때마다 대기합니다. Beaglebone에는 배터리가있는 실시간 시계가 없으므로 ntpdate.service (ntpd -q에 의존하고 ntpdate에 의존하지 않음)가 필요합니다. – MathieuLescure