14/10/2011

Lancer votre dual-booting Windows dans une VirtualBox

Mes études me forcent à utiliser des logiciels disponibles uniquement sous Microsoft Windows. Sur ma nouvelle machine j’ai donc décidé de laisser le Windows en dual-boot. Mais je souhaite aussi pouvoir le lancer virtualisé dans mon environnement Linux !

Avec un peu d’astuce c’est tout à fait possible, grâce au mode d’accès disque “raw”. Voici comment j’ai réussi à lancer mon Windows physique à l’intérieur d’une VirtualBox.

Préparation

Je présuppose que vous avez déjà une installation dual-boot fonctionnelle. Dans votre environnement Linux, installez VirtualBox ainsi que l’utilitaire mbr :

# apt-get install virtualbox mbr

Si vous souhaitez lancer cette machine virtuelle en tant qu’utilisateur, nous devons ajouter l’user aux groupes nécessaires :

# gpasswd -a tito vboxusers
# gpasswd -a tito disk

Finalement, essayez de retrouver votre CD d’installation de Windows.

Création du disque virtuel

Pour permettre à VirtualBox de lancer Windows, nous devons créer un disque virtuel bootable. Pour cela on crée un Master Boot Record. Il faut d’abord identifier où se trouve votre Windows. Le mien, comme beaucoup d’installations constructeur de nos jours, tient en deux partitions : la boot sur /dev/sda1 et le système sur /dev/sda2. Je suppose que vous saurez aisément situer le vôtre.

$ mkdir Virtual7 && cd Virtual7
$ install-mbr -e12 --force ./vm.mbr

Remarquez l’option -e12 qui signifie “partitions 1 et 2”, modifiez selon votre système!

Nous créons maintenant le disque virtuel :

$ VBoxManage internalcommands createrawvmdk -filename ./win7.vmdk -rawdisk /dev/sda -partitions 1,2 -mbr ./vm.mbr -relative

À nouveau, modifiez les arguments rawdisk et partitions selon votre système.

Création de la VirtualBox

Vous pouvez maintenant lancer l’interface graphique de VirtualBox et créer une nouvelle machine virtuelle. Lorsque l’assistant demande le disque dur virtuel, allez chercher le fichier Virtual7/win7.vmdk.

Réparer Windows

Si vous essayez de lancer la machine virtuelle maintenant, Windows vous gratifiera d’une jolie erreur vous demandant de démarrer sur le CD d’installation pour réparation. C’est tout à fait normal!

Après avoir monté votre CD d’installation Windows dans VirtualBox, bootez à partir de celui-ci. Choisissez vos options linguistiques et cliquez sur “Réparer l’installation”. La machine virtuelle va redémarrer sous votre Windows!

Problèmes divers

  • Dans certains cas, la configuration par défaut de VirtualBox ne permet pas de démarrer Windows 7, ni même son CD de réparation! (Erreur 0xc0000225) Pour régler le problème, dans la configuration de la machine virtuelle cochez “Activer les IO-APIC” sous l’onglet Système.
  • Étrangement, la réparation du démarrage de Windows a modifié le comportement vis-à-vis de GRUB. J’ai donc modifié mon /boot/grub/grub.conf pour que Windows démarre depuis (hd0,1) plutôt que (hd0,0).
  • Même s’il sont bien pratique en milieu virtualisé, les additions client (guest addons) de VirtualBox font planter Windows lorsqu’il est lancé physiquement. Ne les installez donc pas.

