Remplacement de systemd par openrc sous Archlinux
classé dans Geekeries, Linux
Cet article nécessite quelques connaissances de base, notamment, comment récupérer un accès à sa machine quand on a planté init. Savoir compiler un noyau GNU/Linux n'est pas obligatoire, mais peut aider.
Cet article est finalement publié, mais est inutile (article incomplet, j'ai fini par laisser tomber). À ne lire que pour le côté "amusant" de la chose.
Le 18 octobre, j'avais commencé à écrire un article (brouillon plus bas), expliquant comment recompiler la cinquantaine de paquets (et quelques) ayant des dépendances à systemd, afin de garder un système "propre", sans systemd.
Les paquets de base n'ont posé aucun problème (dbus-core, ancienne version d'udev, paquet systemd-empty).
Là où ça s'est corsé, c'est quand j'ai vu que les drivers Xorg avaient des dépendances à systemd. Là, gros WTF.
Pour ceux qui ne me croient pas : https://www.archlinux.org/packages/extra/x86_64/xf86-video-intel/
ou encore (colonne Required By) : https://www.archlinux.org/packages/core/x86_64/systemd/
Du coup, j'ai fini par laisser tomber, et cet article est parti dans les oubliettes.
Au final, j'ai viré archlinux, et ai remis une debian…
ATTENTION, à ne lire que pour le "fun", ne pas appliquer ce qu'il y a dedans, cela ne fonctionnera pas. De même, je ne répondrai à aucune question concernant un quelconque remplacement de systemd. Je suis passé à autre chose.
<brouillon><brouillon><brouillon><brouillon><brouillon><brouillon><brouillon><brouillon>
Il y a trois types de gens :
- Ceux qui suivent commes des moutons
- Ceux qui critiquent ceux qui suivent comme des moutons
- Ceux qui n'ont rien à faire des deux premiers types et qui font à leur manière
Bref, le but de cet article est pour montrer que l'on peut utiliser ArchLinux, sans utiliser/supporter systemd.[1]
ATTENTION, le contenu de cet article est discutable, et tenter de reproduire ce que je détaille peut exploser votre machine. Je ne suis en aucun cas responsable d'un quelconque dommage, perte de productivité, etc, si vous avez suivi ces instructions, si vous vous trouvez dans un espace temps alternatif, si vous êtes un esper, un voyageur temporel, un alien…[2]
Toujours là ? bon, on peut commencer.
Tout d'abord, pourquoi virer systemd ?
- Parce que… <insérer ici un argument foireux>
- D'abord… <insérer ici un autre argument foireux>
- J'utilise GNU/Linux, par GNU/Lennax
- Vu le bloatware[3] que devient systemd, il vaut mieux prévoir une alternative.
- Pour le fun
Ensuite, comment virer systemd ? le remplacer par quoi ?
- J'ai commencé par installer open-rc (de gentoo), pour pouvoir virer initscripts (plus maintenu, déprécié au profit de systemd), puis ai configuré grub [5] pour démarrer dessus.
Point positif d'open-rc (du point de vue du paquet dispo pour archlinux). Sa configuration dans /etc est placée à part. Aucun fichier existant n'est remplacé. C'est un peu déroutant au début, mais c'est assez logique à la fin. Du coup, toute la configuration, que ça soit hostname, les init, etc, sont situés dans /etc/openrc.
- Après avoir configuré correctement open-rc (boot fonctionnel, écriture/portage de mes scripts dessus), j'ai commencé à lister les dépendances à systemd. Classique : gdm, dbus-core, …
- Récupération, dans la mesure du possible, des paquets source (via yaourt -G), retrait des options de compilation pour systemd, ou utilisation des anciennes versions (comme udev).
- En parlant d'Udev, j'hésite à passer sur son fork, qui semble mieux maintenu qu'une ancienne version d'udev.
- Création (pour le fun) d'un paquet "systemd-dummy", qui servira à virer systemd (replace systemd). Ce paquet sert à déterminer s'il me reste des dépendances à systemd, et aussi, pour virer systemd, une fois que tous les paquets seront recompilés. Cependant, il me faudra alors maintenir les paquets à jour, puisque toute mise à jour d'un paquet réinstallera systemd.
1 : Super, c'est le retour des notes de bas de page.
2 : Toute ressemblance avec (etc)
3 : Et oui, maintenant, il y a un serveur web (basé sur libmicrohttpd) et un générateur de code QR dans l'init[4]. Après xinetd, cron, syslog, sysv, udev, … ça sera quoi la prochaine fois ? l'intégration de wayland ? xorg ?
4 : Malheureusement vrai, cf. http://comments.gmane.org/gmane.linux.redhat.fedora.devel/169082
5 : Oui, grub 0.99, la version soit disant "dépassée", mais qui fonctionne correctement et me permet de garder un menu "simple" et "propre"