Mises à jour et paquets de base#

Pourquoi#

Avant d’installer quoi que ce soit de spécifique au projet, deux choses doivent être faites : mettre le système à niveau, et retirer les paquets qui entreraient en conflit avec la configuration temps réel et NTP visée. Un démon NTP concurrent qui tourne en tâche de fond, par exemple, se battra silencieusement avec chrony pour discipliner l’horloge, un bug très difficile à diagnostiquer si on ne pense pas à vérifier qu’il n’existe qu’un seul service de synchronisation temporelle actif.

Comment#

Mise à jour complète#

apt update && apt full-upgrade -y
apt autoremove --purge -y

Suppression des paquets concurrents#

# Démon NTP concurrent : à proscrire absolument
apt purge -y ntpsec ntp openntpd systemd-timesyncd 2>/dev/null

# Daemon de redistribution d'IRQ : incompatible avec l'affinité statique
# qu'on va mettre en place (chapitre Affinité IRQ)
apt purge -y irqbalance

# Composants graphiques résiduels (Lite ne devrait pas en avoir, par sécurité)
apt purge -y xserver-* lightdm 2>/dev/null
apt autoremove --purge -y

Paquets nécessaires#

apt install -y \
    pps-tools setserial ethtool \
    gpsd gpsd-clients \
    chrony \
    linuxptp \
    nginx \
    fail2ban nftables \
    auditd \
    unattended-upgrades apt-listchanges \
    bc curl jq

Erreurs à éviter#

Un seul démon de synchronisation temporelle à la fois. ntp, ntpsec, openntpd et systemd-timesyncd sont tous des alternatives à chrony, en garder un actif en plus de chrony ne double pas la précision, ça introduit une compétition silencieuse pour discipliner la même horloge système, avec des résultats imprévisibles.

  • irqbalance actif en même temps qu’une affinité IRQ manuelle. irqbalance redistribue dynamiquement les interruptions entre cœurs pour équilibrer la charge, exactement l’inverse de ce qu’on veut ici (isoler l’IRQ du PPS sur un cœur dédié en permanence, cf. chapitre Affinité IRQ). Les deux mécanismes se battront en continu si irqbalance reste installé.
  • Version de chrony trop ancienne pour NTS. NTS (RFC 8915) nécessite chrony ≥ 4.0. Sur les distributions Debian récentes ce n’est pas un problème, mais la version doit être vérifiée en partant d’une image plus ancienne.

Vérifier#

# Aucun autre démon de temps actif
systemctl list-units --type=service | grep -iE 'ntp|timesync'
# Ne doit lister QUE chrony (pas encore configuré à ce stade, c'est normal)

# Version de chrony (doit être >= 4.0 pour NTS)
chronyd -v

# irqbalance bien absent
dpkg -l irqbalance 2>&1 | grep -q "no packages found" && echo "OK : irqbalance absent"

📚 Pour aller plus loin

chrony (R. Curnow puis M. Lichvar, maintenu depuis 1997) est l’implémentation NTP recommandée sur Linux moderne, pour plusieurs raisons documentées par son projet : convergence plus rapide que ntpd dans les conditions hors-norme, base de code nettement plus réduite (~30 000 lignes contre ~120 000 pour ntpd, donc plus auditable), et support natif de NTS depuis la version 4.0 (2020). Détails complets au chapitre Chrony.