En savoir plus

  1. Julien
    | #1

    Bonjour.

    Avez-vous déjà pensé à changer d’études?

  2. malic
    | #2

    Avez vous essayer de redémarrer le windows xp sans la vm?

  3. | #3

    @Julien Non, je fais les meilleures études du monde 😀 Mais j’envisage d’aller frapper à la porte des éditeurs de ces logiciels

    @malic Oui, c’est pour ça que je précise que j’ai dû modifier le GRUB. Mis à part ça, le dual-boot est toujours fonctionnel à 100%!

  4. | #4

    @Julien
    Si tu es volontaire ou connais des gens motivés pour fonder une APRIL en Belgique, pour défendre nos libertés logicielles pendant nos études, et régler le problème évoqué plutot que de l’ignorer comme tu le proposes, ou le contourner, comme Tito le propose, tiens nous au courant :)

    En attendant, c’est une solution très pratique, merci Tito pour cet article !

  5. CoolRaoul
    | #5

    Cette manip doit entraîner une demande de réactivation de Windows il me semble (le boot du système virtualisé va se trouver en présence d’une modification de matériel)

    Comment cela-se passe-t-il ?

  6. | #6

    @CoolRaoul Effectivement, je pense que c’est ce qui nécessite la réparation avec le CD d’installation. Mais ensuite pas de soucis pour booter dans un mode ou l’autre, bien que le matériel soit différent.
    J’y vois une évolution dans le bon sens par rapport aux vérifivations (essentiellement hal.dll) de Windows XP, mais je m’avance peut-être un peu 😀

  7. Eclipso
    | #7

    Si je ne me trompe pas, il existe l’équivalent de cette astuce sur Mac -logiciel payant cependant- qui se nomme VM Ware Fusion 😉

    Enfin je crois, ou alors je n’ai pas compris le but de cet article! ^^”

  8. kamui57
    | #8

    salut

    j’ai un thème gtk avec du texte blanc donc je ne vois strictement rien en tapant ici vu que le fond est blanc (je sais pas pourquoi le texte est pas gris)

    Pour démarrer un Windows OEM, sans cd d’installation c’est possible ? (Windows 7)

  9. | #9

    @kamui57 Oui je l’ai fait sur ma machine avec l’OEM préinstallé

  10. Flm
    | #10

    Il me semble que la virtual box ne fait que du 32bits. Ca cause pas de problème si l’installation physique de notre Windows est en 64bits?

  11. | #11

    Non, VirtualBox est compatible 64 bits lorsqu’il tourne sur une plateforme 64 bits.

    Mon installation physique de Windows est 64bits et démarre sans soucis.

  12. maurice
    | #12

    bonjour, je suis sous windows 7 64bit et je ne peux plus utiliser mes vieux jeux qui tournaient sous wind 98 xp…. j’ai donc installé virtualbox avec un choix pour une version XP pour pouvoir les utiliser. mais lorsque je lance vitualbox, j’ai ce message: FATAL; Could not read from the boot mediul! System halted
    le programme n’arrive donc pas à booter.
    Je sais que j’ai le choix entre booter sur le disque du ou le CD.
    Ma question est:
    Dois-je mettre le cd de windows XP dans le lecteur CD pour booter dessus et installer XP sur le syspème virtuel??? Ce qui me permettra après que XP ait été installé de booter sur la partition du disque dur sur laquelle j’aurai installer XP et d’onc d’utiliser virtualbox.

    Merci de votre aide, car je ne suis pas un pro de l’informatique

    Amicalement
    Maurice

  13. | #13

    @maurice Oui, il faut mettre le CD de Windows XP dans votre ordinateur pour commencer l’installation de la machine virtuelle.

    Un tutoriel très complet ici : http://www.siteduzero.com/tutoriel-3-36484-virtualisez-un-systeme-d-exploitation-avec-virtualbox.html#ss_part_3

    À noter que si vous possédez une version Intégrale ou Entreprise de Windows il y a une machine virtuelle XP incluse : http://windows.microsoft.com/fr-FR/windows7/install-and-use-windows-xp-mode-in-windows-7

  14. maurice
    | #14

    Bonjour TITO

    Merci pour votre réponse et les explications grace au liens que vous m’avez donné. Tout est parfaitement expliqué et je ne devrai pas avoir de problème pour le faire. C’est vraiment un beau travail et je vous en félicite. Concernant la version de windows que je possède, ce n’est que la version familiale. donc pas possible.
    Je suis pour l’instant au fin fond de l’Afrique pour le boulot et je n’ai hélas pas mon disque XP avec moi. Dés mon retour en France je m’y lance. Merci encore pour tout et je ne manquerai pas de vous contacter si tout explose par une mauvaise manip de ma pars ”rire”.
    Cordialement

    Maurice

  15. galex-713
    | #15

    Bonjour, j’ai suivi ton tuto, et cela va m’être extrêmement utile, je n’ai pas toujours envie de rebooter sous Windows pour faire de la RE (je débute juste) mais c’est bien obligatoire pour jouer aux jeux vidéos, et je viens de mettre Windows sur un Disque dur externe.

    Mais il y a un problème: J’ai un disque d’installation de Windows 7 de Alienware, mais il ne propose aucune option “réparer” après le choix de langue, il demande directement l’acceptation des conditions d’utilisation puis juste après le choix de la partition à écraser pour installer Windows 7. Et je ne peux plus rebooter sous Windows pour créer un disque de réparation.

    Que me conseille tu ?

  16. | #16

    @galex-713 L’étape de réparation n’est pas nécessaire pour une installation classique de VirtualBox

  17. galex-713
    | #17

    Non mais ce n’est pas une installation classique mais bien un Windows 7 installé physiquement sur un disque dur externe physique dont je te parle.
    Sinon j’ai trouvé un lien de téléchargement vers l’iso d’un CD de réparation Windows 7 ici: http://techfleece.com/2011/05/06/windows-7-repair-disks-and-windows-vista-recovery-disks/

    En esperant que la modification de registre ne pose pas de problème, je refuse de réinstaller Windows avec touts les soucis de pilotes que ça m’avait causé la dernière fois.

  18. Ned
    | #18

    Hello,

    super merci pour ce tuto, qui nous a permis à un collègue & moi de nous affranchir des limites que nous impose notre dir’sys’.

    2 petites choses : sous ubuntu 10.04 64 bits, il nous a fallu lancer la commande VBoxManage en sudo, et donc ensuite faire un chown pour redevenir propriétaire des .vmdk. De plus, il a fallu faire un “sudo chmod 666 /dev/sda1” (une seule partition dans notre cas, c’est pour du win XP) pour que tout fonctionne.

    Sauf que, alors que pour mon collègue ça a fonctionné impec, pour ma part il m’arrive un truc particulièrement débile : pas moyen de d’accéder à la console de récupération, elle me réclame le mot de passe du compte “Administrateur” (aucun compte n’a ce nom). Je suis (mon compte est) admin local de la machine, j’ai changé les mots de passe des 2 compte admin’ de la dir’sys’, j’ai même créé un compte nommé “Administrateur” puisqu’il n’y en avait pas, mais la console ne veut rien savoir. Or en passant par “Offline NT Password & Registry Editor”, je constate qu’aucun des comptes n’est repéré “ADMIN”. J’imagine que via les group Policy notre dir’sys’ a bidouillé quelque chose, mais me voilà totalement bloqué, obligé de jouer avec le dual-boot :(
    As-tu une solution pour recréer un compte admin’ réellement reconnu comme tel par la console (et non pas juste un compte faisant partie des admin) ?

  19. Ned
    | #19

    @Ned
    je me répond à moi-même : je pense que ma source de problème vient du fait que j’avais préalablement installé seven en dual-boot sur cette machine, que j’ai ensuite écrasé pas ubuntu. Ce serait donc le bootloader de seven qui “râle”… en tout cas je suis preneur de pistes pour m’en sortir : désinstall de ce bootloader (et comment ?) ou autre.
    D’avance merci à tous ceux qui peuvent me suggérer des pistes

  20. | #20

    @Ned Sous Windows XP il y a effectivement un compte “Administrateur” qui existe par défaut. Il n’est visible que lorsque tu démarres en mode en Sans Échec.

    Cela ne devrait pourtant pas t’empêcher de réparer le MBR… Je ne sais pas trop quoi te conseiller.

  21. Ned
    | #21

    suite et fin de mes mésaventures (la nuit porte conseil)
    – j’ai rebooté sous xp (donc passage grub > ntloader > “ancienne version de windows”) pour supprimer le fichier système caché “bootmgr” à la racine de mon disque C
    – redémarrage, boot sous nux, lancement de la VM : freeze de celle-ci (mais pas les anciens messages d’erreur)
    – sur les conseils de mon collègue à qui ce freeze était arrivé, j’ai activé les IO-APIC dans les paramètres systèmes de la VM : redémarrage : ça maaaaarche 😀

    Donc un grand merci à toi pour ce tuto, à mon collègue (aka DavidTheDolphin) pour son aide, et zut à mes admin système pour m’avoir doté d’un XP tripatouillé. Pour leur punition, ils ont leurs mots de passe locaux changés :p

  22. | #22

    @Ned Heureux de lire ça :)

    Ça me fait penser à un autre bug de VirtualBox lorsqu’il héberge Windows7 : si vous avez des freezes un peu aléatoires et qui se débloquent au bout de quelques dizaines de secondes, je vous conseille de passer au chipset “PIIX3” plutôt que “ICH9” dans les paramètres Système de la Vbox.

  23. Nathan
    | #23

    Bonjour,

    Tout d’abord, merci beaucoup pour ce tuto.
    Toutefois, je rencontre un léger problème qui est le suivant, et que je n’arrive pas à régler (je ne suis pas du tout expert en la matière…).

    J’ai suivi la procédure, mais une fois à l’étape de la création du disque dur virtuel, je rencontre un problème.

    – j’ai windows vista
    – vista est sur sda1 (le nom du disque dur est “ACER”) (sda2 c’est linux)
    – voici comment j’ai “personnalisé” la ligne de commande:
    “$ VBoxManage internalcommands createrawacer -filename ./ACER -rawdisk /dev/sda -partitions 1 -mbr ./vm.mbr -relative”
    – Message d’erreur: “Syntax error: Invalid command ‘createrawacer'”

    Devant mal m’y prendre, pourriez-vous me guider pour entrer la ligne de commande exacte?
    Merci beaucoup d’avance!

  24. Nathan
    | #24

    My mistake! J’ai réussi à créer le disque, mais par contre il n’est pas reconnu par virtualbox lors de la création du dd virutel…@Nathan

  25. Nathan
    | #25

    @Nathan Encore une fois, autant pour moi, j’ai réussi à trouver le fichier, mais maintenant j’au une autre erreur:

    “The medium ‘/home/nathan/Virtual7/win7.vmdk’ can’t be used as the requested device type.
    Code d’erreur :
    NS_ERROR_FAILURE (0x80004005)
    Composant :
    Medium
    Interface :
    IMedium {53f9cc0c-e0fd-40a5-a404-a7a5272082cd}
    Fonction appelée :
    IVirtualBox {c28be65f-1a8f-43b4-81f1-eb60cb516e66}”

    Avez-vous une idée de solution? merci beaucoup

  26. | #26

    A mon avis tu as fait une erreur dans une des deux commandes. Voici les commandes exactes si ta configuration est bien comme tu le dis :

    install-mbr -e1 --force ./vm.mbr
    VBoxManage internalcommands createrawvmdk -filename ./win7.vmdk -rawdisk /dev/sda -partitions 1 -mbr ./vm.mbr -relative

    Mais attention je vois souvent des Windows installé sur deux partitions plutôt qu’une, même si la première est cachée. Vérifie tes partitions avec gparted.

    Vérifie aussi que tu t’es ajouté dans le groupe disk et que tu t’es reconnecté depuis.

  27. | #27

    J’ai googlé ton numéro d’erreur et en fait je me trompe peut-être dans mon diagnostic. Je pense que tu avais déjà essayé d’installer dans VirtualBox ce .vmdk mais tu l’as modifié depuis.

    Des procédures de sécurité empêchent cela.

    Si tu n’as aucune VM configurée, je te conseille de repartir sur une base saine en supprimant tous les paramètres de VirtualBox depuis un terminal (après t’être assuré d’avoir quitté VirtualBox) :

    $ rm -R .VirtualBox/ "VirtualBox VMs"

    Après ça réessaye et tu devrais avoir plus de chance pour booter ton Windows 😉

  28. tomasm2k
    | #28

    Il serait intéressant d’aller plus loin avec un hyperviseur kvm ou xen, puis libvirt, pci-stub et vfio, le tout en parallèle.
    J’me colle au TP, s’il y en a que ça intéresse, je n’suis pas contre un coup de main et quelque conseil.
    J’ai trouver l’approche intéressante, mais les performance sont très médiocre. C’est pourquoi je poursuis dans cette lourde branche du, pci/vga passthrough. j’suis pas un ingé et pas tout a fait un noob, j’en chie pas mal malgré beaucoup de doc parcouru sur le sujet, j’ai encore du mal a faire mon choix entre xen et kvm…
    De plus j’ai un matos assez récent et j’ai du mal a séparer mes sorties sur mon APU A10.
    Virtualbox & ubuntu sont assez critiqué, je serais plus favorable a xen & debian.
    Merci pour ce post c’était intéressant tout de même. 😉 @+

  29. | #29

    @tomasm2k Pour l’utilisation que j’en fais, VirtualBox était une solution suffisante. Mais effectivement une solution en kvm serait très intéressante !

    Je serais intéressé de lire tes résultats, si tu veux un peu d’aide n’hésite pas à nous rejoindre sur IRC où il y a beaucoup de gens compétents dans le domaine : #geekfault sur irc.geeknode.org

  1. | #1
  2. | #2