Як змусити NTPD оновлювати дату / час після завантаження?


63

У Raspberry Pi бракує апаратного годинника. Як змусити NTPD оновлювати дату / час відразу після кожного завантаження?

Я запускаю Raspbian, і Raspberry Pi підключається за допомогою кабелю Ethernet .


Моя вже робить це поза коробкою. Що disto ти використовуєш?
Гербен


працює як є, якось
lenik

1
@Thorb Pi підключено за допомогою Ethernet-кабелю / dhcp. Він просто не отримує дійсної дати після завантаження, потребує певного часу (від 10 до 45 хвилин)
Алессандро Да Рунья

1
Це зробить автоматично, через пару хвилин. Переконайтеся , що ви встановили його використовувати Master Clock в Національному бюро стандартів, time.nist.gov , як описано тут: raspberrypi.stackexchange.com/questions/68811 / ...
SDsolar

Відповіді:


40

Зробіть apt-get install ntpdate.

ntpdateзапуститься, коли підключено інтерфейс Ethernet, і встановить час з ntp-сервера (див. /etc/default/ntpdate).

Якщо ntpdзапущено, ntpdate нічого не зробить, однак ntpdateзапуститься до ntpdзавантаження - тому це повинно працювати для встановлення часу на завантаженні до тих пір, поки є з'єднання Ethernet.


запас Raspbian буде мати все це вже.
scruss

7
@scruss мій не став. (2013-02-09 wheezy rasbian)
Піт Кіркхем,

1
Мої теж не зробили, довелося це робити вручну.
vaindil

Якщо він налаштований правильно, він зробить це автоматично - хоча це може зайняти кілька хвилин.
SDsolar

Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linuxйого теж не було.
емікс

36

Якщо ваш годинник вимкнений, можливо, вам доведеться змусити ntp синхронізуватися, виконавши:

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

1
Він повертає помилку "sudo: ntpd: команда не знайдена"
Pygmalion

1
ntpd повинен бути встановлений для використання команди
thaspius

3
Він буде встановлений, я не те, що неосвічені :)
Пігмаліон

Чи можете ви відвідати raspberrypi.stackexchange.com/questions/47542/… ? Я розмістив там деталі.
Пігмаліон

3
Це було абсолютно вирішенням моєї проблеми, але я визнав її тимчасовою, поки не перезавантажився. Врешті-решт я виявив помилку при відключенні, що він не міг оновити годинник, оскільки годинник hw мав майбутню дату (не знаю, як це сталося). Але рішення було силою оновлення годинника. Це змусило оновити підроблений апаратний годинник, а потім під час завантаження час було принаймні близьким до поточного, щоб ntp міг нормально виконувати свою роботу.
Піваф

34

Після обшуку цей метод спрацював для мене. Як відомо, Raspberry Pi 3 має відключений NTP за замовчуванням. Отже, просто ввівши це, буде включена підтримка NTP:

sudo timedatectl set-ntp True

Перевірте результат за допомогою timedatectl status

У разі попередження, можливо, вам доведеться також бігти sudo timedatectl set-local-rtc true.


Дякую, це нарешті допомогло мені вийти, і, здається, це є правильним шляхом, незважаючи на попередні відповіді.
CharlieS

1
Це найкраща відповідь, мені дуже допомогли. Ви можете використовувати "sudo", щоб увести свій пароль (корисно для сценаріїв, якими він працює). Яке призначення команди секунд? set-local-rtc
Арад

12

Якщо встановити часовий пояс у raspi-configRaspberry 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 та з офіційним ключем .

ntpd випускає пакети IP / UDP з полем ToS, встановленим на 0xc0. Таким чином, це досить схоже на інший випуск, який у мене (і багато інших) у Raspberry Pi3, коли він працює через внутрішній інтерфейс Wi-Fi.

Як вирішення, додайте команду

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

до файлу

/etc/rc.local

до виходу 0 рядок. Далі перезавантажте та перевірте.


1
У мене була та сама проблема, що я встановив RPi3, який я отримав для XMas, і ви вирішили мою проблему. Чудово !!!
jfmessier

8

Це вже повинно бути оновленням часу. Сервер NTPD повинен запускатися відразу після файлу підкачки та перед SSHD.

Перевірте файл /etc/ntp.conf, щоб переконатися, що він налаштований.

На ньому має бути вказаний принаймні один сервер. Я використовую time.nrc.ca для свого сервера.

Сторінка керівництва для ntp.conf знаходиться тут: http://linux.die.net/man/5/ntp.conf


3

Rasberry Pi мого сина не оновлював би час з коробки, і, випробувавши всі вищенаведені пропозиції, я міг би його оновити вручну, але не автоматично. Нарешті, невдало подивившись в інше місце, я виявив, що у файлі ntp.conf, який постачався разом із Rasberry Pi, були прокоментовані наступні рядки:

#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, так і через кабель Ethernet. Я не знаю, чи оновиться оновлення за допомогою WiFi без зміни на rc.local, запропонованого вище, оскільки до того часу, як я знайшов рішення, я вже вніс цю зміну, і я її не відміняв.


2

Я знайшов timedatectlпрограму, яка допомогла мені, коли у мене виникли подібні проблеми. Він встановлений за замовчуванням, а "--help" дає досить хороший та простий огляд того, як користуватися інструментом.

Примітка: переконайтеся, що ваш часовий пояс встановлений належним чином, що також може зробити цей інструмент.


1

Це такий підхід, який я закінчив. Багато з цих відповідей, здавалося, вказували на речі, які просто не перевірялися, коли я дивився на мою расьпіанську систему:

$ 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щось робило, або що ntpсинхронізувало стан NIC, або що 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 при запуску до цього)
Стівен Лу,

@StevenLu - я оновлю A'er, щоб включити також встановлення ntp.
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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.