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'


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