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) :
On peut définir aussi la localisation de la machine avec du texte libre :
Ce qui donne :
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 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 srv-fedora-dev
Et pour définir le nom d'usage (avec un exemple) :
Code BASH :
hostnamectl set-hostname --pretty "Serveur Fedora de développement"
On peut définir aussi la localisation de la machine avec du texte libre :
Code BASH :
hostnamectl set-location "Batiment A - Salle 42"
Ce qui donne :
Code BASH :
# hostnamectl status Static hostname: srv-fedora-dev Pretty hostname: Serveur test Linuxricks Icon name: computer-vm Chassis: vm Location: Batiment A - Salle 42 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
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