Vue lecture

WSL9x - Un Linux qui tourne dans un Windows 95

Un Linux qui tourne dans un Windows 95, vous ne rêvez pas puisqu'un développeur solo du nom de Hailey Somerville, a sorti WSL9x, un "Windows 9x Subsystem for Linux" qui pousse encore plus loin la logique de Microsoft avec WSL.

Le truc marche avec une simple commande wsl tapée dans le terminal MS-DOS, ce qui ouvre un pseudo-terminal Linux au beau milieu de votre Windows 9x. Pour les couleurs ANSI, il faudra charger un driver comme nnansi.com (c'est pas un nom de domain hein...) avant mais une fois en place, vous avez un shell Linux qui tourne en coopératif à côté du système Microsoft. Pas besoin de redémarrer ni de vous lancer dans la mise en place d'un dual boot.

Sous le capot, c'est une bidouille assez rigolote. En fait, Hailey a patché le noyau Linux 6.19 dans sa variante user-mode, cross-compilé en i386 avec musl, puis intégré via Open Watcom v2 pour la partie Windows. Le code se compose à 63% de C et à 35% d'assembleur, ce qui donne une idée du niveau de bas-niveau qu'il faut pour faire tourner un kernel Linux en parallèle d'un Windows 95 ou 98.

Ensuite, tout ce qui est pagination, protection mémoire et ordonnancement préemptif tirent parti des capacités des deux OS en même temps. Linux gère ses processus invités, Windows arbitre en bas niveau, et les deux cohabitent sans se marcher sur les pieds. Ça permet comme ça de lancer vos outils Linux préférés sans jamais quitter votre session OuinOuin.

Pour reproduire ça chez vous, il vous faudra un cross-compilateur i386-linux-musl (musl-cross-make fait très bien le job), Open Watcom v2, et une image disque Windows 9x pré-installée. Vous configurez les variables WATCOM et LINUX via .envrc.example, puis vous buildez le kernel avec make defconfig ARCH=um SUBARCH=i386 KBUILD_DEFCONFIG=win9x suivi d'un make vmlinux.

Un dernier petit make à la racine du projet pour génèrer le hdd.img final, et en suite c'est tout prêt à booter dans un 86Box , PCem ou carrément une vraie bécane sous Windows 95.

Maintenant, ce projet est qualifié de "very messy" par son auteur car c'est encore un travail en cours, et pas du tout un WSL officiel prêt pour un usage stable. Le dépôt est sous GPL-3 donc forkable, mais la doc se résume au README, donc c'est encore un peu léger.

Par contre, si vous aimez les hacks rétro de l'extrême, WSL9x mérite un petit coup d'œil. Ça me rappelle ce sous-système Linux pour MS-DOS qu'un autre dev avait sorti il y a quelques années, qui était le même délire mais pour DOS pur. À côté, le WSL2 officiel de Microsoft fait hyper sérieux.

Donc si vous avez un vieux Pentium qui traîne dans un placard, c'est l'occasion parfaite de le dépoussiérer pour faire la chose la plus absurde du mois.

  •