Je lis beaucoup de choses à propos de systemd en ce moment. Ce nouveau système d'init fait toujours parler de lui, et ça vire facilement au troll.

C'est pas mal au début…

J'aime bien le principe de base : activer ou non les services du système en fonction des status de la machine ou d'événements et de cibles plutôt que d'un idéal figé. Ainsi plutôt que d'avoir tous les services du niveau d'exécution X (cups, bluetooth…), on active le strict minimum, et le reste n'est activé qu'à la demande ou suivant l'activation d'une autre unité qui a besoin de telle ou tel service.

Si vous êtes connecté à internet, il peut par exemple démarrer automatiquement un service NTP.

Si vous êtes sur batterie, il peut éteindre tous les services que vous jugez non-essentiels (comme le NTP précédemment cité).

Et ces différents status peuvent se combiner.

Je trouve également révolutionnaire (et positive) leur approche du boot, avec une parallélisation à mort des divers processus, l'utilisation des files d'attente des socket… assez génial donc.

Mon point de vue est que Systemd reprend une bonne partie de la philosophie de Sysinit, en lui donnant plus de souplesse, de flexibilité et d'efficacité.

Les fichiers unit de systemd sont plus faciles à lire et comprendre que les scripts de démarrage d'init, quoiqu'en disent les partisans de ce dernier.

[Unit]
Description=Bluetooth service
Documentation=man:bluetoothd(8)

[Service]
Type=dbus
BusName=org.bluez
ExecStart=/usr/lib/bluetooth/bluetoothd
NotifyAccess=main
#WatchdogSec=10
#Restart=on-failure
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
LimitNPROC=1

[Install]
WantedBy=bluetooth.target
Alias=dbus-org.bluez.service

Une quinzaine de lignes comparé à une centaine… Pour un service non essentiel en plus ! Pas besoin de vous faire un dessin !

! /bin/sh
#
### BEGIN INIT INFO
# Provides:          saned
# Required-Start:    $syslog $local_fs $remote_fs
# Required-Stop:     $syslog $local_fs $remote_fs
# Should-Start:      dbus avahi
# Should-Stop:       dbus avahi
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: SANE network scanner server
# Description:       saned makes local scanners available over the
#                    network.
### END INIT INFO

. /lib/lsb/init-functions

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/saned
NAME=saned
DESC="SANE network scanner server"

test -x $DAEMON || exit 0

RUN=no
RUN_AS_USER=saned

# Include saned defaults if available
if [ -f /etc/default/saned ] ; then
. /etc/default/saned
fi

if [ "x$RUN" != "xyes" ] ; then
echo "$NAME disabled; edit /etc/default/saned"
exit 0
fi

DAEMON_OPTS="-a $RUN_AS_USER"

set -e

case "$1" in
start)
    echo -n "Starting $DESC: "
    start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
        --exec $DAEMON -- $DAEMON_OPTS
    echo "$NAME."
    ;;
stop)
    echo -n "Stopping $DESC: "
    start-stop-daemon --stop --oknodo --quiet --pidfile /var/run/$NAME.pid \
        --exec $DAEMON
    echo "$NAME."
    ;;
force-reload)
    # check whether $DAEMON is running. If so, restart
    start-stop-daemon --stop --test --quiet --pidfile \
        /var/run/$NAME.pid --exec $DAEMON \
    && $0 restart \
    || exit 0
    ;;
restart)
    echo -n "Restarting $DESC: "
    start-stop-daemon --stop --oknodo --quiet --pidfile \
        /var/run/$NAME.pid --exec $DAEMON
    sleep 1
    start-stop-daemon --start --quiet --pidfile \
        /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
    echo "$NAME."
    ;;
status)
    if [ -s /var/run/$NAME.pid ]; then
    RUNNING=$(cat /var/run/$NAME.pid)
    if [ -d /proc/$RUNNING ]; then
        if [ $(readlink /proc/$RUNNING/exe) = $DAEMON ]; then
        echo "$NAME is running."
        exit 0
        fi
    fi

    # No such PID, or executables don't match
    echo "$NAME is not running, but pidfile existed."
    rm /var/run/$NAME.pid
    exit 1
    else
    rm -f /var/run/$NAME.pid
    echo "$NAME not running."
    exit 1
    fi
    ;;
*)
    N=/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac

exit 0

Puis ça commence à sentir pas bon…

Par contre, ils ont récupéré tous les utilitaires système, cron, log, udev… Pourquoi ?

Les journaux système sont et doivent rester des fichiers textes simples. Ça permet une analyse hors-ligne, avec des commandes système standard, tel que cat, less, grep ou des outils forensics. Pas de format binaire à la noix à ouvrir avec une commande spécifique !

Et tout le reste…

Quand je lis le blog du dev' en chef, je me dis qu'ils vont beaucoup trop loin ! Clairement, ils veulent standardiser tout le système, ce qui signifie en clair faire finalement le boulot des distributions. Oui, je pense qu'ils ne vont pas laisser de place aux distributions.

Et mais c'est de la Marie-Jeanne cette odeur... Putain fait tourner !

Et maintenant les mecs veulent monter… ça !

Ils vont bien plus loin que la simple refonte de la gestion logicielle !

Ils proposent carrément un nouveau type de système d'exploitation, la suite logique de ce que je disais plus tôt : les distributions vont disparaître de par la standardisation, mais c'est pas grave car le nouveau Linux Made by Systemd Team est là pour le remplacer. La menace est à peine voilée.

Et quand ils écrivent que Debian ou Arch pourraient adopter ce système, ça me paraît une absurdité.

À chaque logiciel, l'installation complète de toutes ses bibliothèques dans leur version idéale, celle avec laquelle a travaillé le dev' du logiciel en question.

Ce truc s'il est mis en place donnera un mal de crâne monstre au premier admin venu. Il consommera d'importantes ressources système : espace disque (il est quasiment proposé de monter des systèmes parallèles pour chaque ensemble logiciel d'envergure), temps de calcul CPU (les pilotes de systèmes de fichiers, sur lesquels repose ce concept, consomment aussi de la puissance processeur)…

On notera qu'ils proposent de se limiter à /usr. Est-ce à dire qu'ils vont phagocyter et intégrer tout ce qui se trouve à la racine ? (Et qui seront les seuls outils disponibles pour débugger tout ce bordel, le jour où, inévitablement, ça plantera !) En même temps, un gros morceau du système d'exploitation est dans /usr… Vous imaginez le foutoir là ?

J'ai envie de dire : aller jusqu'au bout les gars, montez votre nouveau système d'exploitation révolutionnaire, plutôt que d'esperer que les distro le fassent pour vous, meurrent en silence ou sous les critiques pendant que vous recevez les éloges.

Et je me demande si/quand Debian & co feront un fork.

Ou est-ce que ça renforcera les BSD ?