Programmer sous FreeDOS 1.4

FreeDOS 1.4 est sorti en avril 2025.

Quelques notes, pour mémoire.

Site officiel
Dépôts officiels FreeDOS
Site YouTube FreeDOS

Après avoir installé la version minimale de FreeDOS 1.4 dans VirtualBox, je monte l’image du BonusCD (téléchargée depuis le site officiel sous le nom FD14BNS.iso) dans le lecteur optique virtuel de la machine.

FDIMPLES est un outil visuel et interactif de FreeDOS qui permet de parcourir, installer et supprimer des paquets inclus sur les supports de distribution de FreeDOS (comme les CD Live, BonusCD, etc.). Il s’agit d’un gestionnaire de paquets qui lit les médias d’installation pour identifier les logiciels disponibles à l’installation ou à la suppression. Pour l’utiliser, il suffit de lancer la commande FDIMPLES depuis l’invite de commandes de FreeDOS.

Pour programmer, j’ai choisi le compilateur Open Watcom C/C++et l’ éditeur de texte FED car il permet de plier / déplier le code. J’ai également installé l’assembleur NASM et l’éditeur hexadécimal uHex.

Dans C:\>FDAUTO.BAT, je rajoute à la fin :

cd PERSO

REM *** FED 2.24c ***
alias fed=C:\APPS\FED\FED.EXE

REM *** OPEN WATCOM C/C++ 1.9 ***      => à mettre en dernier
C:\DEVEL\WATCOMC\OWSETENV.BAT

Mémo FED :
Alt pour accéder au menu
CTRL-C pour fermer
CTRL-F pour plier / déplier le code

En pratique, pour être efficace, je n’utilise pas l’éditeur de texte sous FreeDOS :
1 – Je code avec mon éditeur sous Debian.
2 – Dans VirtualBox, Je vérifie que la machine virtuelle FreeDOS 1.4 est éteinte.
3 – J’exécute ce fichier bash (Vers_FreeDOS.sh), le paquet libguestfs-tools étant installé :

#!/bin/bash
# Interpréteur : on utilise bash explicitement

# Si on n'est pas dans un terminal, se relancer dans un terminal graphique
if ! [ -t 1 ]; then
    mate-terminal -e "bash -c '$0; read -p \"Appuie sur Entrée pour fermer...\"'"
    exit
fi

set -e
# Arrête le script immédiatement si une commande échoue (exit on error)
# Évite que les erreurs passent silencieusement et causent des dégâts en cascade

set -x
# Mode debug : affiche chaque commande avant de l'exécuter (précédée de "+")
# Utile pour suivre l'exécution pas à pas

mkdir ~/VHD
# Crée un répertoire temporaire "VHD" dans le dossier home (~)
# Ce dossier servira de point de montage pour l'image disque

cd "/media/$USER/Fichiers Eric/VirtualBox/FreeDOS 1.4"
# Se déplace dans le répertoire contenant l'image VHD
# $USER est automatiquement remplacé par le nom de l'utilisateur courant

guestmount -a "FreeDOS 1.4.vhd" -m /dev/sda1 ~/VHD
# Monte l'image disque VHD via libguestfs (paquet guestfs-tools)
#   -a "FreeDOS 1.4.vhd" : spécifie le fichier image à utiliser
#   -m /dev/sda1         : monte la première partition du disque virtuel
#   ~/VHD                : point de montage (le dossier créé plus haut)
# Permet d'accéder au contenu de la VM sans la démarrer

cp -R "/media/$USER/Fichiers Eric/VirtualBox/FreeDOS 1.4/PERSO" ~/VHD
# Copie récursivement le dossier PERSO dans l'image montée
#   -R : copie les sous-dossiers et fichiers récursivement
# C'est l'opération principale : injecter des fichiers dans la VM

guestunmount ~/VHD
# Démonte proprement l'image VHD
# Équivalent d'un umount, mais adapté aux images guestfs
# Important : à faire avant de supprimer le point de montage

rm -r ~/VHD
# Supprime le répertoire de montage temporaire devenu inutile
#   -r : suppression récursive (nécessaire pour un dossier)
# Nettoyage final — le dossier devrait être vide après guestunmount

# --- Message de succès ---
set +x  # On désactive le mode debug pour un affichage propre
echo ""
echo "✅ Succès ! Le dossier PERSO a été copié dans l'image FreeDOS."
echo ""

4 – Dans VirtualBox, je démarre la machine virtuelle FreeDOS 1.4
5 – Sous FreeDOS, je compile mon fichier source avec : wcl source.c -q

Mon programme de test du mode 13h est ici :
https://github.com/eserandour/Mode13h_OpenWatcom_FreeDOS

https://allthingsopen.org/articles/how-to-write-your-first-freedos-program
https://www.both.org/?p=12007
https://opensource.com/article/21/9/programming-dos-conio

