systemd
| systemd | |
Démarrage de Fedora avec systemd. |
|
|
|
|
| Développeur | Lennart Poettering Freedesktop.org |
|---|---|
| Première version | |
| Dernière version | 236 ()[1] |
| État du projet | En développement |
| Écrit en | C, Python |
| Environnement | GNU/Linux |
| Type | Système d’initialisation, daemon |
| Politique de distribution | Gratuit |
| Licence | GNU LGPL |
| Site web | wiki.freedesktop.org/www/Software/systemd www.freedesktop.org/wiki/Software/systemd |
| modifier |
|
systemd est un système d’initialisation et un daemon qui a été spécifiquement conçu pour le noyau Linux comme alternative à System V. Il a pour but d'offrir un meilleur cadre pour la gestion des dépendances entre services, de permettre le chargement en parallèle des services au démarrage, et de réduire les appels aux scripts shell. Le projet a été lancé par Lennart Poettering en 2010 et publié sous licence GNU LGPL version 2.1[2]. Le nom de ce programme vient de « system daemon » : le daemon du système.
Ce projet a suscité de vives controverses chez les développeurs de GNU/Linux.
En 2015, la plupart des distributions GNU/Linux ont adopté ce système d’initialisation.
Sommaire
Concept[modifier | modifier le code]
Systemd est basé sur quelques dizaines de binaires gérant l'ensemble du système de boot, et quittant ainsi la philosophie UNIX du KISS[3].
Systemd adopte un nouveau système de log appelé « The Journal », permettant de loguer plus rapidement et plus efficacement les différentes phases de démarrage. Les logs sont authentifiés afin de réduire les chances de corruptions lors d'un piratage, ils sont portables, et l'outil comporte une gestion de saturation de l'espace disque afin de mieux gérer les traces. Tout service géré par systemd est automatiquement logué, sauf si celui-ci demande à ne pas l'être. Il est par défaut compatible avec un environnement réseau et peut passer par les protocoles standard tels que syslog[4].
Systemd comporte un outil nommé « systemd-analyze », permettant d'analyser le temps de démarrage, de tracer les différentes étapes et de sortir les analyses sous formes de simples graphiques (format SVG), permettant de comprendre simplement les goulets d'étranglement de la séquence de démarrage.
Systemd diffère de l'init de System V en :
- Utilisant des sockets et des bus pour démarrer et gérer les services. Il est ainsi plus facile de paralléliser des services interdépendants ;
- Utilisant les cgroups pour suivre les processus des services en plus des PID. Cela permet de maintenir la trace des démons même s'ils se dupliquent ;
- Permettant sauvegardes et restaurations de l'état du système (XDG Desktop Entry) ;
- Parallélisant mieux, avec donc un temps de démarrage bien plus court.
- Permet de monter ou démonter les points de montage ;
- Élabore un système de gestion transactionnel des dépendances des services ;
- Les services sont configurés dans des fichiers de type XDG « Desktop Entry »[5], également utilisées par des environnements de bureau tel que Xorg et différents bureaux utilisant X11, tels que KDE, GNOME, XFCE, LXDE ou Unity.
- La documentation de systemd comporte à elle seule actuellement 579 entrées, référençant 216 pages de manuel, soit 72 % de toutes les pages de manuel d'Unix v7 pour un seul logiciel.
En avril 2012, le code source d'udev a été intégré dans systemd[6]. systemd remplace donc System V et udev dans leurs fonctions respectives[7].
Adoption par les différentes distributions[modifier | modifier le code]
Distribution Red Hat et ses dérivés[modifier | modifier le code]
- Red Hat Entreprise Linux depuis la version 7[8]
- Fedora (à partir de la version 15 sortie le 24 mai 2011)[9] ;
Distribution Debian et ses dérivés[modifier | modifier le code]
- Debian propose systemd dans ses dépôts (stable, testing, unstable) où il est possible de le mettre comme système d'initialisation par défaut[10]; il est activé par défaut dans la version 8 surnommée Jessie, sortie en 2015[11];
- Ubuntu inclut systemd depuis la version 15.04 Vivid Vervet, sortie en 2015[12].
Il y a eu un fork de Debian, nommé Devuan, qui permet d'éviter d'utiliser systemd.
Distribution SUSE[modifier | modifier le code]
Distribution Gentoo[modifier | modifier le code]
Le fork eudev[modifier | modifier le code]
Gentoo développe eudev depuis 2013. Celui-ci est un fork d'udev dont le but est d'obtenir un meilleur support des systèmes qui n'utilisent pas systemd[15]. Pour les distributions binaires, leur choix, en janvier 2014, se résume à savoir si elles veulent supporter GNOME et dans ce cas si elles préfèrent utiliser systemd ou si, dans l'autre cas, elles préfèrent gérer la complexité supplémentaire d'une installation de GNOME sans systemd.
Autres distributions[modifier | modifier le code]
- Mandriva 2011 (sortie le 28 août 2011)[16] ;
- Mageia 2 [17] ;
- Arch Linux (dépôts core)[18],[19] et Arch Linux ARM ;
Développement et polémique[modifier | modifier le code]
Le projet a subi de nombreuses critiques. Les projets libres sont habitués aux discussions passionnées et enflammées sur des choix techniques difficiles, mais ce projet a atteint des sommets[20].
Pour certains développeurs, systemd est devenu un plus grand problème que celui qu'il est censé résoudre car au lieu de fournir à l'administrateur les moyens de créer des politiques de gestion du système, il fournit directement ses politiques[21], au point qu'on compare parfois systemd au Service Host de Windows. Certains de ces détracteurs, utilisateurs de Debian, menacent même de faire un fork de leur distribution si celle-ci impose de fait l'utilisation de systemd en lieu et place de sysvinit[22]. Un fork nommé Devuan a été créé par les opposants qui n'obtenaient pas satisfaction, et la première version de Devuan est sortie fin mai 2017[23].
Voici quelques critiques :
- KISS : la philosophie UNIX Keep It Simple and Stupid, n'est plus respectée. De fait, le classique et simple fichier /etc/mtab devient méconnaissable dans les distributions systemd. Voici par exemple celui d'Ubuntu 16.04 (ici, alpha 2 version MATE):
$ cat /etc/mtab
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,relatime,size=1963456k,nr_inodes=490864,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=396480k,mode=755 0 0
/dev/sdb3 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
efivarfs /sys/firmware/efi/efivars efivarfs rw,nosuid,nodev,noexec,relatime 0 0
cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_cls,net_prio 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=22,pgrp=1,timeout=0,minproto=5,maxproto=5,direct 0 0
mqueue /dev/mqueue mqueue rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0
/dev/sda2 /boot/efi vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=396480k,mode=700,uid=1000,gid=1000 0 0
gvfsd-fuse /run/user/1000/gvfs fuse.gvfsd-fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0
/dev/sdb2 /media/fda/Sandisk480-UltraII fuseblk rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096 0 0
- Le changement est profond puisqu'il touche à l'initialisation du système d’exploitation (dit PID 1) de GNU/Linux. Les habitudes des administrateurs systèmes sont bouleversées et ils doivent mettre à jour leurs connaissances.
- systemd implémente tellement de fonctionnalités que la distribution peut (voire doit) se passer d'autres outils. En conséquence les applications utilisant les fonctionnalités systemd ne peuvent plus fonctionner sans. Cela a conduit à la création d'une bibliothèque spéciale (systembsd) pour implémenter les fonctions systemd à part (pour les distributions GNU/Linux utilisant « Init »). KDE est déjà dépendant de systemd.
- Lennart Poettering, le développeur principal a été critiqué pour son développement mal géré de PulseAudio qu'il a par la suite abandonné.
Notes et références[modifier | modifier le code]
- (en) « [systemd-devel] [ANNOUNCE] systemd 236 » (consulté le 29 décembre 2017)
- « systemd », sur Wiki, Free desktop
- (en) « The Biggest Myths », (consulté le 27 juillet 2014)
- (en) « Introducing the Journal » (consulté le 27 juillet 2014)
- (en) « Desktop Entry Specification v 1.1 », (consulté le 26 juillet 2014)
- « Commit », sur systemd, Free desktop
- « Linux weekly news »
- « ed-hat-enterprise-linux-7 », sur http://linuxfr.org,
- « Fedora 15’s Lovelock released », H online
- « systemd », sur Wiki, Debian
- L'annonce officielle via la liste de diffusion debian-devel-announce https://lists.debian.org/debian-devel-announce/2014/02/msg00005.html
- Release notes Ubuntu Vivid Vervet
- « OpenSuse 12.1 arrives with systemd & BtrFS », H online
- « Gentoo systemd project », Gentoo
- Gentoo eudev project
- « Mandriva 2011 arrives with Systemd [sic] », H online
- « Mageia 2 arrives with Gnome 3 and systemd », H online
- « SystemD », sur Wiki, Arch GNU/Linux
- « Arch dev public », sur Mailman, Arch GNU/Linux,
- « systemd : l’init martyrisé, l’init bafoué, mais l’init libéré ! - LinuxFr.org », sur Linuxfr (consulté le 3 septembre 2015)
- « Linux Audio Development, JACK, cgroups and systemd »(Archive • Wikiwix • Archive.is • Google • Que faire ?) (consulté le 20 mars 2014)
- Louis Adam, « Systemd sur Debian : la guerre de clochers tourne aux menaces », sur ZDNet, (consulté le 22 octobre 2014)
- (en) « Devuan Jessie 1.0.0 stable release (LTS) », sur devuan.org, (consulté le 30 juillet 2017)
Annexes[modifier | modifier le code]
Articles connexes[modifier | modifier le code]
Liens externes[modifier | modifier le code]
- Sites officiels : (en) wiki.freedesktop.org/www/Software/systemd et www.freedesktop.org/wiki/Software/systemd
- (en) « Pages de manuel de systemd », sur freedesktop.org
- (fr) « Documentation sur systemd », sur Léa-Linux
- (fr) « Les évolutions techniques de systemd », sur linuxfr
- (en) La commande systemctl pour démarrer/arrêter un service