Généralités système Linux

Systemd : 0 Table des matières des articles

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

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