ntp は読み取り専用の Raspberry Pi では動作しません

ntp は読み取り専用の Raspberry Pi では動作しません

なぜ ntp (サービス) がラズベリーパイで時刻を正しく設定しないのか理解するのに苦労しています。

SD カードを保存するためにファイルシステムを読み取り専用に設定しましたが、以前は機能していたのに、なぜ ntp が機能しないのかわかりません。

ログには、次のようなメッセージが何行も表示されます。

ntpd[415]: kernel reports TIME_ERROR: 0x41: Clock Unsynchronized
ntpd[415]: kernel reports TIME_ERROR: 0x41: Clock Unsynchronized
ntpd[415]: error resolving pool 0.debian.pool.ntp.org: Temporary failure in name resolution (-3)
ntpd[415]: error resolving pool 1.debian.pool.ntp.org: Temporary failure in name resolution (-3)
ntpd[415]: error resolving pool 2.debian.pool.ntp.org: Temporary failure in name resolution (-3)
ntpd[415]: error resolving pool 3.debian.pool.ntp.org: Temporary failure in name resolution (-3)
ntpd[415]: error resolving pool 3.debian.pool.ntp.org: Temporary failure in name resolution (-3)
ntpd[415]: error resolving pool 2.debian.pool.ntp.org: Temporary failure in name resolution (-3)
ntpd[415]: error resolving pool 1.debian.pool.ntp.org: Temporary failure in name resolution (-3)
ntpd[415]: error resolving pool 0.debian.pool.ntp.org: Temporary failure in name resolution (-3)

私の /etc/resolv.conf は次のようになります:

# Generated by resolvconf
nameserver 8.8.8.8
nameserver 192.168.1.22

私はその RPi でインターネットにアクセスでき、プール アドレスに ping でき、Google に ping でき、apt update (rw で再マウントした後) を実行できます...

ntpdate コマンドを手動で発行することもできます。問題なく動作します。

$ sudo ntpdate -u 0.fr.pool.ntp.org 1.fr.pool.ntp.org
24 Nov 23:04:34 ntpdate[578]: step time server 129.250.35.250 offset 2418.621037 sec

そうですね、私はここで細かいことを気にしています。なぜ NTP サービスが機能しないのか理解できません。インターネットで調べましたが、誰もこの問題を抱えていないようです (すべての DNS が機能していませんが、私のは機能しています)

私の読み取り専用設定は次のとおりです。https://hallard.me/raspberry-pi-read-only/ より

皆さん何か分かりますか?

答え1

同様の問題に直面しているときにこの質問を見つけました。

問題は、systemdPrivateTmp機能が読み取り専用構成では動作しないことが判明しました。

  1. 必ずインストールしntpntpdate
    sudo apt install -y ntp ntpdate
    
  2. コピー/lib/systemd/system/ntp.service/etc/systemd/system/ntp.service

    cp /lib/systemd/system/ntp.service /etc/systemd/system/ntp.service
    
  3. を開い/etc/systemd/system/ntp.serviceてコメントアウトしますPrivateTmp=true

    sudo nano /etc/systemd/system/ntp.service
    

今なら、正しく動作するはずです!

追加のステップとして、私は今推奨されている/var/lib/ntpようにマウントしましたtmpfsここ

  1. 開いてファイルの末尾に /etc/fstab追加します。tmpfs /var/lib/ntp tmpfs nosuid,nodev 0 0
    sudo nano /etc/fstab
    

私のケースではこれは必要ないと思いましたが、読み取り専用ファイルシステムで実行する場合の追加のヒントがそこにあります。

答え2

マーク・ロジャーの回答動作しますが、ユーザーがオーバーライドする方が良いと思います:

echo -e '[Service]\nPrivateTmp=false' > /etc/systemd/system/ntp.service.d/override.conf

その後、再起動すればsystemctl daemon-reload十分でしょう。

関連情報