Dusk OS - L'OS minimaliste qui survivra à l'apocalypse | Open source | Le site de Korben
Image illustrant l'article : Dusk OS - L'OS minimaliste qui survivra à l'apocalypse

Dusk OS - L'OS minimaliste qui survivra à l'apocalypse

par Korben ✨ -

Pendant que vous lisez ces lignes, en buvant votre café, une horde de développeurs ajoute chaque jour 14 millions de lignes de code supplémentaires à Windows 11, une centrale nucléaire explose à chaque fois que vous dites merci à ChatGPT et votre bon vieux smartphone consomme intégralement 4 Go de RAM dès que vous voulez afficher un emoji animé. C’est le monde dans lequel nous vivons.

Mais pendant ce temps, dans une réalité parallèle (ou peut-être un futur proche), Dusk OS nous permet de faire tourner un système complet avec compilateur C inclus en moins de 6000 lignes de code. Ce système d’exploitation 32-bit basé sur Forth est conçu avec un objectif précis : être maximalement utile lors d’un effondrement civilisationnel, quand on ne pourra plus fabriquer de nouveaux ordinateurs mais qu’il en restera encore beaucoup autour de nous.

Alors oui, vous avez bien lu, c’est un OS pour l’apocalypse. Mais avant de sortir votre chapeau en aluminium, laissez-moi vous expliquer pourquoi ce projet est fascinant même si vous ne croyez pas à la fin du monde.

4 kilooctets, c’est la taille du noyau de Dusk OS ! Un noyau minuscule qui, au démarrage, construit progressivement le système à partir du code source. De ce socle microscopique émerge alors un environnement complet capable de compiler du C, d’assembler du code pour diverses architectures et même d’éditer du texte. Pour vous donner une idée, c’est exactement comme si vous arriviez à construire une Ferrari qui roule avec le contenu d’une boîte de Lego.

Et ce n’est pas un jouet non plus puisque Dusk OS tourne sur du vrai matos : i386, amd64, ARM, RISC-V, m68k… Il est compatible avec les systèmes BIOS ou EFI, peut fonctionner en WebAssembly ou à vitesse native sur des OS “normaux”. Il lit et écrit également sur des volumes FAT12/FAT16. Et surtout, il est entièrement auto-hébergé, ce qui signifie qu’une machine tournant sous Dusk OS possède tous les outils nécessaires pour s’améliorer elle-même.

Mais la vraie révolution, c’est sa philosophie car Dusk OS n’a pas d’utilisateurs, mais des “opérateurs”. La différence ? C’est le contrôle ! Car comme l’explique son créateur : “Vous utilisez un téléphone, vous utilisez une machine à café, vous utilisez même une voiture de nos jours. Mais vous opérez un bulldozer, vous opérez une grue, vous opérez un avion. Vous utilisez Linux, vous utilisez Windows. Vous opérez Dusk OS.

Cette distinction est fondamentale puisque sur Dusk OS, il n’existe pas de problème qui puisse vous laisser impuissant. Certes, vous pouvez avoir une panne matérielle qui fout en l’air votre système, mais au moins vous pourrez identifier cette panne et savoir avec certitude qu’il n’y a pas besoin d’attendre un hypothétique correctif logiciel. C’est ça, le contrôle total.

Pour atteindre cette simplicité radicale, Dusk OS a donc fait des choix que beaucoup considéreraient comme hérétiques. D’abord, il n’y a pas de processus concurrents. Oui, vous avez bien lu, pas de multitâche préemptif. Sur une machine moderne, ça semble absurde, mais réfléchissez-y : combien de fois avez-vous réellement besoin d’exécuter plusieurs programmes simultanément ? Surtout en cas d’apocalypse ! La plupart du temps, quand votre éditeur de texte est actif, votre shell n’a pas besoin de tourner. La seule raison pour laquelle nous gardons ces deux processus en vie, c’est que la mémoire associée à l’un serait perdue si on le “tuait”. Mais c’est la faute de la gestion mémoire d’UNIX.

