積年の悲願、達せず。
問題
起動時に自動で時刻の同期をさせたいが、できない。
以前から面倒に思っていたので本格的に調査してみた。が、できなかった。orz
参考
Raspberry Piでプログラムを自動起動する5種類の方法を比較・解説
希望の光。5つも方法があればどれか1つくらい当たるんじゃね? と思っていた時期が私にもありました。
できること
手動ならできる。問題は自動化できないこと。
sudo ntpdate -u ntp.jst.mfeed.ad.jp
できなかった自動化
以下、すべての方法がダメだった。起動しても時刻同期されない。なぜだ……
1. /etc/rc.local
に以下を追記。exit 0
より上に書くべき。
sudo ntpdate -u ntp.jst.mfeed.ad.jp
2. $ crontab -e
で以下を追記
@reboot sudo ntpdate -u ntp.jst.mfeed.ad.jp
3. ~/.config/lxsession/LXDE-pi/autostart
を以下のようにセット。
@lxpanel --profile LXDE-pi @pcmanfm --desktop --profile LXDE-pi @xscreensaver -no-splash @point-rpi @/usr/bin/sudo /usr/sbin/ntpdate -u ntp.jst.mfeed.ad.jp
なお、sudo
, ntpdate
のパスはwhich
コマンドで調べた。
ほかにも、autostart
と名のつくものが複数あったのでやってみた。
~/.config/autostart/autostart.desktop
[Desktop Entry] Type=application Name=autostart.desktop Terminal=true Exec=/usr/bin/sudo /usr/sbin/ntpdate -u ntp.jst.mfeed.ad.jp X-KeepTerminal=true
~/.config/openbox/autostart
sudo ntpdate -u ntp.jst.mfeed.ad.jp &
bash /home/pi/root/script/sh/settime.sh &
bash /home/pi/root/script/sh/mkdir_work.sh &
~/
など省略できないらしいのでフルパスで書く。
4. /etc/systemd/system/ntpdate.service
raspbian jessieからは /etc/init.d
でなくsystemd
を使うことが推奨されている。
# http://hendigi.karaage.xyz/2016/11/auto-boot/ [Unit] Description=startup, settime, ntpdate After=syslog.target [Service] Type=simple #WorkingDirectory=/tmp/ ExecStart=/bin/bash /home/pi/root/script/sh/settime.sh #TimeoutStopSec=5 StandardOutput=null [Install] WantedBy = multi-user.target
5. /etc/ntp.conf
https://iotdiyclub.net/raspberry-pi-introduction-step-5/
以下のようにroot権限で起動し、/etc/ntp.conf
ファイルを任意のテキストエディタで開く。
$ sudo pcmanfm /etc/
server ...
をコメントアウトし、pool ntp.nict.jp iburst
を追記。
#server 0.debian.pool.ntp.org iburst #server 1.debian.pool.ntp.org iburst #server 2.debian.pool.ntp.org iburst #server 3.debian.pool.ntp.org iburst pool ntp.nict.jp iburst
$ sudo service ntp restart $ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== ntp-b3.nict.go. .INIT. 16 u - 64 0 0.000 0.000 0.000 ntp-a2.nict.go. .INIT. 16 u - 64 0 0.000 0.000 0.000 ntp-b2.nict.go. .INIT. 16 u - 64 0 0.000 0.000 0.000 ntp-a3.nict.go. .INIT. 16 u - 64 0 0.000 0.000 0.000 ntp-a3.nict.go. .INIT. 16 - - 64 0 0.000 0.000 0.000 ntp-a2.nict.go. .INIT. 16 - - 64 0 0.000 0.000 0.000
成功していたらサーバ名の前に*
がつくらしい。(*ntp-b2.nict.go.
等)
記号 | 意味 |
---|---|
* |
参照同期中のNTPサーバ |
+ |
クロック誤り検査に合格したNTPサーバ |
|
サーバを参照していない |
つまり失敗してる。なぜ?
上記コマンドに続けて、以下をやってみる。
https://qiita.com/msrks/items/d6f7fa721399db4fe8d9
2018-02-20 09:30頃に実行した。時刻はdate -s "2018/02/20 00:00:00"
などでわざとずらして00:54:22
になってる。
$ sudo ntpdate -v ntp.nict.jp 20 Feb 00:54:22 ntpdate[18827]: ntpdate 4.2.6p5@1.2349-o Mon Jul 25 22:35:35 UTC 2016 (1) 20 Feb 00:54:22 ntpdate[18827]: the NTP socket is in use, exiting $ date
$ sudo timedatectl set-timezone Asia/Tokyo $ date
設定されない。わからん。
6. timedatectl
NTP synchronized:
がyes
にならない……。
$ sudo timedatectl set-ntp true pi@raspberrypi:~$ timedatectl status Local time: 火 2018-02-20 10:06:41 JST Universal time: 火 2018-02-20 01:06:41 UTC RTC time: n/a Time zone: Asia/Tokyo (JST, +0900) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a
未実施
https://qiita.com/ngkazu/items/916f476985fa3e3f2951
ntp を削除して chrony とやらを使うらしい。自動化については書いていないので解決にならないか。
所感
時刻同期を自動化できなかった。
どうもraspbianのバージョンごとに方法が違うらしい。ネットの情報どおりに動作するとは限らない。
もしや知らないうちに環境を何か変えてしまったか?
もう疲れた。