La modification la plus importante fournie avec Ubuntu 15.04 est le passage d’upstart à systemd en tant que valeur par défaut pour la gestion du démarrage et du démarrage du service système.
Quelqu'un pourrait-il expliquer de manière adéquate à un utilisateur non technique comment et si cela nous affecte du tout? Et pourquoi c'est important?
Les utilisateurs Layman ne devraient remarquer aucun changement, de par leur conception. C'est un système init, pas quelque chose que les utilisateurs interagissent traditionnellement. Il devrait complètement remplacer les fonctionnalités fournies par Upstart — et faire quelques choses supplémentaires — mais le seul moment où un utilisateur non technique verra voir c'est quand il se passera mal.
Les utilisateurs, les administrateurs système et les développeurs qui ont activement utilisé et développé Upstart sont ceux qui ont besoin de résoudre les problèmes. Il y a n document de migration sur le wiki Ubunt pour aider les développeurs à convertir leurs scripts d'initialisation, mais les utilisateurs et les sysops peuvent continuer à utiliser Upstart en conservant la version 14.04 (prise en charge jusqu'en 2019).
La raison et la raison du changement ne venaient vraiment pas d'Ubuntu. Canonical était assez satisfait d'Upstart (leur projet), mais de nombreux utilisateurs de Debian souhaitaient passer à un moteur d'initialisation moderne pour obtenir une meilleure concurrence au démarrage et une meilleure fonctionnalité de surveillance pour tous les services.
Cela signifiait ne lutte entre différentes options (les raisonnements) et systemd finit par l'emporter.
Canonical s'est associé à Debian car c'est le plus simple et probablement le meilleur. Ils peuvent abandonner un projet et ne se battent pas en amont. Cela nous aligne également sur d'autres distributions (Red Hat, Fedora, etc.) qui migrent également vers systemd. Plus de concentration et moins de duplication d'effort.
tl; dr Pour une personne non technique, cela ne devrait pas vous affecter du tout. Pour Ubuntu, cela devrait signifier moins de travail et un meilleur système d’initialisation.
Quelqu'un pourrait-il expliquer de manière adéquate à un utilisateur non technique comment et si cela nous affecte du tout?
En théorie, cela ne devrait pas affecter l'utilisateur final non technique qui n'intervient pas dans les détails du fonctionnement réel du système. En pratique, il y a beaucoup de choses que vous allez voir.
Voici une liste incomplète:
init
+ rc
sont mordus par le fait que systemd est seulement rétrocompatible avec System 5 rc
. À l'instar de Upstart et de la plupart des autres systèmes, il déclare ne fournit aucune compatibilité avec le Système 5 init
et son fichier de configuration /etc/inittab
. .Ainsi, les personnes qui ont suivi les conseils des quelque 30 ans de conseils "Eh bien, vous pouvez simplement éditer ceci dans /etc/inittab
…", ou les personnes qui utilisent les logiciels qui ont suivi ces conseils ont maintenant des logiciels qui ne démarrent pas au démarrage. Exemple: https://unix.stackexchange.com/a/196197/5132
shutdown
, comme avec les commandes précédentes shutdown
. Mis à part le fait qu'il s'appelle mode de secours dans le jargon de systemd, le mode de secours n'est pas considéré comme un état d'arrêt dans la vision du monde de systemd. Il est considéré comme un état en cours. shutdown now
mettra la machine hors tension. C'est systemctl rescue
pour atteindre le mode mono-utilisateur dans le monde systemd. Lectures supplémentaires: https://unix.stackexchange.com/a/196471/5132--user
dans systemctl
. Cela ne s'applique pas (encore) à Ubuntu. upstart et systemd diffèrent considérablement dans ce domaine, et Ubuntu version 15 utilise toujours upstart par session plutôt qu'un systemd par instance d'utilisateur. Ainsi, https://superuser.com/a/860598/38062 ne s'appliquera pas, par exemple. ☺Comme d’autres l’ont déjà fait remarquer ici, en théorie, cela ne devrait pas affecter l’utilisateur final non technique - et en théorie, il n’ya pas de différence entre théorie et pratique, mais dans la pratique.
Je pense que peu de choses affichées ici nécessitent des éclaircissements:
C'est un système init, pas quelque chose que les utilisateurs interagissent traditionnellement.
C'était le cas avec SysV init et Upstart, mais ce n'est plus le cas avec systemd. Cela fait beaucoup de choses avec lesquelles les utilisateurs interagissent traditionnellement:
Il devrait complètement remplacer les fonctionnalités fournies par Upstart - et faire quelques choses supplémentaires
Deux choses à clarifier - d’abord sur le remplacement complet de Upstart:
L'un des problèmes que rencontrent les utilisateurs de systemd est qu'il n'exécute pas les scripts d'initialisation SysV. Donc, il y a un exemple qui ne remplace pas complètement les fonctionnalités fournies par Upstart.
C’est quelque chose sur lequel nous pouvions compter depuis plus de 30 ans et traditionnellement, vous écriviez des scripts SysV init pour une portabilité maximale sans vous répéter (en écrivant plusieurs versions des mêmes scripts), ce qui n’est plus le cas.
Cela ne devrait pas poser de problème lorsque vous utilisez uniquement des packages de référentiels officiels, car il est probable que tous les packages contenant des scripts SysV init ou Upstart auraient besoin de réécrire leurs scripts avant de les empaqueter.
Ce ne sera un problème que pour les personnes qui utilisent un logiciel tiers ou personnalisé dont les scripts init sont écrits pour SysV init ou Upstart. Ces scripts devront être réécrits avant la mise à niveau vers un système avec systemd (ou le parvenu installé, qui est également une option , ou migrer vers un système qui n'utilise pas systemd).
Il y a un générateur systemd-sysv qui est supposé traduire automatiquement les scripts d'initialisation SysV en scripts systemd, mais il existe quelques bogues et une longue liste de incompatibilités explicites .
Maintenant, la deuxième clarification - à propos de ces quelques choses supplémentaires:
Ces "quelques petites choses" que systemd va couvrir - selon ne perspective pour systemd - Ce qui a été réalisé et ce qui nous attend présentation de Lennart Poettering en 2014 à GNOME.asia - sont les suivants:
Donc, revenons à: "C'est un système init, pas quelque chose que les utilisateurs interagissent traditionnellement." - il convient de souligner que le système init n'est qu'un élément de cette liste.
Et enfin, la dernière chose que je voudrais commenter:
[L] a seule fois qu'un utilisateur non technique verra que cela se passe mal.
Oh, quel soulagement. :)
Les modifications les plus remarquables pour les utilisateurs finaux (autres que les scripts eux-mêmes) consistent à démarrer et arrêter des services et à utiliser des commandes telles que:
qui ne fonctionnent plus comme prévu. Par exemple, Nohup
est une commande POSIX permettant de s’assurer que le processus continue de s’exécuter une fois que vous vous êtes déconnecté de votre session. Cela ne fonctionne plus sur systemd. Des programmes tels que screen
et tmux
doivent également être appelés de manière spéciale ou autrement les processus que vous exécutez avec eux seront supprimés (le fait de ne pas tuer ces processus soit généralement la principale raison de l'exécution de screen ou de tmux en premier lieu).
Ce n'est pas un bogue, c'est un choix de conception, il est donc peu probable qu'il soit corrigé à l'avenir. C'est ce que Lennart Poettering a dit à propos de cette question:
À mon avis, il était en fait assez étrange pour UNIX de laisser par défaut un code utilisateur arbitraire sans restriction après la déconnexion. Depuis de nombreuses années, de nombreux utilisateurs de systèmes d’exploitation discutent du fait que cela devrait être possible, mais ce n’est certainement pas le cas par défaut, mais personne n’a osé jusqu’à présent basculer le commutateur pour le transformer en option par défaut. Ne pas nettoyer les sessions des utilisateurs après la déconnexion n’est pas seulement vilain et quelque peu furtif, mais aussi un problème de sécurité. systemd 230 a finalement basculé le commutateur et enfin, par défaut, il nettoie tout correctement lorsque l'utilisateur se déconnecte.
Pour plus d'informations, voir:
screen
name__screen
name__systemd-run --user --scope screen
(Remarque: le comportement de "upstart" ci-dessus est vraiment différent de systemd, ce n'est pas spécifique à l'amorçage)
start foo
systemctl start foo
stop foo
systemctl stop foo
restart foo
systemctl restart foo
initctl list
systemctl status
(Voir ma réponse à Quels sont les avantages/inconvénients d'Upstart et de systemd? pour plus de détails qui sont hors du champ de cette question.)
Il existe également une grande différence dans la gestion des journaux car contrairement à la tradition Unix, les journaux de systemd sont stockés dans des fichiers binaires dans un format personnalisé. Par conséquent, au lieu de:
cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log
vous devez utiliser des commandes spéciales pour accéder à vos journaux:
Sudo journalctl -u foo
Sudo journalctl -u foo -f
L'introduction de systemd d'abord à Debian et plus tard à Ubuntu ne s'est pas faite sans controverses ni opposition, comme le sait quiconque a écrit l'un des articles suivants:
Le position officielle de Debian sur systemd et le résultat controverse ont conduit au déclaration d'Exodus en 2014 et se terminent par la démission de Ian Jackson .
La Liberté Init , Sans-Systemd.org et Systemd-Free.org Des initiatives sont nées, avec beaucoup de - discussion sur Hacker News .