Bagaimana cara memaksa NTPD untuk memperbarui tanggal / waktu setelah boot?

63

Raspberry Pi tidak memiliki jam perangkat keras. Bagaimana saya memaksa NTPD untuk memperbarui tanggal / waktu segera setelah setiap boot?

Saya menjalankan Raspbian dan Raspberry Pi terhubung menggunakan kabel Ethernet .

Alessandro Da Rugna
sumber
Milik saya sudah melakukan itu di luar kotak. Disto apa yang Anda gunakan?
Gerben
Raspbian Wheezy
Alessandro Da Rugna
bekerja apa adanya, entah bagaimana
lenik
1
@Thorb Pi terhubung dengan kabel ethernet / dhcp. Ini sama sekali tidak mendapatkan tanggal yang valid setelah booting, butuh waktu (10 hingga 45 menit)
Alessandro Da Rugna
1
Ini akan melakukannya secara otomatis, setelah beberapa menit. Pastikan Anda telah menyetelnya untuk menggunakan Jam Master di National Bureau of Standards, time.nist.gov seperti yang dijelaskan di sini: raspberrypi.stackexchange.com/questions/68811/…
SDsolar

Jawaban:

40

Lakukan apt-get install ntpdate.

ntpdateakan berjalan ketika antarmuka Ethernet ditampilkan, dan mengatur waktu dari server ntp (lihat /etc/default/ntpdate).

Jika ntpdsedang berjalan, ntpdate tidak akan melakukan apa-apa, namun ntpdateakan berjalan sebelum ntpdsaat bootup - jadi ini akan berfungsi untuk mengatur waktu saat booting selama ada koneksi Ethernet.

tidak
sumber
stock Raspbian sudah memiliki semua ini.
scruss
7
@scruss punyaku tidak. (2013-02-09 wheezy rasbian)
Pete Kirkham
1
Milik saya juga tidak, harus melakukannya secara manual.
vaindil
Jika diatur dengan benar, itu akan melakukannya secara otomatis - walaupun mungkin perlu beberapa menit.
SDsolar
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linuxtidak memilikinya juga.
emix
36

Jika jam Anda mati, Anda mungkin perlu memaksa ntp untuk menyinkronkan dengan melakukan:

sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start
thaspius
sumber
1
Ia mengembalikan kesalahan "sudo: ntpd: command not found"
Pygmalion
1
ntpd harus diinstal untuk menggunakan perintah
thaspius
3
Hal ini diinstal, saya tidak bodoh :)
Pygmalion
Bisakah Anda mengunjungi raspberrypi.stackexchange.com/questions/47542/… ? Saya telah memposting detail di sana.
Pygmalion
3
Ini benar-benar solusi untuk masalah saya, tetapi saya menemukan ini bersifat sementara sampai saya reboot. Akhirnya saya menemukan kesalahan dalam shutdown yang tidak dapat memperbarui jam karena jam jam memiliki tanggal masa depan (tidak tahu bagaimana itu terjadi). Tetapi solusinya adalah kekuatan pembaruan jam. Itu memaksa pembaruan ke jam perangkat keras palsu dan kemudian pada saat boot waktu setidaknya sudah dekat dengan saat ini sehingga ntp dapat melakukan pekerjaannya secara normal.
Piwaf
34

Setelah mencari-cari, metode ini berhasil untuk saya. Seperti yang Anda tahu, Raspberry Pi 3 memiliki NTP dinonaktifkan secara default. Jadi dengan hanya mengetik ini, dukungan NTP akan diaktifkan:

sudo timedatectl set-ntp True

Periksa hasil dengan timedatectl status

Dalam hal peringatan, Anda mungkin harus lari sudo timedatectl set-local-rtc truejuga.

Ariyankj
sumber
Terima kasih, ini akhirnya membantu saya, dan tampaknya menjadi cara yang tepat, terlepas dari jawaban sebelumnya.
CharlieS
1
Itu jawaban terbaik, banyak membantu saya. Anda dapat menggunakan 'sudo' untuk menghindari mengetik kata sandi Anda (berguna untuk skrip yang menjalankannya). Apa tujuan dari perintah detik? set-local-rtc
Arad
12

Jika Anda mengatur Zona Waktu di raspi-configRaspberry Pi akan secara otomatis memperbarui waktu saat boot, jika terhubung ke internet.

  1. sudo raspi-config
  2. Pilih Internationalisation Options
  3. Pilih I2 Change Timezone
  4. Pilih Area Geografis Anda
  5. Pilih Kota terdekat Anda
  6. Pilih Finish
  7. Pilih Yesuntuk reboot sekarang
mwd27
sumber
ini bekerja dengan baik untuk saya
AlexG
I2 Change Timezonetidak ada lagi
mrded
12

