{{tag>sysadmin virtualisation vm kvm qemu dos ms-dos}}
====== KVM : Installer MS-DOS 6.22 ======
===== Environnement =====
:TODO_DOCUPDATE:
Création du fichier disque :
newgrp libvirt-qemu
mkdir ~/KVM/ms-dos6.22
qemu-img create -f qcow2 ~/KVM/ms-dos6.22/vda 500M
Création de la VM avec **virt-install** :
virt-install --name msdos6.22 \
--metadata title="MS-DOS 6.22",description="Microsoft DOS 6.22" \
--osinfo msdos6.22 \
--machine pc --cpu 486 --memory 64 --vcpu 1 \
--pm suspend_to_mem.enabled=off,suspend_to_disk.enabled=off \
--features kvm.hidden.state=on,acpi=off,pae=off \
--graphics vnc \
--sound sb16 \
--audio id=1,type=pipewire \
--install no_install=yes \
--boot fd,hd,bootmenu.enable=on \
--controller type=usb,model=none \
--input type=mouse,bus=ps2 \
--input type=keyboard,bus=ps2 \
--disk device=floppy,bus=fdc,path=/home/yoann/KVM/sysinstall/ms-dos6.22/ms-dos6.22-fd1.ima \
--disk path=/home/yoann/KVM/msdos6.22/vda,format=qcow2 \
--disk device=cdrom,bus=ide \
--network model=pcnet,network=default \
--autoconsole graphical \
--qemu-commandline="-display default,show-cursor=off" \
--qemu-commandline=env=PIPEWIRE_RUNTIME_DIR='/run/user/1000' \
--dry-run
A valider :
* Ici on utilise spécifiquement VNC et pas SPICE : SPICE supporte le transfert du son de l'invité à l’hôte lorsque le controleur audio ICH9 est utilisé. Ici nous souhaitons émuler une SoundBalster 16.
La procédure d'installation se lance automatiquement lors de la mise sous tension de la VM.
Pour charger la deuxième disquette demandée par l'installateur :
virsh change-media --domain ms-dos6.22 fda --eject
virsh change-media --domain ms-dos6.22 fda --source /home/yoann/KVM/install_files/ms-dos6.22-d2.ima --insert
On procède de la même manière pour introduire l' image de la disquette 3. En fin de procédure, on retire la dernière disquette
Retirer la disquette 1 présente dans la configuration de la VM. Le lecteur fda est préservé mais sera vide au prochain démarrage :
virsh change-media --config --domain ms-dos6.22 fda --eject
# Pour vérifier que le lecteur est bien vide
virsh domblklist --domain ms-dos6.22
Arrêter la VM
# NB : pas d'effet de virsh shutdown
virsh destroy ms-dos6.22
Modifier la séquence de boot pour démarrer directement sur le disque interne :
virsh edit --domain ms-dos6.22
Tester le système :
virsh start ms-dos6.22
remote-viewver vnc://localhost
Créer un snapshot :
virsh snapshot-create-as --domain msdos6.22 fresh-system-install --description="Installation initiale système seul."
===== Support du CD-ROM =====
Avant de modifier les fichiers de configuration, sauvegarder l'état de la VM :
virsh snapshot-create --domain ms-dos6.22
En cas d'erreur, on pourra facilement retourner à l'état initial avec la commande ''virsh snapshot-revert''
Copier les pilotes ''OAKCDROM.SYS'' dans le dossier ''C:\DRIVERS\CDROM'' puis modifier le fichier ''C:\CONFIG.SYS'' Ajouter la ligne :
DEVICEHIGH=C:\DRIVERS\CDROM\OAKCDROM.SYS /D:CD01
Modifier le fichier AUTOEXEC.BAT, ajouter la ligne en début de fichier :
LH C:\DOS\MSCDEX.EXE /D:CD01
Redémarrer la VM depuis le système hôte :
virsh reset --domain ms-dos6.22
La VM détecte à présent le lecteur CDROM :
{{dos-boot-cdrom-detected.png}}
===== Support de la souris =====
MS-DOS 6.22 n'est pas fournit par défaut avec le support de la souris. Le projet [[https://cutemouse.sourceforge.net/|CuteMouse]] propose des pilotes compatibles, entre autre, avec l' environnement virtualisé KVM/QEMU.
cd /tmp
wget "http://cutemouse.sourceforge.net/download/cutemouse21b4.zip"
# Création d'une image disque
mkfs.msdos -C ctmouse2.1.img 1440
# Monter l'image et décompresser l'archive
sudo mount -t msdos -o loop,rw,uid=1000,gid=1000 ctmouse2.1.img /mnt/
unzip cutemouse21b4.zip -d /mnt/
sudo umount /mnt
Monter l'image disque précédemment créée dans le lecteur de disquette de la VM :
# Utiliser le chemin complet vers l'image
virsh change-media ms-dos6.22 fda /full/path/to/ctmouse2.1.img --insert
Depuis le système invité :
A:
CD BIN
CTM-FR
Ejecter le disque virtuel et redémarrer la VM :
virsh change-media ms-dos6.22 fda --eject
virsh reset ms-dos6.22
:TODO_DOCUPDATE:
TEST en cours
# Création d'une image disque
qemu-img create -f qcow2 ~/KVM/sysinstall/ms-dos6.22/drivers-disk.qcow2 1440
# Attacher l'image au lecteur de l'invité
virsh change-media --live ms-dos6.22 fda ~/KVM/sysinstall/ms-dos6.22/drivers-disk.qcow2
# Formater le disque depuis l'invité
FORMAT A:
===== Support du son =====
COPY A:\DRIVERS\SB16\SBBASIC.EXE C:\DRIVERS\SB16
C:
CD \DRIVERS\SB16
Déclarer la variable BLASTER dans config.SYS
EDIT CONFIG.SYS
erreur
Not enough conventionnal memory is available.
Remove some or all resident programs before running INSTALL.
Press a key to continue.
Après installation des pilotes et redémarrage de la VM, toujours pas de son.
Vérifier que qemu supporte pipewire :
qemu-system-x86_64 -audiodev help | grep pipewire
===== Suppression des snapshots =====
Une fois la configuration validée, on peut supprimer le ou les snapshots :
===== Applications =====
* MS Dos Shell
* Norton Commander
* Norton Backup
* [[https://winworldpc.com/product/lan-manager/2x|MS LAN Manager 2.2]]
[[https://dosdays.co.uk/dos_software_index.php|Liste d'applications et jeux DOS]]
===== Références =====
* [[https://blog.raduzaharia.com/system-emulation-using-qemu-ms-dos-on-a-80486-cpu-b477431064aa|QEMU : Installer DOS sur un système émulé 80486 (raduzaharia.com) (en)]]
* [[https://gunkies.org/wiki/Installing_MS-DOS_on_Qemu| Installer MS-DOS via QEMU (gunkies.org) (en)]]
* [[https://www.qemu.org/docs/master/ | Documentation en ligne QEMU (qemu.org) (en)]]
* [[https://people.redhat.com/~cohuck/2022/01/05/qemu-machine-types.html | Les types de machines de QEMU (redhat.com) (en)]]
* [[https://archive.org/download/msdos622fra|Disquettes d'installation MS-DOS 6.22 (archive.org) (en)]]
* [[https://www.chaoscontrol.org/stories/install-ms-dos-6.22-in-a-virtual-machine-for-fun-and-profit/|Installer MS-DOS 6.22 dans Virtualbox (chaoscontrol.org) (en)]]
* [[https://bugzilla.redhat.com/show_bug.cgi?id=672987|virt-install ne démarre pas depuis la disquette (redhat.com) (en)]]
* [[https://www.ndchost.com/wiki/libvirt/change-media|virsh : charger un média (ndchost.com) (en)]]
* [[https://stackoverflow.com/questions/2019463/shutdown-computer-in-ms-dos-using-acpi|Comment arrêter une VM sous DOS via ACPI (stackoverflow.com) (en)]]
* [[https://madsenworld.dk/con_auto/index-uk.htm | Guide de modification de CONFIG.SYS et AUTOEXEC.BAT (madsenworld.dk) (en)]]
* [[https://theblackzone.net/posts/2018/msdos622-in-qemu/|Installer MS-DOS 6.22 avec QEMU (theblackzone.net) (en)]]
* [[https://dfarq.homeip.net/using-a-cd-rom-drive-in-ms-dos/|Utiliser le lecteur CD-ROM sous DOS (dfarq.homeip.net) (en)]]
* [[https://www.richud.com/wiki/Ubuntu_Create_Floppy_Image|Création d'image disquette (richud.com) (en)]]
* [[https://www.philscomputerlab.com/creative-labs-drivers.html|Pilotes Sound Blaster (philscomputerlab.com) (en)]]
* [[https://askubuntu.com/questions/1314825/how-to-enable-sound-in-qemu|Comment activer le son dans QEMU ? (askubuntu.com) (en)]]
* [[https://libvirt.org/formatdomain.html#audio-backends|Les backends audio dans QEMU (libvirt.org) (en)]]
* [[https://discussion.fedoraproject.org/t/unable-to-properly-setup-sound-for-qemu-kvm/136152|Paramétrer le son pour une VM QEMU-KVM (fedoraproject.org) (en)]]
* [[https://blog.vmsplice.net/2011/04/how-to-pass-qemu-command-line-options.html|Comment passer des arguments à QEMU via libvirt ? (vmsplice.net) (en)]]
* https://www.qemu.org/docs/master/system/qemu-manpage.html
* https://oneuptime.com/blog/post/2026-03-02-configure-spice-remote-display-kvm-ubuntu/view
* https://www.dosdays.co.uk/topics/Software/drivers.php
* https://gitlab.com/qemu-project/qemu/-/work_items/2561
* https://www.reddit.com/r/VFIO/comments/18ixpm9/how_can_pipewire_backend_on_qemu/
* https://www.os2museum.com/wp/sound-blaster-diagnose-and-disabled-mpu-401/