Systemd : Différence entre versions

De ArchwikiFR
m (Robot : Retiré depuis Catégorie:Logiciels (Français))
m (a déplacé Systemd (Français) vers Systemd)
(Aucune différence)

Version du 18 mars 2011 à 20:15

Modèle:I18n

systemd est un système d'init censé remplacer le vieux sysvinit. Il fournit une manière automatique de démarrer, relancer ou arrêter des services, en fonction de différents déclencheurs.

Ce programme est en phase de développement intense et en tant que tel, peut ne pas être adapté aux besoins de tous les jours : à utiliser avec précaution, donc.

Comment ça marche

Imaginons que vous soyez déconnecté du réseau. Vous pourriez avoir envie d'arrêter sshd et avahi. systemd peut le faire pour vous, et en cas de reconnexion ces services seront à nouveau disponibles. De même pour le matériel : imaginons que vous ayez une imprimante et un dongle USB Bluetooth. Inutile de laisser cups et bluetoothd en marche si ceux-ci sont déconnectés.

Il n'y a pas non plus de raison de laisser des démons comme sshd en route si personne n'est connecté à la machine : systemd peut écouter sur le port dédié à SSH, et lancer sshd si quelqu'un se connecte, l'arrêter lorsque le dernier utilisateur se déconnecte.

Systemd a donc 3 buts principaux :

  • Lancer des services en parallèle autant que possible.
  • Surveiller les démons (comme monit)
  • Écouter les ports et contrôler les services (comme (x)inetd)

Systemd vs. Upstart

La philosophie qui gouverne systemd diffère quelque peu de celle d'Upstart. Par exemple, lorsque D-Bus est lancé par Upstart, tout ce qui en dépend, comme NetworkManager, sera aussi démarré.

Systemd fonctionne en sens inverse. C'est lorsque NetworkManager est lancé que D-Bus sera lancé automatiquement, parce qu'il est nécesasire au fonctionnement de NetworkManager. Le lancement de D-Bus n'est pas une indication que l'on souhaite lancer NetworkManager, mais simplement que les services qui en besoin pourront l'utiliser (et peuvent donc être démarrés). Le but de systemd n'est donc pas de lancer tous les services possibles lorsqu'un événement se déclenche, mais seulement celui qui est demandé par la situation.

Installation

Falconindy a effectué un travail formidable en permettant à systemd de fonctionner dans Arch. Les paquets nécessaires sont disponibles sur AUR. Il faudra d'abord installer les paquets suivants.

kernel26>=2.6.36
udev-systemd
dbus-systemd
systemd-git

Pour pouvoir lancer les services habituels à la systemd, vous aurez sûrement envie d'installer le paquets arch-units :

systemd-arch-units

Enfin, pour essayer systems, il suffit d'ajouter l'option init=/bin/systemd à la ligne de commande du noyau dans GRUB.

Configuration

Les services et unités (units) disponibles se trouvent dans /lib/systemd/system. Vous pouvez taper :

$ systemctl start <service>

pour lancer un service avec systemd. Pour choisir un service à lancer automatiquement au démarrage, utilisez la commande :

$ systemctl enable <service>

Remplacer les scripts d'init par défaut (DANGEREUX)

Pour aller plus loin, il est possible de remplacer les scripts d'init par défaut d'ArchLinux par des scripts mieux adaptés à systemd à vos risques et périls. Ces scripts se trouvent sur AUR. Cependant, pour revenir à la procédure de démarrage habituelle, il ne suffira plus de retirer l'option init=/bin/systemd de la ligne de commande du noyau, ceci casserait votre système puisqu'il faudrait au préalable réinstaller les initscripts par défaut. En particulier, si quelque chose ne fonctionne plus dans systemd, il est probable que le système ne démarrera plus et il faudra un LiveCD pour le restaurer.

Si vous êtes toujours sûr de ce que vous voulez faire, il s'agit de ce paquet :

initscripts-systemd-git

Problèmes connus

  • Systemd ne comprend pas les guillemets dans les EnvironmentFiles, et les services correspondants ne pourront pas démarrer. Un bon exemple est le fichier /etc/conf.d/sshd par défaut.

Donner un coup de main

Pour le moment, l'implémentation de systemd pour ArchLinux est encore très incomplète. Si vous voulez contribuer, vous pouvez forker les dépôts Git initscripts-systemd ou arch-systemd-units (sur GitHub) et proposer des pull requests pour vos modifications. Il y a encore pas mal de travail à faire pour nettoyer les initscripts et remplacer plus de fonctions par des unités systemd, de même qu'il faut encore convertir les scripts de lancement de démons en fichiers de service dépendant moins de scripts shell.

Vous pouvez poser vos questions (en anglais) dans ce sujet sur les forums ArchLinux. falconindy peut parfois être présent sur le canal IRC #archlinux (pas de messages privés svp).

Ressources supplémentaires (en anglais)