Top 10 des meilleurs robots nettoyeurs de piscine 2020 Avis et guide d'achat
30 octobre 2020
Top 6 des meilleures lunettes de moto en 2020 Avis et guide d'achat
30 octobre 2020

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.

//]]>