Autre hérésie : la mémoire est globalement partagée et il n’y a pas de mécanisme de mémoire virtuelle. Ainsi, quand vous accédez à une adresse mémoire dans le système, c’est une adresse directe. Pour un OS qui veut être “maximalement” utile au bidouilleur bare metal, on veut avoir le moins de couches d’indirection possible entre vous et le matériel.

Le compilateur C de Dusk OS est probablement l’innovation la plus impressionnante du projet car comparé à TinyCC, pourtant considéré comme minimaliste, le ratio est hallucinant : 1400 lignes de code contre 30 000.

Comment c’est possible ? Et bien parce que Dusk “contourne” la complexité au lieu de l’affronter. Par exemple, TinyCC consacre 10 000 lignes rien qu’à la gestion des formats de fichiers comme ELF. Dusk, lui, compile directement le code en mémoire pour qu’il s’exécute à l’endroit où il est écrit. C’est plus contraignant, mais infiniment plus simple.

Et ce n’est pas tout ! Dusk est aussi une réaction virulente à la “stack logicielle moderne” que son créateur qualifie de “dégoûtamment compliquée”. Un produit de l’effet cumulé d’une culture logicielle qui engendre la complexité et qui a eu l’occasion de se construire sur elle-même durant des décennies, “déversant son pus inscrutable dans chaque recoin”. Le mec est chaud.

La thèse est provocante mais difficile à réfuter… en effet, plus nous laissons cette culture se répandre, plus il est difficile de s’en sortir. Le matériel la suit docilement (et dans le même esprit de complexité superflue), rendant les approches radicalement nouvelles de plus en plus hors de portée… mais pas encore impossibles.

Dusk OS possède ce que son créateur appelle une “densité de puissance” incroyable. Il condense énormément de puissance dans un package minuscule. Et c’est cette densité qui lui permet de faire beaucoup de choses qu’une stack moderne peut faire, mais à une fraction du coût de complexité. C’est donc en partie destiné à être un signal d’alarme pour les développeurs donc la façon habituelle de développer des logiciels aujourd’hui est stupide et gaspilleuse, et ce depuis 30 ans. Cette stupidité et ce gaspillage s’auto-alimentent et nous amènent à concevoir du matériel de plus en plus stupide pour répondre à des logiciels de plus en plus stupides. En tout cas, c’est comme ça que le créateur de Dusk voit le monde.

Maintenant pour ceux qui veulent voir cette puissance en action, Dusk propose un “Tour”, c’est à dire une série de commandes que même un néophyte peut suivre sans connaître Forth. Vous y verrez comment en quelques lignes de code, vous pouvez manipuler directement la mémoire du système, assembler du code natif, compiler du C, dessiner à l’écran…

Par exemple, sur un notebook avec un chipset de la famille Intel ICHn, imaginons que vous lisiez la fiche technique quand soudain : “Oh, sympa, il y a une interface SPI là-dedans. Voyons voir si elle est connectée à quelque chose…” Sur un système BSD ou Linux, si vous commencez à tripoter ses registres, vous risquez de marcher sur les pieds d’un autre processus et de planter le système. Sous Dusk, vous pourriez complètement casser le contrôleur SATA, vous seriez toujours opérationnel tant que vous n’accédez pas au stockage de masse.

Maintenant cette approche est-elle réaliste pour l’utilisateur lambda ? Bien sûr que non, mais Dusk ne vise pas l’utilisateur lambda. Il vise l’opérateur, celui qui est créatif, proche du matériel, capable de lire une fiche technique.

Et si la fin du monde n’arrivait jamais ? Alors tant mieux ! Dusk restera alors un formidable terrain de jeu pour redécouvrir ce que signifie vraiment programmer une machine.

Et si ça arrive, au moins on aura un système d’exploitation post-apocalyptique qui saura tourner partout et ça c’est cool ! Bref, si vous êtes du genre à vouloir comprendre chaque ligne de code de votre système, à rêver de machines qui obéissent vraiment à leurs maîtres plutôt que l’inverse, ou simplement curieux de voir comment on peut faire tant avec si peu, je vous invite à vous plonger dans le code source de Dusk OS disponible sur sourcehut.