antiX-時刻合わせ-runit

2025/10/30
時刻合わせは、設定パネルからも設定できますので、ご参考まで。

antiX(runit)での時計自動合わせ:chronyd

項目内容
目的chronyd を runit 管理で常時稼働させ、NTP自動同期を行う
既知の落とし穴/var/service ではなく **/etc/service** にリンクする/サービス定義(run, log/run)の実体必須

手順1:パッケージ確認(chrony が入っているか)

dpkg -l chrony >/dev/null 2>&1 || (sudo apt update && sudo apt install -y chrony)
command -v chronyd || echo "chronyd が見つかりません(chrony のインストールを確認)"

期待:`/usr/sbin/chronyd` などが表示される。

手順2:runit サービス定義の実体を用意(/etc/sv/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 が付いていること

手順3:runit の監視ディレクトリに「登録」する(/etc/service にリンク)

# 監視ディレクトリを用意(存在すれば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

手順4:起動と状態確認(sv は /etc/service を既定参照)

# 絶対パス指定だとより確実
sudo sv start /etc/service/chronyd
sudo sv status /etc/service/chronyd

期待:
>|text|
run: chronyd: (pid XXXX) Ns

手順5:NTPサーバー(日本向け)設定と再起動

# 推奨サーバーを先頭に差し込み(重複行があれば適宜整理)
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

手順6:RTC(ハードウェアクロック)へ反映

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に反映。