Lihat posting forum Waktu tidak disinkronkan pada Pi 3 dan dengan dongle resmi .

ntpd memancarkan paket IP / UDP dengan bidang ToS diatur ke 0xc0. Jadi itu sangat mirip dengan masalah lain yang saya (dan banyak lainnya) miliki dengan Raspberry Pi3 ketika dioperasikan melalui antarmuka internal Wi-Fi.

Sebagai solusinya, tambahkan perintah

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

ke file

/etc/rc.local

sebelum garis 0 keluar. Selanjutnya, reboot dan periksa.

Pradeep
sumber
1
Saya memiliki masalah yang sama dengan saya menginstal RPi3 yang saya dapatkan untuk XMas, dan Anda memecahkan masalah saya. Bagus !!!
jfmessier
8

Seharusnya sudah memperbarui waktu. Server NTPD harus dimulai tepat setelah file swap dan sebelum SSHD.

Periksa file /etc/ntp.conf Anda untuk memastikannya dikonfigurasi.

Seharusnya daftar setidaknya satu server. Saya menggunakan time.nrc.ca untuk server saya.

Halaman manual untuk ntp.conf ada di sini: http://linux.die.net/man/5/ntp.conf

Rod MacPherson
sumber
3

Rasberry Pi anak saya tidak akan memperbarui waktu di luar kotak dan setelah mencoba semua saran di atas saya bisa mendapatkannya untuk memperbarui secara manual tetapi tidak secara otomatis. Akhirnya setelah mencari di tempat lain juga tanpa keberhasilan, saya menemukan bahwa file ntp.conf yang datang dengan Rasberry Pi memiliki baris berikut sebagai berikut:

#restrict 127.0.0.1
#restrict ::1

Saya menggunakan

sudo nano /etc/ntp.conf

di terminal untuk mengedit file ntp conf sekarang menjadi:

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

Itu memecahkan masalah bagi kami. Ini memperbarui dengan WiFi dan kabel ethernet. Saya tidak tahu apakah itu akan diperbarui dengan WiFi tanpa perubahan ke rc.local yang disarankan di atas, karena pada saat saya menemukan solusi di atas saya sudah membuat perubahan itu dan saya belum membatalkannya.

deLabe
sumber
2

Saya menemukan timedatectlaplikasi untuk membantu saya ketika saya mengalami masalah serupa. Itu diinstal secara default dan '--help' memberikan gambaran yang cukup bagus dan sederhana tentang cara menggunakan alat ini.

Catatan: pastikan zona waktu Anda diatur dengan benar, yang dapat dilakukan alat ini juga.

adam pendeta
sumber
1

Inilah pendekatan yang akhirnya saya ambil. Banyak dari jawaban ini tampaknya menunjukkan hal-hal yang tidak cocok ketika saya melihat sistem Raspian saya:

$ 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"

Saya tidak memiliki apa pun yang muncul di log yang menunjukkan bahwa timedatectlsedang melakukan sesuatu, atau yang ntpsedang disinkronkan pada status NIC, atau NTPD bahkan diinstal / dikonfigurasi.

Pada akhirnya saya hanya menambahkan ini ke /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..."

Dan diinstal ntp:

$ sudo apt-get install ntp

Yang menghasilkan ini dalam /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 [email protected] 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 [email protected] 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...
slm
sumber
Tidak bekerja pada raspbian minimal: Failed to start ntp.service: Unit ntp.service not found.Dan ntpd juga tidak ada. Pi pasti akhirnya mendapatkan waktu. (Saya melihat ini karena ikal HTTPS saya gagal tanpa -k ketika dijalankan sebelum itu)
Steven Lu
@StevenLu - Saya akan memperbarui A'er untuk memasukkan instalasi ntp juga.
slm
@StevenLu -apt-get install ntp
slm
1

Anda tidak perlu menggunakan ntp untuk menyelesaikan masalah. Ada skrip yang membaca tanggal dari server dan Anda hanya perlu mengatur tanggal untuk menjadi hasil skrip tersebut (Raspberry Pi Anda harus terhubung ke internet). Kemudian, Anda perlu menjalankan perintah itu saat startup.

Langkah1: Ambil tanggal dari server.

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

Langkah2: Jalankan perintah saat startup dengan menambahkannya ke file /etc/rc.local(Bekerja pada Ubuntu 16.04).

sudo gedit /etc/rc.local

KREDIT:

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

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

Amjad Abujamous
sumber
0

Saya menggunakan yang berikut ini pada gambar default untuk menyinkronkan waktu tanpa menginstal paket tambahan:

timedatectl set-local-rtc 0
timedatectl set-ntp 1
timedatectl status
Wu Haa
sumber