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 :
Et pour régler la date ET l'heure :
Exemple pour le 05 février 2020 à 12h34 et 56 secondes :
Si toutes les heures ne sont pas synchronisées, (RTC, Local Universal) on peut ajuster le tout avec l'option
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 :
La commande localectl permet de gérer la langue et la disposition du clavier du système.
Pour avoir des infos, on utilise :
Le System Locale est la langue du système, VC Keymap est la disposition du clavier dans la VConsole (Les TTY), et X11 Layout la disposition du clavier dans l'interface graphique.
Pour lister les Locales :
Et pour définir la locale "Français" , on utilisera :
Pour lister les dispositions de clavier disponibles :
Et pour définir le clavier Français :
On peut affiner le clavier pour l’interface graphique notamment sur le modèle, la disposition les options.
Pour lister les différents modèles et options :
Et pour définir un clavier Français de type PC Portable ASUS, on utilisera
Exemple :
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'
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'
Si toutes les heures ne sont pas synchronisées, (RTC, Local Universal) on peut ajuster le tout avec l'option
Code BASH :
--adjust-system-clock
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
Gérer les locales avec localectl
La commande localectl permet de gérer la langue et la disposition du clavier du système.
Pour avoir des infos, on utilise :
Code BASH :
localectl status
Code BASH :
[root@localhost ~]# localectl status System Locale: LANG=fr_FR.UTF-8 VC Keymap: fr-oss X11 Layout: fr X11 Variant: oss
Le System Locale est la langue du système, VC Keymap est la disposition du clavier dans la VConsole (Les TTY), et X11 Layout la disposition du clavier dans l'interface graphique.
Pour lister les Locales :
Code BASH :
localectl list-locales
Et pour définir la locale "Français" , on utilisera :
Code BASH :
localectl set-locale fr_FR.UTF-8
Pour lister les dispositions de clavier disponibles :
Code BASH :
localectl list-keymaps
Et pour définir le clavier Français :
Code BASH :
localectl set-keymap fr
On peut affiner le clavier pour l’interface graphique notamment sur le modèle, la disposition les options.
Pour lister les différents modèles et options :
Code BASH :
localectl list-x11-keymap-layouts localectl list-x11-keymap-models localectl list-x11-keymap-variants localectl list-x11-keymap-option
Et pour définir un clavier Français de type PC Portable ASUS, on utilisera
Code BASH :
localectl set-x11-keymap LAYOUT [MODEL [VARIANT [OPTIONS]]]
Exemple :
Code BASH :
[root@localhost ~]# localectl set-x11-keymap fr asus_laptop [root@localhost ~]# localectl System Locale: LANG=fr_FR.UTF-8 VC Keymap: fr X11 Layout: fr X11 Model: asus_laptop
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