時刻合わせは、設定パネルからも設定できますので、ご参考まで。
| 項目 | 内容 |
| 目的 | chronyd を runit 管理で常時稼働させ、NTP自動同期を行う |
| 既知の落とし穴 | /var/service ではなく **/etc/service** にリンクする/サービス定義(run, log/run)の実体必須 |
dpkg -l chrony >/dev/null 2>&1 || (sudo apt update && sudo apt install -y chrony)
command -v chronyd || echo "chronyd が見つかりません(chrony のインストールを確認)"
期待:`/usr/sbin/chronyd` などが表示される。
# サービス定義ディレクトリ & ログ用ディレクトリ
sudo mkdir -p /etc/sv/chronyd/log/main
sudo mkdir -p /var/log/chronyd
# run スクリプト作成(前面・デーモンログ出力のため -d)
sudo tee /etc/sv/chronyd/run >/dev/null <<'EOF'
#!/bin/sh
exec /usr/sbin/chronyd -f /etc/chrony/chrony.conf -d
EOF
sudo chmod +x /etc/sv/chronyd/run
# log/run(svlogd で /var/log/chronyd に記録)
sudo tee /etc/sv/chronyd/log/run >/dev/null <<'EOF'
#!/bin/sh
exec svlogd -tt /var/log/chronyd
EOF
sudo chmod +x /etc/sv/chronyd/log/run
検証:
ls -l /etc/sv/chronyd /etc/sv/chronyd/log
# → run と log/run に +x が付いていること
# 監視ディレクトリを用意(存在すればOK)
sudo mkdir -p /etc/service
# (誤登録の掃除:任意)/var/service に古いリンクがあれば削除
sudo rm -f /var/service/chronyd 2>/dev/null || true
# 正しい監視先へリンク(上書き安全)
sudo ln -sfn /etc/sv/chronyd /etc/service/chronyd
検証:
ls -l /etc/service/chronyd
# → /etc/service/chronyd -> /etc/sv/chronyd
# 絶対パス指定だとより確実
sudo sv start /etc/service/chronyd
sudo sv status /etc/service/chronyd
期待:
>|text|
run: chronyd: (pid XXXX) Ns
# 推奨サーバーを先頭に差し込み(重複行があれば適宜整理)
sudo sed -i '1iserver ntp.nict.jp iburst\nserver ntp.jst.mfeed.ad.jp iburst' /etc/chrony/chrony.conf
# 設定反映
sudo sv restart /etc/service/chronyd
# 同期状況の確認
chronyc sources -v
chronyc tracking
期待例:
>|text|
Reference ID : (ntp.nict.jp)
System time : ... seconds fast/slow of NTP time
sudo hwclock --systohc
sudo hwclock --show # 表示がシステム時刻と一致すること
| 目的 | コマンド | 期待出力 |
| サービスの稼働 | `sudo sv status /etc/service/chronyd` | `run: chronyd: ...` |
| リンクの正しさ | `readlink -f /etc/service/chronyd` | `/etc/sv/chronyd` |
| run/log 実体の有無 | `ls -l /etc/sv/chronyd /etc/sv/chronyd/log` | `run` と `log/run` が +x |
| chronyd 実体 | `which chronyd` | `/usr/sbin/chronyd` |
| 同期状況 | `chronyc tracking` | 偏差(offset)が小さい |
| ログ | `tail -n 50 /var/log/chronyd/current strings tail` | 起動・同期ログあり |
| 症状 | 原因 | 対処 |
| `fail: chronyd: unable to change to service directory` | /etc/service ではなく /var/service にリンク/または run 実体が無い | `sudo ln -sfn /etc/sv/chronyd /etc/service/chronyd` を作り直す/手順2で run/log/run を作る |
| `506 Cannot talk to daemon` | chronyd が起動していない | `sudo sv start /etc/service/chronyd` 後に `chronyc tracking` |
| `sv status chronyd` で見つからない | sv の探索先と不一致 | 絶対パスで操作:`sudo sv status /etc/service/chronyd` |
| ログが出ない | log/run 不在/権限なし | log/run 作成&`chmod +x`、`/var/log/chronyd` の存在確認 |
| 同期が遅い | 外部到達性/DNS/サーバ選定 | `server ntp.nict.jp iburst` 等の設定見直し、`chronyc sources -v` の到達性確認 |
|
sudo chronyc -a makestep
**補足:GUIログイン後の再同期待ちを入れる(任意)
>|bash|
echo '(sleep 15 && chronyc -a makestep) &' >> ~/.desktop-session/startup
- antiX(runit)では **/etc/service** へのリンクが正解。
- **/etc/sv/chronyd/run,log/run** の実体が必須(+x)。
- `sv` の操作は **絶対パス指定** だと誤探索を避けられる。
- `chronyc tracking` で最終確認、`hwclock --systohc` でRTCに反映。