Systemd : 0 Table des matières des articles
Table des matières
Comme vous le savez, systemd est plus qu'un système d'init et de gestion des services !
Voici quelques exemples de configuration possibles avec systemd !
La commande hostnamectl permet de gérer le nom d'hôte de la machine.
Pour avoir des infos, on utilise :
Exemple :
On peut définir 2 noms d'hôtes :
- Static (Nom d'hôte de /etc/hostname)
- Pretty (Nom d'usage, pouvant contenir des espaces, documenté dans /etc/machine-info)
Pour changer le nom d'hôte du système, on utilisera :
Et pour définir le nom d'usage (avec un exemple) :
La commande timedatectl permet de gérer la date et l'heure de la machine.
Pour avoir des infos, on utilise :
Exemple :
Pour régler l'heure manuellement, on fera :
Exemple pour 12h34 et 56 secondes :
Pour régler la date, on fera :
Exemple pour le 05 février 2020 :
Et pour régler la date ET l'heure :
Exemple pour le 05 février 2020 à 12h34 et 56 secondes :
Pour lister les fuseaux horaires :
Et définir le fuseau (Exemple Europe/Paris) :
Le service ntp de systemd s'appelle systemd-timesyncd.service
La configuration se fait dans /etc/systemd/timesyncd.conf
La commande permettant de gérer NTP s'appelle ... timedatectl !
Pour indiquer le serveur de temps, c'est dans la section [Time], et il faut définir la valeur NTP (On peut spécifier plusieurs valeurs, séparées par des espaces) :
D'autres options sont disponibles dans la configuration, mais par défaut, ça fonctionne.
Pour vérifier la configuration :
Pour activer le NTP, on exécutera :
Pour désactiver le NTP, on exécutera :
Pour vérifier que NTP est actif, on utilisera
Plus d'infos sur le NTP avec :
Pour faire fonctionner le réseau avec systemd, nous aurons besoin de :
systemd-networkd.service => Le service réseau
systemd-resolved.service => Le service de résolution de nom
A noter que systemd-resolved peut être utilisé sans systemd-networkd.
Si on utilise systemd-networkd, il faut évidemment désactiver le service NetworkManager (ou autre gestionnaire réseau) !
Toutes les configuration réseau se trouvent dans /etc/systemd/network/.
Comme toute commande systemd, elle finit par ctl, et nous utiliserons networkctl.
Pour lister les interfaces, on peut donc utiliser :
Lorsque aucune interface n'est paramétrée, on a une sortie de ce style :
Sur la machine concernée, l'interface réseau s'appelle enp0s3.
Je vais créer le fichier /etc/systemd/network/enp0s3-ethernet.network
Exemple avec une configuration DHCP :
Exemple avec une configuration statique :
Après chaque modification, on doit redémarrer le service :
La commande networkctl list nous produit ceci une fois l'interface configurée :
Voici quelques exemples de Valeurs possibles pour chacune des sections des fichiers .network :
Introduction
Comme vous le savez, systemd est plus qu'un système d'init et de gestion des services !
Voici quelques exemples de configuration possibles avec systemd !
Gestion du nom d'hôte avec hostnamectl
La commande hostnamectl permet de gérer le nom d'hôte de la machine.
Pour avoir des infos, on utilise :
Code BASH :
hostnamectl status
Exemple :
Code BASH :
# hostnamectl status Static hostname: localhost.localdomain Pretty hostname: Serveur test Linuxricks Icon name: computer-vm Chassis: vm Machine ID: ff660743170946a1a9048725101a3442 Boot ID: 7f2936334b7e4e938704a2659cb91adc Virtualization: oracle Operating System: Fedora 32 (Workstation Edition) CPE OS Name: cpe:/o:fedoraproject:fedora:32 Kernel: Linux 5.5.0-0.rc6.git3.1.fc32.x86_64 Architecture: x86-64
On peut définir 2 noms d'hôtes :
- Static (Nom d'hôte de /etc/hostname)
- Pretty (Nom d'usage, pouvant contenir des espaces, documenté dans /etc/machine-info)
Pour changer le nom d'hôte du système, on utilisera :
Code BASH :
hostnamectl set-hostname nomdhote
Et pour définir le nom d'usage (avec un exemple) :
Code BASH :
hostnamectl set-hostname --pretty "Serveur Fedora de développement"
Gestion de la date et heure avec timedatectl
La commande timedatectl permet de gérer la date et l'heure de la machine.
Pour avoir des infos, on utilise :
Code BASH :
timedatectl status
Exemple :
Code BASH :
# timedatectl status Local time: Wed 2020-02-05 14:41:43 CET Universal time: Wed 2020-02-05 13:41:43 UTC RTC time: Wed 2020-02-05 13:41:38 Time zone: Europe/Paris (CET, +0100) System clock synchronized: yes NTP service: active RTC in local TZ: no
Pour régler l'heure manuellement, on fera :
Code BASH :
timedatectl set-time 'HH:mm:ss'
Exemple pour 12h34 et 56 secondes :
Code BASH :
timedatectl set-time '12:34:56'
Pour régler la date, on fera :
Code BASH :
timedatectl set-date 'AAAA-MM-JJ'
Exemple pour le 05 février 2020 :
Code BASH :
timedatectl set-date '2020-02-05'
Et pour régler la date ET l'heure :
Code BASH :
timedatectl set-time 'AAAA-MM-JJ HH:mm:ss'
Exemple pour le 05 février 2020 à 12h34 et 56 secondes :
Code BASH :
timedatectl set-time '2020-02-05 12:34:56'
Pour lister les fuseaux horaires :
Code BASH :
timedatectl list-timezones
Et définir le fuseau (Exemple Europe/Paris) :
Code BASH :
timedatectl set-timezone Europe/Paris
Le NTP avec systemd-timesyncd
Le service ntp de systemd s'appelle systemd-timesyncd.service
La configuration se fait dans /etc/systemd/timesyncd.conf
La commande permettant de gérer NTP s'appelle ... timedatectl !
Pour indiquer le serveur de temps, c'est dans la section [Time], et il faut définir la valeur NTP (On peut spécifier plusieurs valeurs, séparées par des espaces) :
Code BASH :
[Time] NTP=fr.pool.ntp.org
D'autres options sont disponibles dans la configuration, mais par défaut, ça fonctionne.
Pour vérifier la configuration :
Code BASH :
timedatectl show-timesync --all
Code BASH :
# timedatectl show-timesync --all LinkNTPServers= SystemNTPServers=fr.pool.ntp.org FallbackNTPServers=0.fedora.pool.ntp.org 1.fedora.pool.ntp.org 2.fedora.pool.ntp.org 3.fedora.pool.ntp.org ServerName=fr.pool.ntp.org ServerAddress=(null) RootDistanceMaxUSec=5s PollIntervalMinUSec=32s PollIntervalMaxUSec=34min 8s PollIntervalUSec=0 Frequency=0
Pour activer le NTP, on exécutera :
Code BASH :
timedatectl set-ntp true
Pour désactiver le NTP, on exécutera :
Code BASH :
timedatectl set-ntp false
Pour vérifier que NTP est actif, on utilisera
Code BASH :
timedatectl status
Code BASH :
# timedatectl status Local time: Wed 2020-02-05 14:18:20 CET Universal time: Wed 2020-02-05 13:18:20 UTC RTC time: Wed 2020-02-05 13:18:16 Time zone: Europe/Paris (CET, +0100) System clock synchronized: yes NTP service: active RTC in local TZ: no
Plus d'infos sur le NTP avec :
Code BASH :
timedatectl timesync-status
Code BASH :
# timedatectl timesync-status Server: 149.202.2.105 (fr.pool.ntp.org) Poll interval: 1min 4s (min: 32s; max 34min 8s) Leap: normal Version: 4 Stratum: 2 Reference: 52468A42 Precision: 1us (-24) Root distance: 24.367ms (max: 5s) Offset: +283us Delay: 26.383ms Jitter: 0 Packet count: 1 Frequency: -98.024ppm
Le réseau avec systemd-networkd
Pour faire fonctionner le réseau avec systemd, nous aurons besoin de :
systemd-networkd.service => Le service réseau
systemd-resolved.service => Le service de résolution de nom
A noter que systemd-resolved peut être utilisé sans systemd-networkd.
Si on utilise systemd-networkd, il faut évidemment désactiver le service NetworkManager (ou autre gestionnaire réseau) !
Toutes les configuration réseau se trouvent dans /etc/systemd/network/.
Comme toute commande systemd, elle finit par ctl, et nous utiliserons networkctl.
Pour lister les interfaces, on peut donc utiliser :
Code BASH :
networkctl list
Lorsque aucune interface n'est paramétrée, on a une sortie de ce style :
Code BASH :
# networkctl list IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 enp0s3 ether routable unmanaged
Sur la machine concernée, l'interface réseau s'appelle enp0s3.
Je vais créer le fichier /etc/systemd/network/enp0s3-ethernet.network
Exemple avec une configuration DHCP :
Code BASH :
[Match] Name=enp0s3 [Network] DHCP=ipv4
Exemple avec une configuration statique :
Code BASH :
[Match] Name=enp0s3 [Network] Address=192.168.21.240/24 Gateway=192.168.21.254 DNS=1.1.1.1
Après chaque modification, on doit redémarrer le service :
Code BASH :
systemctl restart systemd-networkd
La commande networkctl list nous produit ceci une fois l'interface configurée :
Code BASH :
# networkctl list IDX LINK TYPE OPERATIONAL SETUP 1 lo loopback carrier unmanaged 2 enp0s3 ether routable configuring
Voici quelques exemples de Valeurs possibles pour chacune des sections des fichiers .network :
Code :
[Match]
Name=Nom de l'interface
MACAddress=Adresse MAC de l'interface
[Link]
MACAddress=Changer l'adresse MAC
MTUBytes=Changer la valeur du MTU
[Network]
DHCP=ipv4 ou ipv6 (si non indiqué, vaut false)
Address=IP fixe (si DHCP non actif)
Gateway=IP du routeur (si DHCP non actif)
DNS=IP du DNS