Raspberry Pi thiếu đồng hồ phần cứng. Làm cách nào để buộc NTPD cập nhật ngày / giờ ngay sau mỗi lần khởi động?
Tôi đang chạy Raspbian và Raspberry Pi được kết nối bằng cáp Ethernet .
Raspberry Pi thiếu đồng hồ phần cứng. Làm cách nào để buộc NTPD cập nhật ngày / giờ ngay sau mỗi lần khởi động?
Tôi đang chạy Raspbian và Raspberry Pi được kết nối bằng cáp Ethernet .
Câu trả lời:
Làm một apt-get install ntpdate
.
ntpdate
sẽ chạy khi giao diện Ethernet được đưa lên và đặt thời gian từ máy chủ ntp (xem /etc/default/ntpdate
).
Nếu ntpd
đang chạy, ntpdate sẽ không làm gì, tuy nhiên ntpdate
sẽ chạy trước khi ntpd
khởi động - vì vậy việc này sẽ diễn ra để đặt thời gian khi khởi động miễn là có kết nối Ethernet.
Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linux
cũng không có nó.
Nếu đồng hồ của bạn tắt, bạn có thể cần buộc ntp đồng bộ hóa bằng cách thực hiện:
sudo /etc/init.d/ntp stop
sudo ntpd -q -g
sudo /etc/init.d/ntp start
Sau khi tìm kiếm xung quanh, phương pháp này làm việc cho tôi. Như bạn đã biết, Raspberry Pi 3 có NTP bị tắt theo mặc định. Vì vậy, chỉ cần gõ này, hỗ trợ NTP sẽ được bật:
sudo timedatectl set-ntp True
Kiểm tra kết quả với timedatectl status
Trong trường hợp cảnh báo, bạn có thể phải chạy sudo timedatectl set-local-rtc true
quá.
Nếu bạn đặt Múi giờ trong raspi-config
Raspberry Pi sẽ tự động cập nhật thời gian khởi động, nếu được kết nối với internet.
sudo raspi-config
Internationalisation Options
I2 Change Timezone
Finish
Yes
để khởi động lại ngay bây giờI2 Change Timezone
tùy chọn không còn tồn tại nữa
Xem bài đăng trên diễn đàn Thời gian không đồng bộ hóa trên Pi 3 và với dongle chính thức .
ntpd phát ra các gói IP / UDP với trường ToS được đặt thành 0xc0. Vì vậy, nó khá giống với vấn đề khác mà tôi (và nhiều người khác) gặp phải với Raspberry Pi3 khi được vận hành qua giao diện bên trong Wi-Fi.
Như một giải pháp thay thế, thêm lệnh
/sbin/iptables -t mangle -I POSTROUTING 1 -o wlan0 -p udp --dport 123 -j TOS --set-tos 0x00
vào tập tin
/etc/rc.local
trước dòng thoát 0. Tiếp theo, khởi động lại và kiểm tra.
Nó đã được cập nhật thời gian. Máy chủ NTPD sẽ bắt đầu ngay sau tệp hoán đổi và trước SSHD.
Kiểm tra tệp /etc/ntp.conf của bạn để đảm bảo rằng nó được cấu hình.
Nó nên liệt kê ít nhất một máy chủ. Tôi sử dụng time.nrc.ca cho máy chủ của mình.
Trang hướng dẫn sử dụng cho ntp.conf có tại đây: http://linux.die.net/man/5/ntp.conf
Rasberry Pi của con trai tôi sẽ không cập nhật thời gian ra khỏi hộp và sau khi thử tất cả các đề xuất ở trên, tôi có thể lấy nó để cập nhật thủ công nhưng không tự động. Cuối cùng sau khi tìm kiếm ở nơi khác mà không thành công, tôi thấy rằng tệp ntp.conf đi kèm với Rasberry Pi có các dòng sau nhận xét:
#restrict 127.0.0.1
#restrict ::1
Tôi đã sử dụng
sudo nano /etc/ntp.conf
trong thiết bị đầu cuối để chỉnh sửa tệp ntp conf bây giờ là:
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
Điều đó đã giải quyết vấn đề cho chúng tôi. Nó cập nhật với cả WiFi và cáp ethernet. Tôi không biết liệu nó có cập nhật với WiFi mà không có thay đổi đối với RC.local được đề xuất ở trên không, vì khi tôi tìm thấy giải pháp ở trên tôi đã thực hiện thay đổi đó và tôi đã không hoàn tác nó.
Tôi tìm thấy timedatectl
ứng dụng để giúp tôi khi tôi gặp vấn đề tương tự. Nó được cài đặt theo mặc định và '--help' cung cấp một cái nhìn tổng quan khá tốt và đơn giản về cách sử dụng công cụ.
Lưu ý: đảm bảo múi giờ của bạn được đặt đúng, công cụ này cũng có thể làm được.
Đây là cách tiếp cận tôi đã thực hiện. Nhiều câu trả lời trong số này dường như chỉ ra những điều mà tôi không kiểm tra khi tôi nhìn vào hệ thống Raspian của mình:
$ 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"
Tôi không có gì xuất hiện trong các bản ghi chỉ ra rằng nó timedatectl
đang làm bất cứ điều gì, hoặc đó ntp
là đồng bộ hóa trên trạng thái lên của NIC hoặc NTPD thậm chí đã được cài đặt / định cấu hình.
Cuối cùng, tôi chỉ thêm nó vào /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..."
Và cài đặt ntp
:
$ sudo apt-get install ntp
Kết quả nào trong việc này /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.
Và ntpd cũng không tồn tại. Pi cuối cùng chắc chắn đạt được thời gian. (Tôi đang xem xét điều này vì các lọn tóc HTTPS của tôi không thành công mà không -k khi chạy trước đó)
apt-get install ntp
Bạn không cần sử dụng ntp để giải quyết vấn đề. Có một tập lệnh đọc ngày từ máy chủ và bạn chỉ cần đặt ngày là kết quả của tập lệnh đó (Raspberry Pi của bạn cần được kết nối với internet). Sau đó, bạn cần chạy lệnh đó khi khởi động.
Bước 1: Lấy ngày từ máy chủ.
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
Bước2: Chạy lệnh khi khởi động bằng cách thêm nó vào tệp /etc/rc.local
(Hoạt động trên Ubuntu 16.04).
sudo gedit /etc/rc.local
TÍN DỤNG: