J'ai passé toute la journée d'hier à faire des recherches et j'ai finalement pu faire démarrer Windows XP. Il devrait également être quelque peu similaire pour d'autres systèmes d'exploitation. Mais l'opération est tout sauf banale.
Parce que c'est une opération dangereuse, je vous recommande de sauvegarder vos précieuses données.
Voici les étapes:
Préparation
Dans le cas de Windows XP, vous devez lui faire oublier les paramètres de lettre de disque et de partition actuels, vous devez donc effacer toutes les valeurs de la clé HKEY_LOCAL_MACHINE / MountedDevices sur la machine virtuelle avant la migration. Le noyau le reconstruira au prochain redémarrage. Sur les machines virtuelles Linux, cela signifie corriger le fstab après la migration.
Montage de l'image VDI
Vous ne pouvez pas simplement copier l'intégralité du VDI sur une partition, car il contient également un MBR. Vous devez copier uniquement la partition virtuelle, vous devez donc d'abord trouver un moyen de monter le VDI.
Vous avez besoin du nbd
pilote et de la qemu-nbd
commande. Sur Ubuntu, c'est dans le qemu-kvm
package.
Chargez d'abord le pilote nbd:
# modprobe nbd
Cela devrait faire entrer certains nbd
appareils /dev
.
Montez ensuite le VDI:
# qemu-nbd -c /dev/nbd0 path_to.vdi
Cela devrait faire /dev/nbd0p1
, /dev/nbd0p2
, /dev/nbd0p3
etc pour toutes les partitions virtuelles. Ceux-ci peuvent être montés comme n'importe quel appareil ordinaire.
Migration de la partition
Utilisez dd
pour cela, démontez les deux partitions avant l'opération:
# dd -if=<nbd_device> -of=<real_partition>
par exemple.:
# dd -if=/dev/nbd0p3 -of=/dev/sda4
Le fonctionnement du dd
est silencieux, cela peut prendre plusieurs minutes, voire une demi-heure. Pendant l'opération, vous pouvez ouvrir un terminal et utiliser fdisk -l
pour voir que tout se passe bien.
MISE À JOUR:
Apparemment, nbd n'est pas une solution infaillible. Cela peut provoquer une erreur d'E / S et faire échouer dd. De plus, le prochain essai échoue immédiatement. Vous pouvez également essayer de créer un disque brut VMDK avec cette commande (sous linux):
$ VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sda
Vous devez être dans le disk
groupe pour que cela fonctionne. Ajoutez ensuite ce vmdk à la machine virtuelle en tant que disque dur secondaire, puis utilisez un ISO Linux Live sur dd
la partition.
Correction du secteur d'amorçage de la partition NTFS
Ceci est la partie hackish.
Nous sommes presque prêts, mais Windows XP ne démarre pas, car nous devons définir le nombre de secteurs cachés du système de fichiers à l'offset 0x1C
. Il s'agit essentiellement d'un certain nombre de secteurs avant la partition NTFS. Nous pouvons obtenir ce numéro à partir de la fdisk -ul
commande. Le start
champ de la sortie indique à quel secteur commence la partition donnée, qui est essentiellement le nombre de secteurs avant la partition. Obtenez donc le nombre à partir de là, convertissez-le en hexadécimal en utilisant gcalctool par exemple.
Ouvrez la partition avec hexedit
, comme ceci:
# hexedit /dev/sda4
Ensuite, écrivez le nombre de secteurs cachés dans un petit ordre endian à l' 1C
offset. Little endiean signifie: 0xABCDEFGH
sera GH EF CD AB
. Si le nombre hexa est plus court que 8 chiffres, faites-le précéder de zéro.
Une fois terminé, enregistrez-le et quittez (Ctrl + X).
Configuration de GRUB
Vous devez dire à GRUB de démarrer directement cette partition, pour GRUB, ajoutez l'entrée de menu suivante:
title Microsoft Windows XP Professional
root (hd0,3)
savedefault
makeactive
chainloader +1
Où (hdX, Y)
identifie la partition. X est 0 pour le disque dur par défaut, 1 pour /dev/sda
, 2 pour /dev/sdb
etc. Y est le numéro de partition. 0 pour /dev/sda1
, 1 pour /dev/sda2
, etc.
Cela devrait être similaire pour GRUB2 aussi, mais il utilise une syntaxe un peu différente pour les entrées de menu.
Touche finale
La nouvelle partition NTFS est prête à démarrer. Mais vous avez encore besoin de piratage pour atteindre le bureau Windows XP. D'autres systèmes peuvent nécessiter différents hacks. Le boot.ini doit d'abord être corrigé.
[boot loader]
timeout=1
default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
Définissez le numéro de parition en conséquence. Je l'ai installé sur le / dev / sda4. Le numéro de partition doit donc être 3.
Vous devrez peut-être corriger l'entrée MountedDevices dans le Registre si Windows se fige juste avant l'écran de connexion.
Le registre est à <path to windows>/system32/config/system
vous pouvez le voir par chntpw
. Cela peut être un problème si la lettre de votre lecteur système n'est pas C. Comme chntpw
les capacités d'écriture du registre sont assez limitées, vous devez recourir à un éditeur hexadécimal, comme ghex2 pour le corriger. Vous devez trouver \DosDevices\C:
et remplacer le C par une lettre de lecteur différente, F
dans mon cas.
Après cela, vous devriez pouvoir accéder au bureau, vous devez maintenant rechercher tous les pilotes, mais cela sort du cadre de ce didacticiel.
Sources
Déplacer Windows XP vers une autre partition
Monter un VDI sous Linux