Installation de ntp
Il doit y avoir un utilisateur et un groupe dédiés pour prendre le
contrôle du démon ntpd après qu'il est démarré.
Tapez les commandes suivantes en tant qu'utilisateur root
:
groupadd -g 87 ntp &&
useradd -c "Network Time Protocol" -d /var/lib/ntp -u 87 \
-g ntp -s /bin/false ntp
La commande update-leap doit être corrigée
pour fonctionner correctement :
sed -e 's/"(\\S+)"/"?([^\\s"]+)"?/' \
-i scripts/update-leap/update-leap.in
Maintenant corrigez un problème introduit avec glibc-2.34 :
sed -e 's/#ifndef __sun/#if !defined(__sun) \&\& !defined(__GLIBC__)/' \
-i libntp/work_thread.c
Installez ntp en exécutant les
commandes suivantes :
./configure --prefix=/usr \
--bindir=/usr/sbin \
--sysconfdir=/etc \
--enable-linuxcaps \
--with-lineeditlibs=readline \
--docdir=/usr/share/doc/ntp-4.2.8p15 &&
make
Pour tester les résultats lancez : make check.
Maintenant, en tant qu'utilisateur root
:
make install &&
install -v -o ntp -g ntp -d /var/lib/ntp
Explication des commandes
CFLAGS="-O2 -g -fPIC"
: Cette
variable d'environnement est nécessaire pour générer un code
indépendant de la position ( en anglais "Position Independent
Code") demandé par l'utilisation des bibliothèques du paquet.
--bindir=/usr/sbin
:
Ce paramètre met les programmes d'administration dans /usr/sbin
.
--enable-linuxcaps
:
ntpd est lancé en tant qu'utilisateur ntp, donc on utilise des
possibilités Linux pour le contrôle de l'horloge en non-root.
--with-lineeditlibs=readline
:
cette option active la prise en charge de Readline pour les programmes ntpdc et ntpq. En ne le mettant pas,
libedit sera utilisé si elle est
installée, sinon aucune fonctionnalité readline ne sera compilée.
Configuration de ntp
Fichiers de
configuration
/etc/ntp.conf
Informations sur la configuration
Le fichier de configuration suivant définit en premier plusieurs
serveurs ntp libres d'accès sur différents continents. En second,
il crée aussi un fichier drift où ntpd conserve la fréquence de
temps et un fichier pid pour stocker l'ID du processus
ntpd. En troisième,
il définit l'endroit pour le fichier de définition des secondes
intercalaires /etc/ntp.leapseconds
,
que le script update-leap vérifie et met à
jour, quand nécessaire. Ce script peut être lancé comme une tâche
cron et les développeurs de ntp
recommande une fréquence de trois semaines pour les mises à jour.
Comme il y a peu de documentation fournie avec le paquet, visitez
le site Internet de ntp sur http://www.ntp.org/ et http://www.pool.ntp.org/ pour
plus informations.
cat > /etc/ntp.conf << "EOF"
# Asia
server 0.asia.pool.ntp.org
# Australia
server 0.oceania.pool.ntp.org
# Europe
server 0.europe.pool.ntp.org
# North America
server 0.north-america.pool.ntp.org
# South America
server 2.south-america.pool.ntp.org
driftfile /var/lib/ntp/ntp.drift
pidfile /run/ntpd.pid
leapfile /var/lib/ntp/ntp.leapseconds
EOF
Vous pouvez souhaiter ajouter une « Session de
sécurité ». Pour les explications voir
https://www.eecis.udel.edu/~mills/ntp/html/accopt.html#restrict.
cat >> /etc/ntp.conf << "EOF"
# Security session
restrict default limited kod nomodify notrap nopeer noquery
restrict -6 default limited kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
EOF
Sychroniser le temps
Il y a deux options. L'option une est de lancer ntpd en permanence et de
l'autoriser à synchroniser le temps de façon graduée. L'autre
option est de lancer ntpd périodiquement (en
utilisant cron) et de mettre à jour l'heure chaque fois que
ntpd est lancé.
Si vous choisissez l'option une, installez le script de démarrage /etc/rc.d/init.d/ntp
inclus dans le
paquet blfs-bootscripts-20220722.
make install-ntpd
Si vous préférez lancer ntpd périodiquement, ajoutez la
commande suivante au crontab
de
root
:
ntpd -q
Exécutez la commande suivante si vous aimeriez régler l'heure
matérielle à l'heure actuelle du système lorsqu'il s'éteint et
redémarre :
ln -v -sf ../init.d/setclock /etc/rc.d/rc0.d/K46setclock &&
ln -v -sf ../init.d/setclock /etc/rc.d/rc6.d/K46setclock
L'autre façon est déjà réglée par LFS.