Installation de VirtualBox 7.2.6 dans Debian 13

Au préalable, aller dans le BIOS :
Avancé > Configuration Processeur > Technologie Intel Virtualization > Active

Site officiel : https://www.virtualbox.org

Télécharger VirtualBox (7.2.6) et VirtualBox Extension Pack (7.2.6) :
=> https://download.virtualbox.org/virtualbox/7.2.6/virtualbox-7.2_7.2.6-172322~Debian~trixie_amd64.deb
=> https://download.virtualbox.org/virtualbox/7.2.6/Oracle_VirtualBox_Extension_Pack-7.2.6.vbox-extpack

Dans la console :

cd Téléchargements
wget https://download.virtualbox.org/virtualbox/7.2.6/SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS
sudo gdebi virtualbox-*.deb

Ouvrir VirtualBox et installer l’extension téléchargée précédemment :
Paramètres > Extensions > Ajoute une nouvelle extension

Dans la console :

Pour connaître les versions installées de headers / image :
uname -a
apt policy linux-headers-amd64 linux-image-amd64
Installation :
sudo apt-get install linux-headers-amd64
sudo apt-get install linux-image-amd64

Redémarrer l’ordinateur.

Dans la console :

cd /sbin
sudo ./vboxconfig

Erreur rencontrée et résolution :

VT-x is being used by another hypervisor (VERR_VMX_IN_VMX_ROOT_MODE). VirtualBox can’t operate in VMX root mode. Please disable the KVM kernel extension, recompile your kernel and reboot (VERR_VMX_IN_VMX_ROOT_MODE).

Vérifier si KVM est activé :

lsmod | grep kvm

Désactiver KVM temporairement :

sudo modprobe -r kvm_intel  # Pour les processeurs Intel
sudo modprobe -r kvm_amd    # Pour les processeurs AMD

Désactiver KVM de manière permanente (optionnel) :

sudo nano /etc/modprobe.d/blacklist-kvm.conf
Ajouter les lignes suivantes dans ce fichier pour bloquer KVM :
blacklist kvm
blacklist kvm_intel
blacklist kvm_amd

Redémarrer l’ordinateur.

On peut maintenant installer des machines virtuelles…

Si besoin, installer les Additions invité sur la machine virtuelle (permet notamment le partage de dossiers entre l’hôte et l’invité).

Pour une désinstallation complète de VirtualBox :

sudo apt remove --purge virtualbox* -y

Installer GeoGebra 5 sous Debian 13

GeoGebra 6 n’est plus disponible à l’installation pour Debian. Le lien suivant concerne GeoGebra 5 (Version 5.4.920.0 du 10/03/2026).

=> https://download.geogebra.org/package/linux-port

Décompresser l’archive GeoGebra-Linux-Portable-5-4-920-0.tar.bz2.
Autoriser l’exécution du fichier geogebra-portable comme un programme.

geogebra.desktop (voir ci-dessous) est à mettre dans le répertoire /home/$USER/.local/share/applications. $USER est à remplacer par un identifiant, ci-dessous également.

[Desktop Entry]
Type=Application
Name=GeoGebra
Comment=Créer des constructions mathématiques et des appliquettes
Exec=/home/$USER/.local/share/geogebra/GeoGebra-Linux-Portable-5-4-920-0/geogebra-portable
Icon=/home/$USER/.local/share/geogebra/geogebra.png
Terminal=false
Categories=Education;

Installer Logisim-evolution 4 sous Debian 13

Mis à jour le 09/04/2026

Logisim-evolution est un simulateur de circuits logiques.

Télécharger logisim-evolution-4.1.0-all.jar depuis https://github.com/logisim-evolution/logisim-evolution/releases

Dans la console :

Si le répertoire Logisim-evolution n’existe pas déjà, je le crée et installe Logisim-evolution à l’endroit voulu :

mkdir ~/.local/share/logisim-evolution
cd Téléchargements
mv logisim-evolution-4.1.0-all.jar ~/.local/share/logisim-evolution/

Je télécharge l’icône Logisim-evolution et l’installe à l’endroit voulu :

wget http://entropie.org/3615/download/logisim-icon-256.png
mv logisim-icon-256.png ~/.local/share/logisim-evolution/

Pour intégrer le programme au menu de Mate, je crée un fichier logisim-evolution.desktop dans le répertoire ~/.local/share/applications :

cd ~/.local/share/applications
nano logisim-evolution.desktop


[Desktop Entry]
Name=Logisim-evolution
Comment=Graphical tool for designing and simulating logic circuits
Exec=java -jar /home/$USER/.local/share/logisim-evolution/logisim-evolution-4.1.0-all.jar ($USER est à adapter)
Icon=/home/$USER/.local/share/logisim-evolution/logisim-icon-256.png ($USER est à adapter)
Terminal=false
Type=Application
Categories=Electronics;

