環境
- 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
3. `sudo reboot`<br>再起動
4. `sudo vi /lib/udev/hwclock-set`
```txt:/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
6. 電源をおとして、ちょいとまってから、電源を入れなおして、時刻確認: `date`
- 1970年とかになってる???
- 数秒(電源を落としていた時間くらい)ずれてる???
## その他
### `fake-hwclock`
- `/sbin/fake-hwclock`
- シャットダウン時に、現在時刻を`/etc/fake-hwclock.data`へ保存。<br>(`date -u '+%Y-%m-%d %H:%M:%S' > $FILE`)
- 起動時に、`/etc/fake-hwclock.data`を読み込み、現在時刻として、設定。
- 参考:
```shell-session: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で補正... してるんだよね?
