Installer MSDOS sur une carte CompactFlash🔗
Introduction
Voilà, vous avez une machine ancienne de type Compatibles PC et vous souhaitez la faire fonctionner sous MS-DOS, son OS d'origine.
Comme on est en 2025, même si le disque dur de la machine fonctionne toujours, il vaut mieux investir dans un bridge IDE-Compact Flash.
Mais une fois le matériel acheté, comment faire pour créer une carte Compact Flash bootable. Parce que si vous n'avez ni disquette de boot, ni disque dur réel bootable, il faut bien une technique reposant sur un ordinateur moderne.
Ma solution qui est loin d'être une référence est un exemple simple d'implémentation.
Les outils
D'abord, il vous faut des disquettes d'installation de MS-DOS dans la version qui vous correspond. On peut en trouver sur winworldpc ou sur archive.org.
Ensuite, l'outil le plus simple que j'ai trouvé et qui fait le job, c'est tout simplement dosbox-x qui est d'ailleurs packagé sous Debian.
Et puis, bien sûr, il vous faut une carte Compact-Flash. Attention, sa volumétrie joue un rôle important. Et puis, côté ordinateur moderne, il faut de quoi lire la carte (sinon ça va être compliqué).
Enfin, ça va sans le dire, il vous faut une vieille bécane avec un contrôleur IDE et un connecteur 40 pins.
Le principe
- On va générer une image du contenu de la CF dans un simple fichier.
- Pour des raisons de simplification, ce fichier aura la taille de la carte CF.
- De cette manière, un simple dd suffira pour le copier dessus.
- Ce fichier image sera utilisé par dosbox-x qui sait utiliser ce genre de fichier comme un disque dur virtuel.
- On va configurer dosbox-x pour démarrer sur la disquette d'installation de MS-DOS en ayant identifié le disque dur C: comme notre image.
- Normalement, l'installeur MS-DOS devrait formatter le disque puis y installer les fichiers nécessaires pour le boot puis copier les autres fichiers qui permettent à l'OS de tourner.
La gestion des images et des types de disques
Sur les machines anciennes, le BIOS joue un rôle très important. A l'époque, il y a peu de mécanismes d'auto-configuration. Par exemple, quand on ajoute un disque dur, il faut l'indiquer dans le BIOS et configurer sa géométrie. Soit en utilisant des géométries déjà référencées dans le BIOS (selon ce que la boîte responsable du BIOS a mis dans l'EPROM), soit on utilise le type 47 qui permet à l'utilisateur de déclarer la géométrie manuellement.
Pour savoir comment déclarer la géométrie du disque, on va se baser sur la taille exacte de la carte CompactFlash. Dans mon cas, je récupère cette taille via la commande lsblk, tout simplement:
lsblk -b sdb 8:16 1 256901120 0 disk └─sdb1 8:17 1 254403072 0 part
On voit que la taille en octets est précisément de 256901120.
Dans les BIOS des années 90, on représente une géométrie en Cylindre, Tête, Secteurs. Chaque secteur occupe 512 octets. C'est la notation CHS.
Pour atteindre notre taille, on va utiliser un nombre de têtes à 16 qui est la valeur max du standard ATA; la taille de 63 pour le nombre de secteurs par piste (qui est la taille maximale pour les BIOS de l'époque). Reste à trouver le nombre de cylindres. C'est très facile:
nb cyl = taille en octets de la CF / (63 secteurs * 16 têtes * 512 octets)
Dans notre cas, on a nb cyl = 497.7777, soit 497 cylindres.
Création de l'image et installation de l'OS
Lancer dosbox-x et y dérouler les commandes qui suivent:
Z:\> keyb fr Z:\> mount d /tmp Z:\> D: D:\> imgmake cfdos.img -t hd -chs 497,16,63 -label AS_325SX -fat 16 D:\> imgmount 2 "cfdos.img" -size 512,63,16,497 -t hdd -fs none
imgmake est le programme chargé de créer notre image. Elle sera située dans /tmp/cfdos.img, répertoire monté dans dosbox-x sous la lettre D: (pour des raisons de simplicité d'accès). Ici, la clef, c'est la géométrie indiquée par l'option chs. Le système de fichiers sera en FAT16 car MS-DOS gère tout ce qui est inférieur à 512MB en FAT16 et pas FAT32.
imgmount permet de monter l'image disque comme un disque dur. On est obligé de spécifier aussi la géométrie du disque (dans un ordre différent). Le filesystème indiqué est none ce qui permet de ne pas monter le système de fichier. De ce fait, le disque est présent et il sera détecté par l'installeur MS-DOS de nos disquettes.
Ensuite, il suffit de monter une disquette de boot via le menu (Drive → A → boot from disk image). Quand l'installeur ms-dos demande de changer de disquette, aller dans le menu DOS et choisir "Change current floppy image".
Vous pouvez aller au bout de l'installation (qui occupe 3 disquettes).
Ensuite, il reste tout simplement à copier l'image sur la compact flash.
Pour ça, il faut brancher votre lecteur Compact Flash sur votre machine sous GNU/Linux. "Ejecter" la carte si elle se monte automatiquement, de manière à avoir accès au périphérique bloc de base.
Dans le cas qui suit, le lecteur de carte est /dev/sdb chez moi.
dd if=/tmp/cfdos.img of=/dev/sdb bs=512 sync
Test dans la machine cible
On replace la carte Compact Flash dans son logement.
On démarre la machine et on entre immédiatement dans le BIOS.
Suivant les BIOS, la présentation sera différente. Dans mon cas, je configure le disque dur avec les paramètres que nous avons vu plus haut:

Ensuite, normalement, la machine devrait booter:

Pour mettre de nouveaux fichiers sur la compact Flash, il suffit de la brancher à votre lecteur de carte et si votre GNU/Linux est bien configuré, il devrait auto-monter la carte correctement et vous pourrrez déposer vos fichiers directement dessus.
Conclusions
J'ai écrit ce petit article car j'ai eu du mal à trouver une solution fonctionnelle au sujet à partir d'un ordinateur sous GNU/Linux. Il existe en effet pléthore d'autres méthodes, à commencer par celle d'utiliser un lecteur de disquettes avec des disquettes bootables.