=> Tutoriels vidéos (INSA Rennes)

Installation de Debian 13 (Trixie)

Debian 13 est sortie le 09/08/2025.

RÉCUPÉRER L’ISO :

On peut télécharger l’ISO proposée sur la page d’accueil du site Debian (en haut à droite) mais l’installation par le réseau est assez longue. Pour accélérer l’installation, je préfère choisir de télécharger l’ISO du premier DVD. L’adresse de base https://cdimage.debian.org/debian-cd/ est à compléter en fonction de la version choisie :
https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/

Remarque : Les anciennes versions sont téléchargeables ici : https://cdimage.debian.org/cdimage/archive/

Pour tester les signatures des fichiers téléchargés, on peut utiliser dans la console :
sha256sum debian-*.iso
sha512sum debian-*.iso
En ce qui me concerne, je mets le fichier iso à tester avec les fichiers SHA256SUMS et SHA512SUMS dans un même répertoire et je tape dans la console :

sha256sum --ignore-missing -c SHA256SUMS
sha512sum --ignore-missing -c SHA512SUMS
La réponse est par exemple :
debian-13.0.0-amd64-DVD-1.iso: Réussi
debian-13.0.0-amd64-DVD-1.iso: Réussi

CRÉER UNE CLÉ USB BOOTABLE :

Dans la console :
sudo fdisk -l (pour avoir la liste des disques)
Attention ! Danger !
sudo dd if=/chemin/debian-*.iso of=/dev/sdc bs=4M && sync (à adapter)

RENTRER DANS LE BIOS :

Au préalable : Débrancher le disque « données », par sécurité.
Sur mon PC : F2
Rentrer le mot de passe Administrateur => Démarrage / UEFI

DÉBUTER L’INSTALLATION :

Choisir Graphical Install

Faut-il créer une nouvelle table de partition sur ce disque ? Oui
/dev/sda
/dev/sda1 primaire (512 MB) F ESP Partition système EFI
/dev/sda2 primaire (8 GB) F swap swap
/dev/sda3 primaire (60 GB) F ext4 /
/dev/sda4 primaire (le reste en GB) F ext4 home

Logiciels à installer :
* Environnement de bureau Debian
* Mate
* Utilitaires usuels du système
L’ordinateur reboote…

MODIFIER ÉVENTUELLEMENT LE FICHIER SOURCES.LIST DES DÉPÔTS :

Dans la console :
sudo nano /etc/apt/sources.list


# deb cdrom:[Debian GNU/Linux 13.0.0 _Trixie_ ...]/ trixie contrib main non-free-firmware

deb http://ftp.fr.debian.org/debian/ trixie main non-free-firmware
deb-src http://ftp.fr.debian.org/debian/ trixie main non-free-firmware

deb http://security.debian.org/debian-security trixie-security main non-free-firmware
deb-src http://security.debian.org/debian-security trixie-security main non-free-firmware

# trixie-updates, to get updates before a point release is made;
# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
deb http://ftp.fr.debian.org/debian/ trixie-updates main non-free-firmware
deb-src http://ftp.fr.debian.org/debian/ trixie-updates main non-free-firmware

# This system was installed using removable media other than
# CD/DVD/BD (e.g. USB stick, SD card, ISO image file).
# The matching "deb cdrom" entries were disabled at the end
# of the installation process.
# For information about how to configure apt package sources,
# see the sources.list(5) manual.

# -------------------------------------------------------------------------------

# Rétroportages vers stable : trixie-backports
deb http://ftp.fr.debian.org/debian/ trixie-backports main non-free-firmware
deb-src http://ftp.fr.debian.org/debian/ trixie-backports main non-free-firmware

POUR METTRE LE SYSTÈME À JOUR :

Dans la console :
Pour récupérer les nouvelles listes de paquets :
sudo apt-get update
Pour réaliser une mise à jour :
sudo apt-get upgrade
Pour supprimer un paquet :
sudo apt-get remove nom_paquet
Pour supprimer des paquets qui ne sont plus nécessaires :
sudo apt-get autoremove

LES PAQUETS SUPPLÉMENTAIRES QUE J’INSTALLE ÉVENTUELLEMENT :

Dans la console (c’est tellement plus rapide !) :
sudo apt-get install nom_paquet

Installés d’office avec Mate :
gimp => https://www.gimp.org / Détails du paquet
libreoffice => https://www.libreoffice.org / Détails du paquet

à compléter…

RÉCUPÉRER LES DONNÉES D’UN ANCIEN DISQUE DUR :

Pour changer de propriétaire / groupe :
On remplacera ci-dessous $USER par l’identifiant souhaité.

cd /home/$USER
sudo chown -R $USER:$USER $USER (propriétaire:groupe dossier)