{{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/