Radikoの録音用スクリプトを使用しています。
大変便利なスクリプトですが、録音開始時間はシステムの時刻を参考にしています。
※cronで起動するため
そのため、ラジオ番組開始時刻とRaspberry Piのシステム時刻にズレが生じていた場合には、番組冒頭や終了部分が録音漏れする可能性が出てきます。
そこで、Raspberry Piの時刻をNTPサーバーと同期し、正確な時刻を取得できるようにしました。
環境
- Raspberry Pi 4 Model B
1234567891011$ cat /etc/os-releasePRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"NAME="Raspbian GNU/Linux"VERSION_ID="11"VERSION="11 (bullseye)"VERSION_CODENAME=bullseyeID=raspbianID_LIKE=debianHOME_URL="http://www.raspbian.org/"SUPPORT_URL="http://www.raspbian.org/RaspbianForums"BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
時刻同期の状態
そもそもRaspberry Piの時刻同期の状態はどうなっているのかを見てみました。
1 2 3 4 5 6 7 8 |
$ timedatectl status Local time: 火 2022-05-03 01:54:18 JST Universal time: 月 2022-05-02 16:54:18 UTC RTC time: n/a Time zone: Asia/Tokyo (JST, +0900) System clock synchronized: yes NTP service: active RTC in local TZ: no |
System clock synchronized: yesとなっているので、何かしらのNTPサーバーと時刻同期はしているようです。
では、どのNTPサーバーと時刻同期しているのかを見てみました。
1 2 3 4 5 6 7 8 9 10 11 |
$ sudo systemctl status systemd-timesyncd.service ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enab> Active: active (running) since Tue 2022-05-03 01:16:47 JST; 38min ago Docs: man:systemd-timesyncd.service(8) Main PID: 817 (systemd-timesyn) Status: "Initial synchronization to time server 45.76.211.39:123 (2.debian.pool.ntp.org)." Tasks: 2 (limit: 4915) CPU: 126ms CGroup: /system.slice/systemd-timesyncd.service └─817 /lib/systemd/systemd-timesyncd |
Initial synchronization to time server 45.76.211.39:123 (2.debian.pool.ntp.org).と表示されています。
どうやらデフォルト設定では2.debian.pool.ntp.orgってNTPサーバーと時刻同期しているみたいです。
時刻同期設定をしようと思いましたが、すでに時刻同期設定されていたのでここからは任意のNTPサーバーに時刻同期するよう設定を変えていこうと思います。
NTPサーバーの指定
設定するファイルは/etc/systemd/timesyncd.confです。
一応バックアップを取得しておきます。
1 2 3 4 5 6 7 |
$ sudo cp -p /etc/systemd/timesyncd.conf /etc/systemd/timesyncd.conf.back 編集用とバックアップファイルが存在していることを確認 $ ll -tr /etc/systemd/timesyncd.* -rw-r--r-- 1 root root 677 3月 27 14:42 /etc/systemd/timesyncd.conf.back -rw-r--r-- 1 root root 677 3月 27 14:42 /etc/systemd/timesyncd.conf |
/etc/systemd/timesyncd.confをcatすると以下の記述になっていました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$ cat /etc/systemd/timesyncd.conf # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See timesyncd.conf(5) for details. [Time] #NTP= #FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048 |
16行目、#NTP=となっているところにNTPサーバーのドメインまたはIPアドレスを記述することで、NTPサーバーを指定できます。
どのNTPサーバーにするか
所詮個人使用のPCです。
無難なところにしておけば安定性や可用性を考える必要性もありません。
ということで、ntp.nict.jpにしようと思います。
余談ですが、NTPサーバーといえば日本最古の公開NTPサーバーを運用している福岡大学の件が頭をよぎります。
研究用として運用されていたものがいつのまにか世界中からアクセスされ、DDos攻撃を受けつつも運用されています。
アクセスが殺到した要因の一つに、あまりにも福岡大学のNTPサーバーが有名になりすぎてネットワーク機器メーカーが公的なNTPサーバーと勘違いし、初期設定として福岡大学のNTPサーバーを指定して製品を販売していたということもあるらしいです。。。
“福岡大学 NTP”といったワードで検索するといろいろなストーリーが見つかると思います。
このサービス、終了時期は明言されていませんが、近い将来停止するようです。
開発・運用・保守に関わった方々にお疲れ様でしたと言いたいです。
さて、設定に戻ります。
ntp.nict.jpを/etc/systemd/timesyncd.confに記述します。
1 2 3 4 5 6 7 |
~省略~ [Time] NTP=ntp.nict.jp ←コメントアウトを外し、ntpサーバーを記述 #FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048 |
続いて、デーモンリロードします。
1 |
$ sudo systemctl daemon-reload |
そして、サービスを再起動します。
1 |
$ sudo systemctl restart systemd-timesyncd.service |
最後にステータスを確認し、指定したNTPサーバーと時刻同期しているか確認します。
1 2 3 4 5 6 7 8 9 10 11 |
$ sudo systemctl status systemd-timesyncd.service ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enab> Active: active (running) since Tue 2022-05-03 02:34:38 JST; 28s ago Docs: man:systemd-timesyncd.service(8) Main PID: 1694 (systemd-timesyn) Status: "Initial synchronization to time server [2001:df0:232:eea0::fff4]:123 (ntp.nict.jp)> Tasks: 2 (limit: 4915) CPU: 110ms CGroup: /system.slice/systemd-timesyncd.service └─1694 /lib/systemd/systemd-timesyncd |
意図したとおり動いてくれました。
Raspberry Piのはじめ方 (日経BPパソコンベストムック)
WIMAXIT 7インチ Raspberry Pi用タッチモニター IPS 1024X600 HDMI端子/Raspberry Pi 4/3/2/1 Model B A+ B+ BB Black Banana Pi Windows10/8/7対応
Raspberry Pi 4 8GB(技適マーク入)MicroSDHCカード128G/Raspbianシステムプリインストール/カードリーダ /5.1V/3A Type-C スイッチ付電源/MicroHDMI-to-HDMIケーブルライン/三つヒートシンク/簡単に取り付けケース/日本語取扱説明書/12ヶ月保証
エレコム micro HDMI ケーブル 1m 4K×2K対応 スーパースリム ブラック DH-HD14SSU10BK
コメント