부팅 후 NTPD가 날짜 / 시간을 업데이트하도록하는 방법은 무엇입니까?


63

라즈베리 파이에는 하드웨어 시계가 없습니다. 부팅 할 때마다 NTPD가 날짜 / 시간을 업데이트하도록하려면 어떻게해야합니까?

Raspbian을 실행 중이고 Raspberry Pi가 이더넷 케이블을 사용하여 연결되어 있습니다.


광산은 이미 그것을 즉시 사용합니다. 어떤 디스토를 사용하고 있습니까?
Gerben

Raspbian Wheezy
Alessandro Da Rugna

어떻게 든 그대로 작동
lenik

1
@Thorb Pi는 이더넷 케이블 / dhcp에 연결되어 있습니다. 그것은 단순히 부팅 후 유효한 날짜를하지 않습니다, 그것은 잠시 (10 ~ 45 분) 소요
알레산드로 다 Rugna

1
몇 분 후에 자동으로 수행됩니다. 여기에 설명 된대로 국립 표준 국, time.nist.gov에서 마스터 클럭을 사용하도록 설정했는지 될 : raspberrypi.stackexchange.com/questions/68811/...
SDsolar

답변:


40

을 수행하십시오 apt-get install ntpdate.

ntpdate이더넷 인터페이스가 시작되면 실행되며 ntp 서버에서 시간을 설정합니다 (참조 /etc/default/ntpdate).

경우 ntpd실행, ntpdate를가 아무것도하지 않을 것이다, 그러나 ntpdate이전에 실행됩니다 ntpd부팅시 - 그래서 이것은 한 이더넷 연결을 거기로 부팅 시간을 설정하기 위해 해결해야한다.


라즈 비안은이 모든 것을 이미 가지고있을 것입니다.
scruss

7
@scruss 광산은하지 않았다. (2013-02-09 wheezy rasbian)
Pete Kirkham

1
광산도하지 않았으며 수동으로해야했습니다.
vaindil

올바르게 설정되면 몇 분 정도 걸릴 수 있지만 자동으로 수행됩니다.
SDsolar

Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linux그것도 없었습니다.
emix

36

시계가 꺼져 있으면 다음을 수행하여 ntp를 강제로 동기화해야 할 수 있습니다.

sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start

1
"sudo : ntpd : command not found"오류를 반환합니다.
Pygmalion

1
명령을 사용하려면 ntpd를 설치해야합니다
thaspius

3
그것은 됩니다 :) 내가 그 무지하지 않다, 설치
피그말리온

raspberrypi.stackexchange.com/questions/47542/… 를 방문해 주 시겠습니까? 나는 거기에 세부 사항을 게시했습니다.
피그말리온

3
이것은 절대적으로 내 문제에 대한 해결책이지만 재부팅 할 때까지 일시적인 것으로 나타났습니다. 결국 셧다운에서 hwclock에 미래 날짜가 있었기 때문에 hwclock을 업데이트 할 수 없다는 오류가 발생했습니다 (어떻게 일어 났는지 전혀 알 수 없음). 그러나 해결책은 hwclock 업데이트 힘이었습니다. 그것은 가짜 하드웨어 시계로의 업데이트를 강요했으며 부팅시 ntp가 정상적으로 작동 할 수 있도록 적어도 현재 시간에 가깝습니다.
Piwaf

34

주변을 검색 한 후이 방법이 효과적이었습니다. 아시다시피 Raspberry Pi 3에는 기본적으로 NTP가 비활성화되어 있습니다. 따라서 이것을 입력하면 NTP 지원이 활성화됩니다.

sudo timedatectl set-ntp True

로 결과 확인 timedatectl status

경고가 발생하는 경우 sudo timedatectl set-local-rtc true에도 실행해야 할 수 있습니다 .


감사합니다. 이것은 마침내 나를 도왔으며 이전 답변에도 불구하고 올바른 방법 인 것 같습니다.
CharlieS 2016 년

1
그게 가장 좋은 대답입니다. 'sudo'를 사용하여 비밀번호를 입력하지 않도록 할 수 있습니다 (암호를 실행하는 스크립트에 유용함). seconds 명령의 목적은 무엇입니까? set-local-rtc
Arad

12

