Floppinux - sortie de l’édition 2025 de Linux embarqué sur une seule disquette
(krzysztofjankowski.com)- Floppinux, une distribution Linux légère capable de démarrer depuis une seule disquette (1.44MB), a été mise à jour avec l’édition 2025 (v0.3.1)
- La nouvelle version repose sur le noyau Linux 6.14.11 et BusyBox 1.36.1, et inclut un stockage persistant (264KB) ainsi qu’une compatibilité avec du matériel plus récent
- Elle peut fonctionner avec un processeur Intel 486DX (33MHz) ou supérieur et seulement 20MB de RAM, et prend en charge un éditeur de texte (vi) ainsi que les commandes de base de manipulation de fichiers
- Elle fonctionne à la fois sur du matériel réel et dans des émulateurs (qemu, Bochs, 86Box), et est conçue pour que l’utilisateur construise lui-même le noyau et la toolchain
- Depuis sa première publication il y a 4 ans, elle est utilisée à des fins pédagogiques et expérimentales ; cette édition met l’accent sur le maintien d’un noyau récent et la mise à jour du tutoriel d’apprentissage
Présentation du projet
- Floppinux vise à construire un système Linux minimal capable de démarrer depuis une seule disquette
- Il est conçu sous la forme d’un atelier pédagogique similaire à “Linux From Scratch”, afin que l’utilisateur puisse le modifier et l’étendre lui-même
- La distribution obtenue fournit un environnement terminal en mode texte, permettant l’édition de fichiers et l’écriture de scripts simples
- L’espace de stockage restant est de 264KB, ce qui permet d’enregistrer directement sur la disquette les fichiers créés par l’utilisateur
Fonctions principales et configuration requise
- Prise en charge du démarrage sur une seule disquette, du noyau récent (6.14) et des CPU x86 32 bits (486DX ou plus)
- Comprend un éditeur de texte (vi), les commandes de base de manipulation de fichiers (
cat,cp,mv,rm, etc.) et des fonctions de scripting simple - Les fichiers peuvent être enregistrés sur la disquette grâce au stockage persistant (persistent storage)
- Configuration matérielle minimale : Intel 486DX 33MHz, 20MB de RAM, lecteur de disquette interne
Configuration du noyau
- La version Linux 6.14.11 est utilisée comme dernier noyau prenant entièrement en charge les CPU i486
- La configuration du noyau est centrée sur les fonctions minimales nécessaires au démarrage, avec notamment initramfs compressé en XZ, prise en charge de l’exécution ELF et système de fichiers FAT
- La prise en charge de TTY, des périphériques bloc, de
/procet du système de fichiers sysfs est activée - Le résultat de la compilation du noyau est généré sous la forme d’une bzImage (881KiB)
Environnement de build et toolchain
- Le build a été réalisé sur Omarchy Linux (OS 64 bits basé sur Arch), mais la même procédure peut être appliquée sur tout système compatible POSIX
- Le compilateur croisé i486-linux-musl-cross est utilisé pour construire la cible 32 bits
- qemu est utilisé comme environnement d’émulation, Bochs pour le débogage, et 86Box constitue une alternative plus lente
Ensemble d’outils basé sur BusyBox
- La version BusyBox 1.36.1 est utilisée et fournit un ensemble léger de commandes remplaçant les utilitaires GNU
- Principales commandes sélectionnées : cat, cp, df, echo, ls, mkdir, mv, rm, sync, vi, mount, umount, clear, test
- La compilation en binaire statique (static binary) supprime les dépendances aux bibliothèques partagées
- Après la compilation de BusyBox, le système de fichiers racine généré (rootfs.cpio.xz) a une taille de 137KiB
Système de fichiers et configuration d’initialisation
- Comprend une structure minimale de répertoires, un message de bienvenue (welcome), inittab et un script d’initialisation rc
- Le script rc monte
/procet/sys, crée ensuite le répertoire/home, puis monte la disquette sur/mnt - Au démarrage, après l’affichage d’une bannière de bienvenue, le système entre dans le shell (/bin/sh)
- Le script rc monte
- Les messages de démarrage et les paramètres du noyau sont définis via la configuration syslinux.cfg
APPEND root=/dev/ram rdinit=/etc/init.d/rc console=tty0 tsc=unstable
Création de l’image de démarrage
- Création d’une image de disquette de 1.44MB (
floppinux.img), puis formatage et installation du bootloader (syslinux) - Le noyau, le système de fichiers racine et les fichiers de configuration sont copiés dans l’image
- Après des tests de démarrage avec qemu, l’image peut être écrite sur une vraie disquette
- Un avertissement signale le risque de perte de données en cas de sélection du mauvais lecteur
Résumé final
- Version : 0.3.1 (décembre 2025)
- Noyau : 6.14.11
- BusyBox : 1.36.1
- Taille de l’image : 1.44MiB
- Espace restant : environ 253KiB
- Commandes prises en charge : manipulation de fichiers (
cat,cp,mv,rm,ls,mkdir), administration système (df,sync,mount,umount), traitement de texte (echo,more), éditeur (vi)
Intérêt
- Floppinux est une distribution ultra-légère optimisée pour apprendre la structure du noyau Linux et le processus de démarrage
- Elle parvient à faire tenir sur une seule disquette un environnement Linux complet capable de fonctionner sur du matériel réel
- Elle peut servir de plateforme d’exemple utile pour l’éducation, les expérimentations sur systèmes rétro et l’initiation au développement embarqué
1 commentaires
Réactions sur Hacker News
À Noël, quelqu’un a essayé de rendre un ordinateur de l’ère 32 bits réellement utilisable
Le problème n’était pas les performances, mais le support logiciel et les pilotes vidéo
Aujourd’hui, presque plus aucun paquet n’est compilé pour le 32 bits, donc même l’usage en CLI est limité par des dépendances 64 bits
Le noyau a aussi supprimé les anciens pilotes GPU, ne laissant que le mode VGA de base, où même la lecture MPEG2 peine
Il a fini par vouloir installer Debian 5 adaptée au matériel, mais les ISO de l’époque ne démarraient pas en USB, donc il a abandonné
Conclusion : ce genre de projet est amusant, mais difficile à utiliser au quotidien
L’ancienne interface est meilleure que le ruban, et des fonctions comme WordArt réveillent la nostalgie
Les fonctionnalités des versions modernes sont bien aussi, mais il est impressionnant qu’un logiciel vieux de presque 30 ans soit aussi abouti
NetBSD fournit toujours des paquets et pkgsrc pour i386
Lien vers le dépôt pkgsrc
Personnellement, je préfère le mode texte VGA au graphique
Il y a trop d’apps basées sur le navigateur et trop de programmes lents écrits en JS
C’est intéressant de penser que les LLM sont entraînés sur ce type de code
Il faisait aussi passerelle NAT et serveur web, et ça marchait très bien
Pourtant aujourd’hui, avoir l’impression que 16 Go ne suffisent pas a quelque chose d’ironique
Il permet de démarrer depuis une disquette ou un CD puis de chaîner le chargement vers l’USB, même sur de vieux PC
Je l’ai utilisé sur un Pentium MMX ; c’était lent, mais ça fonctionnait bien
La première distribution Linux que j’ai utilisée, c’était Damn Small Linux (DSL)
Elle avait d’abord servi pour tenter un portage sur GameCube, mais l’équipe principale de développement est ensuite passée à Gentoo
L’actuelle DSL 2024 est basée sur antiX 23 i386 et réduit les packs de langues et la documentation pour faire tenir un environnement de bureau dans la limite de 700 Mo
Un script de restauration permet de retélécharger les fichiers nécessaires
Site officiel
D’après les tests, Alpine était la distribution recommandée, mais je ne sais pas trop quoi penser de cette fiabilité
Testé sur un vrai 486, mais échec du démarrage
Avec 32 Mo de RAM installés, l’erreur « Booting kernel failed: Invalid Argument » apparaît
On suppose que cela vient du fait que le BIOS ne prend pas en charge la routine de carte mémoire E820h
On peut consulter la capture d’écran et la galerie sur matériel réel
La stratégie de persistance basée sur FAT12 proposée dans l’article est une approche intelligente pour économiser de l’espace
Mais la disquette n’ayant pas de journalisation, le risque de corruption en cas de coupure d’alimentation est élevé
À la place, utiliser un système de fichiers log-structuré comme JFFS2, ou sérialiser en
tarseulement à l’arrêt, pourrait être plus sûrJ’utilise FAT depuis des décennies et j’ai presque jamais eu de corruption de données
Encore aujourd’hui, la plupart des appareils embarqués utilisent FAT
En ajustant l’ordre des copies FAT1/FAT2 et des mises à jour de taille de fichier, on peut récupérer après un crash
Slackware 8 ou même les versions récentes de NetBSD gardent encore cette structure
Je me souviens de la disquette de démo QNX de 1999
Une interface graphique et un navigateur web se lançaient directement depuis un disque de 1,44 Mo
Je n’ai plus jamais revu ça ensuite
Ce genre de système existe donc encore aujourd’hui
Pour augmenter les 264 Ko restants, il suffit d’utiliser un format de disquette étendu
Comme les disques d’installation de Windows 95, un format en pistes de 21 secteurs permet de monter jusqu’à 1680 Ko
Les outils de formatage standard de Linux permettent aussi de créer ce type de disposition
Le bruit des disquettes et l’excitation du chargement me manquent
J’aimerais pouvoir régler ce son dans les paramètres
La phrase « graver une disquette en 5 minutes » m’a fait rire
Je me demande s’il faut vraiment formater la disquette
Si syslinux ou lilo peuvent charger directement le noyau depuis les secteurs de la disquette, ce serait plus simple
ext2 pourrait même être plus compact que FAT
Je me souviens avoir reçu Slackware en lot de 12 disquettes en 1997
Mais la qualité n’était pas terrible, donc l’installation était pénible
Je les téléchargeais par FTP depuis un VAX, puis je les transférais vers un PC DOS avec Kermit pour installer ; il fallait recommencer à cause de disquettes défectueuses
La série X servait à X11, et les séries A/B/C au système de base
Je l’avais fait tourner sur un système Coppermine à 933 MHz, puis plus tard j’avais essayé sans succès de compiler X11 après avoir remplacé le disque dur