環境
- Raspberry Pi (Zero/2/3で確認)
- DS3231 (RTC バックアップ電池つき)
- Raspbian:
2016-05-27-raspbian-jessie-lite.img
手順
-
sudo raspi-config
- I2C有効化
9 Advanced Options > A6 I2C > Enable
- I2C有効化
-
sudo vi /boot/config.txt
/boot/config.txt以下を最後に追加... dtoverlay=i2c-rtc,ds3231
sudo reboot
再起動-
sudo vi /lib/udev/hwclock-set
/lib/udev/hwclock-set以下をコメントアウト... #if [ -e /run/systemd/system ] ; then # exit 0 #fi ...
-
サービス停止(fake-hwclock,ntp)、
ntpdate
で時刻補正をして、RTCに保存、shutdown
sudo update-rc.d fake-hwclock disable sudo update-rc.d ntp disable sudo apt-get -y install ntpdate i2c-tools sudo sh -c 'ntpdate pool.ntp.org ; hwclock -w' sudo shutdown -h now
電源をおとして、ちょいとまってから、電源を入れなおして、時刻確認:
date
- 1970年とかになってる???
- 数秒(電源を落としていた時間くらい)ずれてる???
その他
fake-hwclock
-
/sbin/fake-hwclock
- シャットダウン時に、現在時刻を
/etc/fake-hwclock.data
へ保存。
(date -u '+%Y-%m-%d %H:%M:%S' > $FILE
) - 起動時に、
/etc/fake-hwclock.data
を読み込み、現在時刻として、設定。 -
参考:
fake-hwclock.dataの中身pi@raspberrypi:/etc/init.d$ cat /etc/fake-hwclock.data 2016-06-25 01:17:01
- シャットダウン時に、現在時刻を
-
サービス:
/etc/init.d/fake-hwclock
は/sbin/fake-hwclock
を呼ぶ-
stop|reload|restart|force-reload)
echo "Stopping fake hwclock: saving system time." fake-hwclock save;;
-
start)
echo "Starting fake hwclock: loading system time." fake-hwclock load $FORCE ;;
-
通常の時刻は、
ntp
で補正... してるんだよね?