raspi-config인터넷에 연결된 경우 Raspberry Pi 에서 시간대를 설정하면 부팅시 시간이 자동으로 업데이트됩니다.

  1. sudo raspi-config
  2. 고르다 Internationalisation Options
  3. 고르다 I2 Change Timezone
  4. 지역을 선택하십시오
  5. 가장 가까운 도시를 선택하십시오
  6. 고르다 Finish
  7. Yes지금 재부팅하려면 선택하십시오

이것은 나를 위해 잘 작동했다
AlexG

I2 Change Timezone옵션이 더 이상 존재하지 않습니다
mrded

12

포럼 게시물 참조 시간이 Pi 3 및 공식 dongle과 동기화되지 않습니다 .

ntpd 는 ToS 필드가 0xc0으로 설정된 IP / UDP 패킷을 방출합니다. Wi-Fi 내부 인터페이스를 통해 Raspberry Pi3에서 발생하는 다른 문제와 상당히 유사합니다.

해결 방법으로 다음 명령을 추가하십시오.

/sbin/iptables -t mangle -I POSTROUTING 1 -o wlan0 -p udp --dport 123 -j TOS --set-tos 0x00

파일로

/etc/rc.local

출구 0 줄 전에. 다음으로 재부팅하고 확인하십시오.


1
XMas 용 RPi3을 설치 한 것과 동일한 문제가 발생하여 문제를 해결했습니다. 대박 !!!
jfmessier

8

이미 시간을 업데이트해야합니다. NTPD 서버는 스왑 파일 직후와 SSHD 전에 시작해야합니다.

/etc/ntp.conf 파일이 구성되어 있는지 확인하십시오.

하나 이상의 서버를 나열해야합니다. 내 서버에 time.nrc.ca를 사용합니다.

ntp.conf의 매뉴얼 페이지는 다음과 같습니다 : http://linux.die.net/man/5/ntp.conf


3

내 아들의 Rasberry Pi는 기본 시간을 업데이트하지 않았으며 위의 모든 제안을 시도한 후에 수동으로 업데이트하지만 자동으로 업데이트하지는 못했습니다. 마지막으로 성공하지 않고 다른 곳을 살펴본 후 Rasberry Pi와 함께 제공된 ntp.conf 파일에 다음 줄이 주석 처리되어 있음을 발견했습니다.

#restrict 127.0.0.1
#restrict ::1

나는 사용했다

sudo nano /etc/ntp.conf

터미널에서 ntp conf 파일을 다음과 같이 편집하십시오.

# Local users may interrogate the ntp server more closely. 
restrict 127.0.0.1
restrict ::1

그것은 우리에게 문제를 해결했습니다. WiFi와 이더넷 케이블로 모두 업데이트됩니다. 위의 솔루션을 찾은 시점에서 이미 해당 변경 사항을 찾았으며 실행 취소하지 않았으므로 위에서 제안한 rc.local로 변경하지 않고 WiFi로 업데이트할지 여부는 알 수 없습니다.


2

timedatectl비슷한 문제가 발생했을 때 도움이 되는 응용 프로그램을 찾았습니다 . 기본적으로 설치되며 '--help'는 도구 사용법에 대한 아주 훌륭하고 간단한 개요를 제공합니다.

참고 : 시간대가 올바르게 설정되어 있는지 확인하십시오.이 도구도 가능합니다.


1

이것이 내가 취하는 접근법입니다. 이 답변 중 많은 부분이 내 Raspian 시스템을 볼 때 확인하지 않은 것을 나타냅니다.

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

로그에 아무것도 표시되지 않았 timedatectl거나 ntpNIC의 작동 상태와 동기화 중이거나 NTPD가 설치 / 구성되어 있음을 나타내는 내용이 없습니다 .

결국 나는 이것을 내 것에 추가했다 /etc/rc.local.

$ cat /etc/rc.local
logger "Beginning force syncing NTP..."
service ntp stop
ntpd -gq
service ntp start
logger "Finished force syncing NTP..."

그리고 설치 ntp:

$ sudo apt-get install ntp

결과는 다음과 /var/log/syslog같습니다.

