Passer à systemd sur un VPS OpenVZ avec Debian Jessie

Passer d'upstart à systemd sur une machine OpenVZ sous Debian Jessie.

Passer à systemd sur un VPS OpenVZ avec Debian Jessie

Attention : je n'ai pris aucune précaution, je ne pourrais être tenu pour responsable de quoique ce soit. Je suis d'ailleurs tout à fait irresponsable.

L'un des VPS que j'administre utilisait upstart comme système d'initialisation, parce que le noyau OpenVZ n'a longtemps pas supporté systemd, ou inversément systemd ne supportait pas les vieux noyaux d'OpenVZ, toujours est-il que la cohabitation était controversée.

Le noyau d'OpenVZ est basé sur Linux 2.6.32. 2009, tout de même ! C'est le noyau qui propulsa à leur époque (2009) Ubuntu 10.04 LTS « Lucid Lynx » et Debian 6.0 « Squeeze ». Or, Debian 8.0 « Jessie », sortie en avril 2015, intégra le noyau Linux 3.16, et passa de sysvinit à systemd comme système d'initialisation par défaut.

Donc les services, scripts, etc, sont par défaut écrits pour fonctionner avec systemd. Et depuis quelques temps, le noyau OpenVZ permet de parler la même langue que systemd (grosso modo). Et j'avais envie de tester le changement, sachant que j'avais transféré ma machine sur un dédié Kimsufi.

Donc, on se lance.

Dans une session SSH, je lance l'installation par aptitude, qui intègre un outil de résolution des conflits et offre des solutions de remplacement en cas d'installation problématique.

aptitude install systemd systemd-sysv

aptitude propose de remplacer upstart par systemd : il suffit d'accepter.

Plus qu'à redémarrer. Le système va se plaindre de ne pas pouvoir utiliser l'init pour lancer la commande reboot proprement (normal, vu qu'on vient d'en changer).

Pour être au minimum propre (ce que je n'ai pas fait), on peut stopper proprement les services chatouilleux, MySQL & co. Puis redémarrer brutalement :

reboot -f

La connexion est perdue directement. Quelques secondes à attendre avant de relancer une session SSH et tenter de se connecter à la machine.

  • Connexion établie ? Bravo, tout s'est bien passé ! On peut maintenant balancer systemctl --failed pour voir s'il y a des services défectueux qui trainent sur la machine.

  • Connexion impossible ? Too bad! Vous venez de tuer votre machine qui ne démarrera plus en l'état. Contactez votre hébergeur, réinstallez votre machine, faites vous un thé.