Comment copier le contenu de VirtualBox VDI sur une partition et démarrer le système d'exploitation à partir de celle-ci?

12

Je suis un utilisateur Linux mais je garde une ISO compressée de Windows XP avec moi sur une clé USB pour le cas où j'ai absolument besoin de Windows pour faire quelque chose. Cela fonctionne dans VirtualBox la plupart du temps.

Mais maintenant, je veux jouer à certains jeux, donc je voudrais exécuter l'image Windows en mode natif. Mon ordinateur n'a pas de lecteur de CD et ne peut donc pas simplement graver l'ISO et effectuer une installation normalement.

Ce que j'essaie de faire, c'est de déplacer l'image Windows installée vers une partition NTFS physique sur mon disque dur et de configurer GRUB pour me permettre de le démarrer en double.

J'ai trouvé de nombreux didacticiels qui traitent de la création de VDI sur un disque physique. Mais ils supposent que je veux écraser tout mon disque. Le déplacement de l'image du disque brut avec ddvers la partition a entraîné une partition corrompue.

J'ai également essayé l'astuce VMDK pour utiliser cette partition vide et y installer Windows. Bien que la phase en mode texte de l'installation se termine sans problème, la machine virtuelle ne fonctionne pas, se bloque et continue de redémarrer ou se bloque immédiatement (selon la façon dont j'ai créé le VMDK, avec -rawdisk /dev/sda3ou -rawdisk /dev/sda -partition 3).

Calmarius
la source

Réponses:

4

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 nbdpilote et de la qemu-nbdcommande. Sur Ubuntu, c'est dans le qemu-kvmpackage.

Chargez d'abord le pilote nbd:

# modprobe nbd

Cela devrait faire entrer certains nbdappareils /dev.

Montez ensuite le VDI:

# qemu-nbd -c /dev/nbd0 path_to.vdi

Cela devrait faire /dev/nbd0p1, /dev/nbd0p2, /dev/nbd0p3etc pour toutes les partitions virtuelles. Ceux-ci peuvent être montés comme n'importe quel appareil ordinaire.

Migration de la partition

Utilisez ddpour 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 ddest silencieux, cela peut prendre plusieurs minutes, voire une demi-heure. Pendant l'opération, vous pouvez ouvrir un terminal et utiliser fdisk -lpour 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 diskgroupe pour que cela fonctionne. Ajoutez ensuite ce vmdk à la machine virtuelle en tant que disque dur secondaire, puis utilisez un ISO Linux Live sur ddla 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 -ulcommande. Le startchamp 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' 1Coffset. Little endiean signifie: 0xABCDEFGHsera 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

(hdX, Y)identifie la partition. X est 0 pour le disque dur par défaut, 1 pour /dev/sda, 2 pour /dev/sdbetc. 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/systemvous pouvez le voir par chntpw. Cela peut être un problème si la lettre de votre lecteur système n'est pas C. Comme chntpwles 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, Fdans 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

Calmarius
la source
0

vous pouvez essayer d'utiliser partimage et gdisk pour faire du taht. Prenez gdisk ou un autre programme de partition et redimensionnez votre disque actuel / configurez une partition sur un disque quelque part. ce sera idéalement une partition principale. Je garde généralement la partition 1 pour Windows et 2+ pour les données Linux.

une fois qu'une partition est configurée, vous pouvez utiliser le gdisk ou un autre clone fantôme pour créer des fichiers de sauvegarde ou une image directe sur l'autre lecteur. il est possible de configurer une connexion réseau à l'hôte si vous avez besoin de déposer le fichier de cette façon ou si vous pouvez créer des fichiers img puis copier du fichier vmdk vers votre système hôte ... puis utiliser le logiciel d'image pour restaurer la partition à l'emplacement que vous avez créé sur le système hôte

configurez grub au besoin pour ajouter le démarrage à cette partition ntfs.

Kendrick
la source
vous pouvez probablement aussi monter le vmdk dans un gestionnaire qui permettrait au logiciel d'image de le lire directement depuis l'hôte jsut dépend de la façon dont le logiciel d'image est.
Kendrick
J'ai passé toute la journée d'hier à faire des recherches et j'ai enfin réussi à faire démarrer Windows XP. Je vais l'écrire en détail. Ce n'est pas anodin.
Calmarius
C'est assez ironique, mais je devrai faire ce processus bientôt. J'ai un PC qui n'aime pas installer Solaris pour une raison quelconque, je dois donc extraire les données d'un VM que j'ai sur la nouvelle machine.
Kendrick