Aug  5 09:10:20 pi-hole ntp[526]: Starting NTP server: ntpd.
Aug  5 09:10:20 pi-hole ntpd[555]: proto: precision = 1.458 usec (-19)
Aug  5 09:10:20 pi-hole ntpd[555]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:20 pi-hole ntpd[555]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:21 pi-hole ntpd[555]: ntpd exiting on signal 15 (Terminated)
Aug  5 09:10:21 pi-hole ntp[661]: Stopping NTP server: ntpd.
Aug  5 09:10:21 pi-hole ntpd[674]: ntpd 4.2.8p10@1.3728-o Sat Mar 10 18:03:33 UTC 2018 (1): Starting
Aug  5 09:10:21 pi-hole ntpd[674]: Command line: ntpd -gq
Aug  5 09:10:21 pi-hole ntpd[674]: proto: precision = 0.625 usec (-21)
Aug  5 09:10:21 pi-hole ntpd[674]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:21 pi-hole ntpd[674]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:34 pi-hole ntpd[674]: Soliciting pool server 198.98.57.16
Aug  5 09:10:35 pi-hole ntpd[674]: Soliciting pool server 74.82.59.149
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 23.131.160.7
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 52.37.26.163
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 204.2.134.163
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 96.126.100.203
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 199.223.248.101
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 66.228.42.59
Aug  5 09:10:36 pi-hole ntpd[674]: Soliciting pool server 208.75.89.4
Aug  5 09:10:37 pi-hole ntpd[674]: Soliciting pool server 204.2.134.164
Aug  5 09:10:37 pi-hole ntpd[674]: Soliciting pool server 104.236.116.147
Aug  5 09:10:38 pi-hole ntpd[674]: Soliciting pool server 204.9.54.119
Aug  5 09:10:48 pi-hole ntpd[674]: ntpd: time set +6.769186 s
Aug  5 09:10:49 pi-hole ntpd[853]: ntpd 4.2.8p10@1.3728-o Sat Mar 10 18:03:33 UTC 2018 (1): Starting
Aug  5 09:10:49 pi-hole ntpd[853]: Command line: /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 111:114
Aug  5 09:10:49 pi-hole ntp[844]: Starting NTP server: ntpd.
Aug  5 09:10:49 pi-hole ntpd[856]: proto: precision = 0.625 usec (-21)
Aug  5 09:10:49 pi-hole ntpd[856]: Listen and drop on 0 v6wildcard [::]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen and drop on 1 v4wildcard 0.0.0.0:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 2 lo 127.0.0.1:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 3 eth0 192.168.1.85:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 4 lo [::1]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listen normally on 5 eth0 [fe80::f5ea:7663:4ec:784d%2]:123
Aug  5 09:10:49 pi-hole ntpd[856]: Listening on routing socket on fd #22 for interface updates
Aug  5 09:10:49 pi-hole root: Finished force syncing NTP...

최소한의 라즈 비아에서는 작동 Failed to start ntp.service: Unit ntp.service not found.하지 않습니다 : 그리고 ntpd도 존재하지 않습니다. 파이는 결국 시간을 얻습니다. (이전에 실행하면 HTTPS 컬이 -k없이 실패하기 때문에이 문제를 조사하고 있습니다)
Steven Lu

@StevenLu-ntp 설치도 포함하도록 A'er를 업데이트합니다.
slm

@StevenLu -apt-get install ntp
SLM

1

이 문제를 해결하기 위해 ntp를 사용할 필요는 없습니다. 서버에서 날짜를 읽는 스크립트가 있으며 날짜는 해당 스크립트의 결과로만 설정하면됩니다 (Raspberry Pi는 인터넷에 연결되어 있어야 함). 그런 다음 시작할 때 해당 명령을 실행해야합니다.

1 단계 : 서버에서 날짜를 검색합니다.

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

2 단계 : 시작시 명령을 파일에 추가하여 명령을 실행합니다 /etc/rc.local(Ubuntu 16.04에서 작업).

sudo gedit /etc/rc.local

크레딧 :

1- https://askubuntu.com/a/655528/572294

2- https://askubuntu.com/a/1199/572294


0

추가 패키지를 설치하지 않고 시간을 동기화하기 위해 기본 이미지에서 다음을 사용합니다.

timedatectl set-local-rtc 0
timedatectl set-ntp 1
timedatectl status
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.