Avertissement : Il s'agit d'une opération très sensible. Vous pouvez très facilement endommager votre système et perdre des données. Ce qui a fonctionné pour moi peut ne pas fonctionner pour vous. Il serait sage de faire toutes les sauvegardes nécessaires avant de procéder.
Ces instructions concernent Linux Mint 17.1, mais les étapes devraient être similaires pour d'autres distributions Linux, en particulier celles basées sur Ubuntu. Je recommande d'utiliser KVM plutôt que VirtualBox ou VMware Player ou d'autres produits VMware. Pour obtenir des instructions sur la façon de faire fonctionner ce système avec un autre produit que KVM, voir le lien.
Pourquoi KVM ? D'après les recherches que j'ai effectuées, il semble qu'il y ait actuellement trois acteurs principaux dans cette catégorie. KVM, VirutalBox et quelques produits VMware. Les produits VMware ne sont pas open source et aucun d'entre eux n'est gratuit pour une utilisation commerciale. VirtualBox est gratuit et open source, mais si vous souhaitez ajouter la prise en charge de l'USB 2.0, vous devez installer un pack d'extension qui n'est pas censé être utilisé dans le cadre d'une utilisation professionnelle/commerciale. Même si l'USB 3.0 est pris en charge sans ce pack d'extension, la prise en charge de l'USB dans VirtualBox est plus problématique que dans les produits VMware ou KVM. KVM est un logiciel libre dont l'utilisation est gratuite, que ce soit pour un usage personnel ou professionnel/commercial. KVM évite les frais généraux en utilisant un module du noyau ajouté à Linux, ce qui améliore les performances et la compatibilité : http://blog.scalecomputing.com/kvm-or-vmware-why-kvm-is-right-for-the-times-part-1-of-2/
Dans les instructions suivantes, j'explique comment utiliser virt-manager qui utilisera KVM sous le capot, afin que vous puissiez utiliser une interface graphique au lieu de tout configurer dans KVM à travers un terminal.
-
Installez Linux et Windows 7 sur le même disque dur, sur des partitions séparées, si vous ne les avez pas déjà installés. Si vous les installez sur des disques séparés, reportez-vous aux instructions du lien. Configurez-les de manière à pouvoir effectuer un double démarrage entre les deux. Configurez vos partitions comme vous le souhaitez avant de continuer. Remarque : certaines installations Windows créent une partition distincte pour la mise en veille prolongée. Si vous souhaitez supprimer cette partition, c'est le moment de le faire. Vous devrez chercher des instructions à ce sujet, mais je sais que vous pouvez le faire à partir de Windows. Si vous ne le faites pas correctement/complètement, la partition peut se recréer. Par conséquent, si vous décidez de supprimer cette partition, redémarrez votre ordinateur et démarrez à nouveau Windows pour voir s'il recrée la partition.
-
Démarrer sous Linux.
-
Déterminez le chemin d'accès au disque dur qui contient à la fois Linux et Windows. En général, il s'agit de /dev/sda
Sous Linux Mint 17.1, vous pouvez lancer Disques à partir du menu principal pour voir le chemin d'accès à vos disques durs. Sélectionnez votre disque dur dans la liste des disques durs. Les informations relatives à votre disque dur occupent le reste de la fenêtre. En haut de ces informations, la taille de votre disque dur doit apparaître en gras et le chemin d'accès dont vous avez besoin en petit texte juste en dessous.
NOTE : A partir de maintenant, j'utiliserai /dev/sda
pour indiquer le chemin d'accès au disque dur contenant les partitions, tant pour Windows 7 que pour Linux. Vous devez remplacer ce chemin par le chemin correct.
-
Exécuter sudo fdisk -l /dev/sda
pour obtenir des informations sur les partitions de votre disque dur sous Windows 7. Vous verrez probablement deux partitions NTFS utilisées par Windows 7. La première est relativement petite. Elle contient le chargeur de démarrage et le système de récupération. L'autre partition NTFS devrait être beaucoup plus grande puisqu'elle contient l'installation proprement dite de Windows 7. Les deux partitions NTFS seront nécessaires pour la VM.
Objectif : Votre objectif est maintenant de créer un disque dur virtuel. Cela vous permettra de configurer le MBR pour qu'il soit et reste correct, que vous démarriez Windows 7 à partir d'une VM ou directement. Cela vous évitera de devoir lancer un utilitaire de réparation à chaque fois que vous passez du démarrage de Windows 7 directement à celui d'une VM. J'utilise device-mapper pour créer un disque dur virtuel mappé linéairement sur un périphérique loop back et mes deux partitions Windows 7. Le site Web qui m'a fourni la plupart de ces étapes vous propose d'utiliser le RAID, mais j'ai eu des difficultés à le faire fonctionner correctement. Avec le RAID, le disque virtuel était trop petit en raison de l'arrondissement de la taille des morceaux. https://unix.stackexchange.com/questions/217078/raid-mdadm-virtual-disk-too-small La mise en place d'une cartographie linéaire du device-mapper semble être une meilleure solution, et elle évite le problème de l'arrondi de la taille des morceaux. J'ai eu du succès avec device-mapper.
-
Examinez la sortie fdisk de l'étape précédente. Déterminez le nombre d'octets qu'occupe un secteur. Si vos secteurs sont de 512 octets comme les miens, cela facilitera les choses.
-
Examinez à nouveau la sortie de votre fdisk. Déterminez le nombre de secteurs non utilisés avant le début de la première partition. Dans mon cas, la première partition commence au secteur 2048, ce qui signifie que les 2048 premiers secteurs ne sont utilisés par aucune partition (0-2047). Ceci contient le chargeur de démarrage Grub.
-
Créez une image des octets de l'étape précédente à l'aide de la commande suivante. Vous devrez remplacer 2048 par le nombre correct de secteurs. Si vos secteurs ne font pas 512 octets, vous devrez également spécifier le paramètre bs=bytes_per_sector :
dd if=/dev/zero of=boot.mbr count=2048
Vous devriez maintenant avoir un fichier image nommé boot.mbr dans votre répertoire courant.
-
Examinez à nouveau la sortie de votre fdisk. Déterminez le chemin d'accès à vos partitions Windows 7. Pour moi, il s'agit des deux premières partitions listées et elles utilisent toutes deux NTFS. Mes deux chemins sont /dev/sda1
y /dev/sda2
NOTA: Dorénavant, j'utiliserai /dev/sda1
y /dev/sda2
pour faire référence aux partitions Windows 7. Vous devrez les modifier pour qu'elles correspondent au chemin d'accès correct de votre système.
-
Créer un dispositif de bouclage à partir du fichier image :
sudo losetup /dev/loop0 boot.mbr
Cela vous permet de mapper le périphérique loop0 à un disque virtuel.
-
Créez un fichier quelque part qui définira ce qui est mappé sur le disque virtuel. Ce fichier sera utilisé par device-mapper. J'ai placé le mien dans ~/vm/virtual_windows_disk_def.
-
Dans ~/vm/virtual_windows_disk_def, créez une ligne pour chaque mappage. Chaque ligne doit prendre la forme "logical_start_sector num_sectors linear destination_device 0". linear signifie simplement que nous effectuons un mappage linéaire. destination_device doit être le chemin du périphérique. Le 0 signifie que le mappage commencera au premier secteur du périphérique de destination. La première ligne doit mapper boot.mbr au début du disque virtuel. Vous aurez besoin d'une ligne supplémentaire pour chaque partition Windows 7. Voici le contenu de mon fichier :
0 2048 linear /dev/loop0 0
2048 3072000 linear /dev/sda1 0
3074048 447886719 linear /dev/sda2 0
C'est ainsi que j'ai obtenu le nombre correct de secteurs pour chaque ligne :
blockdev --getsize /dev/loop0
blockdev --getsize /dev/sda1
blockdev --getsize /dev/sda2
-
Vérifier si /dev/mapper/control est présent. Si ce n'est pas le cas, essayez de charger le module noyau dm_mod :
modprobe dm_mod
-
sudo dmsetup create virtual_windows_disk ~/vm/virtual_windows_disk_def
-
Assurez-vous que /dev/mapper/virtual_windows_disk a la bonne taille.
-
Lancez fdisk en mode interactif pour configurer deux partitions sur votre disque /dev/mapper/virtual_windows_disk afin qu'elles correspondent parfaitement et exactement à vos deux partitions Windows sur votre disque /dev/sda. Vous pouvez utiliser l'aide et les instructions à l'écran pour mener à bien ce processus. Si vous ne parvenez pas à configurer parfaitement les partitions, quitter au lieu d'écrire/sauvegarder ces partitions . Pour autant que je sache, ce sont les éléments qui doivent correspondre à chaque partition : Le secteur de départ, le secteur d'arrivée, le caractère amorçable ou non et le type de système de fichiers. Remplacez 512 par le nombre d'octets par secteur de votre disque /dev/sda (cela lancera fdisk en mode interactif) :
sudo fdisk -b 512 /dev/mapper/virtual_windows_disk
-
sudo chown your_username:group /dev/mapper/virtual_windows_disk
-
Dans le menu principal, lancez le gestionnaire de machines virtuelles (virt-manager).
-
Dans virt-manager, sélectionnez File->Add Connection.
-
Assurez-vous que l'hyperviseur est défini sur QEMU/KVM.
-
Assurez-vous que la case Connecter à l'hôte distant n'est pas cochée.
-
Assurez-vous que la case Autoconnect est cochée.
-
Cliquez sur "Connect" pour créer la connexion.
-
Faites un clic droit sur la connexion (localhost (QEMU)) et sélectionnez New.
-
Saisir un nom.
-
Pour "Choisissez la méthode d'installation du système d'exploitation", sélectionnez "Importer une image disque existante".
-
Cliquez sur le bouton "Transférer".
-
Sous "Fournir le chemin de stockage existant", cliquez sur Parcourir et sélectionnez /dev/md-0 (sur mon système, ce chemin a été automatiquement configuré comme un alias de /dev/mapper/virtual_windows_disk).
-
Continuez à avancer jusqu'à ce que la VM démarre. Cela devrait indiquer un problème qui doit être réparé. Windows ne devrait pas pouvoir démarrer à cause de ce problème, mais si vous obtenez ces résultats, vous êtes sur la bonne voie.
-
Forcer l'arrêt de la VM.
-
Attachez un DVD/image d'installation/réparation de Windows à la VM. Mon ordinateur est livré avec Windows déjà installé, mais Toshiba a fourni un moyen de créer des DVD d'installation/réparation. En ce qui me concerne, je dois utiliser le disque 4, car c'est le disque sur lequel se trouve l'environnement de récupération Windows. J'ai pu créer une ISO de ce disque à partir de Linux. Je préfère attacher l'ISO à la VM en tant que lecteur de CD plutôt que de placer le disque dans le lecteur, mais les deux méthodes fonctionnent.
-
Dans la zone de détails de la VM, sélectionnez "Boot Options". Assurez-vous que l'option "Enable boot menu" (activer le menu de démarrage) est cochée. Assurez-vous que les cases Disque dur et CDROM sont cochées, ce qui indique qu'il s'agit d'options de démarrage. Déplacez le disque dur vers le haut et le CDROM juste en dessous à l'aide des boutons fléchés. Cliquez sur le bouton "Appliquer" pour enregistrer vos modifications. Maintenant, lorsque la VM démarre, elle devrait attendre un peu avant de vous donner la possibilité d'appuyer sur F12 pour sélectionner le périphérique à partir duquel démarrer.
-
Démarrez la VM et appuyez sur F12 pour accéder au menu de démarrage.
-
Démarrer à partir du lecteur de DVD/CDROM. Cela devrait lancer le disque d'installation/réparation de Windows.
-
Les instructions d'un autre site web disent d'appuyer sur shift + F10 pour accéder à l'invite de commande, mais cela ne fait rien pour moi. J'ai dû sélectionner les options de récupération du système (au lieu des options de récupération Toshiba). Suivant.
-
Sur mon système, un diagnostic est automatiquement lancé et l'ordinateur propose de réparer le problème qu'il a détecté. Ne le laissez pas faire la réparation, choisissez l'autre option.
-
Assurez-vous que l'option "Utiliser les outils de récupération..." est sélectionnée au lieu de "Restaurer votre ordinateur à l'aide d'une image système...". Windows 7 doit apparaître dans la liste des systèmes d'exploitation. Assurez-vous qu'il est sélectionné et appuyez sur "Suivant". Cliquez sur le lien "Afficher les options avancées..."
-
Sélectionnez Ouvrir une invite de commande.
-
Entrez cette commande dans l'invite :
bootrec /FixMbr
Votre VM devrait maintenant être amorçable, mais ne le faites pas encore.
-
Déterminez la lettre de lecteur attribuée à votre installation Windows en saisissant les commandes suivantes à l'invite :
dir C:
dir D:
L'un d'entre eux devrait indiquer que la lettre du lecteur n'est pas vide et qu'elle contient vos fichiers. C'est la lettre de lecteur correcte dont vous aurez besoin pour l'étape suivante. Pour moi, il s'agissait du lecteur C.
-
Vous devez maintenant localiser la signature de votre lecteur dans le registre. Saisissez les commandes suivantes dans l'invite :
reg load HKLM\Computer_System D:\Windows\system32\config\system
regedit
-
Accédez à HKEY_LOCAL_MACHINE \Computer_System\MountedDevices. Localiser le \DosDevices\X où X correspond à la lettre du lecteur d'il y a deux étapes. Vous devrez faire référence aux données de cette entrée pour l'étape suivante.
-
Sans fermer l'éditeur de registres, activez la fenêtre de l'invite de commande. Saisissez les commandes suivantes :
diskpart
DISKPART> select disk 0
-
Pour l'étape suivante, vous devez remplacer les lettres à la fin par les quatre premiers jeux de caractères actuellement affichés dans la valeur de cette entrée dans l'éditeur de registre. Toutefois, vous devrez inverser l'ordre des jeux de caractères. Par exemple, si vous voyez ab cd ef gh, vous devrez avoir ghefcdab à la fin de la commande :
DISKPART> uniqueid disk id=ghefcdab
-
Entrez cette commande : exit
. Le programme diskpart devrait se terminer, vous laissant dans l'invite de commande normale.
-
Fermez l'éditeur de registre.
-
Entrez ceci dans l'invite de commande : reg unload HKLM\Computer_System
-
Fermez l'invite de commande.
-
Si vous voyez une option de redémarrage ou d'arrêt, faites-le maintenant. Sinon, demandez à la VM de s'arrêter. Si cela ne fonctionne pas, forcez la VM à s'arrêter. Si votre VM est arrêtée, laissez-la ainsi. Si elle a redémarré, arrêtez-la manuellement ou, si ce n'est pas possible, forcez-la à s'arrêter.
-
Dans les détails de votre VM, cochez la flèche "configuration" pour afficher plus d'options. Cliquez sur le bouton "Copy host CPU configuration". Cliquez sur le bouton "Appliquer". Vous avez terminé ! Les étapes suivantes vous aideront à confirmer que tout a fonctionné correctement.
-
Démarrer la VM. Le démarrage de Windows devrait se faire normalement, sans problème ni réparation. Arrêtez la VM.
-
Ne quittez pas l'écran des yeux pendant cette étape. Arrêtez votre système en choisissant la mise en veille prolongée (sinon, vous devrez répéter certaines étapes lorsque vous redémarrerez Linux). Démarrez l'ordinateur, puis démarrez directement Windows. Observez attentivement l'écran pour voir si des réparations se produisent ou sont nécessaires. Si tout est correct, l'ordinateur devrait démarrer sous Windows sans effectuer ou nécessiter de réparations. Sur mon système, lorsque les choses ne sont pas configurées correctement, Windows est automatiquement réparé, puis démarre comme si de rien n'était, c'est pourquoi vous devez regarder attentivement l'écran. Si une réparation est nécessaire, c'est que quelque chose s'est mal passé lors de la modification de la signature que vous avez effectuée dans diskpart. Démarrez sous Linux et répétez les étapes correspondantes en faisant très attention à ce que la signature soit correcte.
Les étapes consistant à créer le périphérique loop back et à configurer le lecteur virtuel /dev/dm-0 à l'aide de device-mapper devront être répétées chaque fois que vous démarrerez Linux. Vous devriez script ceci afin de pouvoir exécuter le script avant de démarrer virt-manager. Pour l'instant, ce script n'entre pas dans le cadre de cette réponse, mais je l'ajouterai peut-être plus tard après en avoir créé un pour mon système.