Supposons que vous découvriez des données d'entreprise critiques dans un ancien fichier de feuille de calcul DOS et qu'Excel ne puisse pas lire le fichier. Si l'ancien programme fonctionnait à l'origine sous DOS, vous pouvez démarrer une copie de FreeDOS et y installer l'ancien programme pour extraire ou exportation les données dans un format de fichier commun, comme un fichier CSV séparé par des virgules.
Vous pouvez suivre nos instructions pour installer et démarrer FreeDOS à l'aide de la machine virtuelle QEMU. Mais après avoir installé FreeDOS, comment installer et exécuter l'ancien programme dans QEMU?
Vous pouvez monter une image disque QEMU en utilisant deux méthodes de base: en utilisant un décalage pour monter l'image directement, ou en utilisant le outils-libguestfs
paquet.
Linux peut monter le format d'image de disque brut de QEMU, en supposant qu'il sache où trouver le début de la partition du lecteur C: sur le disque virtuel. Le disque virtuel peut contenir plusieurs partitions, mais pour la plupart des installations de systèmes d'exploitation hérités comme DOS, vous n'avez probablement qu'une seule partition. Il s'agit du lecteur C:.
Examinons la sortie de Linux fdisk
programme. En utilisant le -l
option listera les partitions sur le disque virtuel:
$ fdisk -l image.img Image disque.img: 100 Mio, 104857600 octets, 204800 secteurs Unités: secteurs de 1 * 512 = 512 octets Taille du secteur (logique / physique): 512 octets / 512 octets Taille d'E / S (minimum / optimal): 512 octets / 512 octets Type d'étiquette de disque: dos Identificateur de disque: 0x00000000 Device Boot Start End Sectors Size Id Type image.img1 * 63 204623 204561 99,9 M 6 FAT16
Ici, le lecteur C: est la première et la seule partition du lecteur virtuel, répertoriée comme image.img1
Pour déterminer le décalage du lecteur C :, vous devez connaître le secteur de départ de cette partition. La sortie de fdisk
montre cela comme 63.
Pour calculer le décalage, vous devez également connaître la taille du secteur. Cette image de disque virtuel a des secteurs de 512 octets. Vous calculez le décalage comme le produit du décalage et de la taille du secteur: 63 × 512 = 32256.
Utilisez cette valeur de décalage pour monter le lecteur virtuel C: à partir de Linux:
$ mkdir / tmp / dos $ sudo mount -o boucle, offset = 32256 image.img / tmp / dos $ ls / tmp / dos AUTOEXEC.BAT COMMAND.COM FDCONFIG.SYS FDOS KERNEL.SYS $ sudo umount / tmp / dos
Vous pouvez automatiser le calcul à l'aide d'un script Bash. Le script doit d'abord rassembler les valeurs dans un format facilement analysable. Sur mon système Linux, j'utilise le -o
option avec fdisk
pour spécifier les colonnes à imprimer. Puisque je n'ai besoin que de faire correspondre la partition (périphérique) et la valeur de démarrage, j'utilise ceci fdisk
commande pour lister les colonnes dont j'ai besoin:
$ fdisk -l -o Périphérique, Démarrer image.img Image disque.img: 100 Mio, 104857600 octets, 204800 secteurs Unités: secteurs de 1 * 512 = 512 octets Taille du secteur (logique / physique): 512 octets / 512 octets Taille d'E / S (minimum / optimal): 512 octets / 512 octets Type d'étiquette de disque: dos Identificateur de disque: 0x00000000 Démarrage de l'appareil image.img1 63
Et un script Bash peut analyser cette sortie à l'aide de Gawk pour calculer lui-même le décalage:
#! / bin / bash # utilisation: qemu-mount {imagefile} # 1er argument: fichier image brute QEMU if ($ # -ne 1); puis echo 'utilisation: fichier image qemu-mount' echo 'Monte un fichier image brut QEMU dans / tmp / dos' sortie 1 Fi start = $ (fdisk -l -o Appareil, Démarrer $ {1} | grep "^ $ {1} 1" | gawk '{print $ 2}') secteurs = $ (fdisk -l $ {1} | grep '^ Unités: secteurs de' | gawk '{print $ (NF-1)}') offset = $ (($ start * $ secteurs)) (-d / tmp / dos) || mkdir / tmp / dos sudo mount -o boucle, offset = $ offset $ {1} / tmp / dos
Après avoir monté l'image de disque virtuel QEMU sur le / tmp / dos
point de montage temporaire, vous pouvez lire et écrire des données sur le lecteur virtuel C :. C'est un moyen pratique de copier un programme d'installation de programme hérité sur la machine virtuelle ou de copier des données hors de la machine virtuelle. Cependant, vous ne devez monter l'image de disque virtuel que lorsque QEMU n'est pas en cours d'exécution. Si vous essayez de monter une image disque QEMU pendant son utilisation, vous risquez de corrompre le disque virtuel.
Lorsque vous avez terminé d'accéder à l'image du disque virtuel depuis Linux, n'oubliez pas de démonter l'image avec le monter
commander.
le outils-libguestfs
package fournit un ensemble d'outils pour accéder aux images de disque de machine virtuelle. Cette boîte à outils comprend guestmount
, ce qui facilite le montage d'une image disque QEMU à partir de Linux. Si votre distribution n'inclut pas ce package par défaut, vous devrez peut-être installer le libguestfs logiciel séparément. Cependant, de nombreuses distributions Linux, y compris Fedora, Red Hat Enterprise Linux, Debian et Ubuntu fournissent un outils-libguestfs
package que vous pouvez installer via votre gestionnaire de packages.
Deux options disent guestmount
comment accéder à l'image disque QEMU. le --ajouter fichier d'image
L'option spécifie l'image de disque virtuel avec laquelle travailler et la --monter dispositif
option dit guestmount
quelle partition utiliser à partir de l'image disque. Vous devez indiquer le périphérique en utilisant un chemin Linux standard, tel que / dev / sda1
pour la première partition de l'image de disque virtuel.
Avec ces deux options, le montage de l'image de disque virtuel à partir de Linux est une commande sur une seule ligne:
guestmount --add image.img --mount / dev / sda1 / tmp / dos
Après un moment, cela monte le lecteur virtuel C: sur le point de montage temporaire / tmp / dos. Vous pouvez accéder aux fichiers sur l'image du disque virtuel / tmp / dos
à l'aide d'outils Linux standard, tels que cp
et mv
, pour copier des données dans et hors du disque virtuel. Veillez à ne monter l'image disque que lorsque QEMU n'est pas en cours d'exécution, ou vous risquez de corrompre le disque virtuel.
Lorsque vous avez terminé d'utiliser le lecteur virtuel C:, vous pouvez démonter le système de fichiers à l'aide du guestunmount
commander.