Booter un windows natif dans une machine virtuelle : Winception

Introduction

Alors comme ça vous en avez eu marre de développer sous windows, parce que bon cygwin c’est bien mais ça ne vaut pas un bon vieux bash natif. Et puis il faut avouer que compiler les 3000 classes réparties dans les 15 modules maven, ça va nettement plus vite sous Linux. Et les zolis effets graphiques quand on déplace une fenêtre, ça roxxe !

Mais voila, vous n’aviez pas pensé au fait que les specs que vous fournissent vos fonctionnels préférés sont toujours au format docx-théoriquement-supporté-nativement-mais-qui-fait-crasher-libreoffice-quand-on-ouvre-le-fichier, et puis l’intégration d’Exchange c’est pas encore ça. Le pire de tout c’est qu’aujourd’hui, vendredi, vous devez saisir vos feuilles de temps dans une application qui ne fonctionne *que* sous IE. Et pas de chance, même en spoofant le user-agent, le meilleur navigateur au monde n’arrive pas à faire un rendu correct de cette appli :(

Heureusement, en installant votre narval chic, vous avez eu la présence d’esprit de conserver votre installation de Windows XP préférée (« Au cas où… »)

We have to boot deeper.

La première chose qui doit maintenant vous venir à l’esprit est “Machine virtuelle !!”. Oui, mais il faut retrouver une ISO d’un Windows qui traine, se taper toute l’installation, 3 reboots par driver détecté, puis installer les mises à jour critiques (et encore 10 reboots, merci Windows Update !) et un IE récent pour Sharepoint, et enfin un pack Office pour ouvrir les specs. Alors que faire ? Est-ce qu’on ne pourrait pas utiliser notre installation de Windows existante ?

Bien sûr que si, et le moyen pour y arriver avec VirtualBox est le raw hard disk access.

Virtualize ‘em all!

Les plus bilingues d’entre vous auront compris qu’on va utiliser un accès à l’arrachedirect au disque dur. L’idée est de créer une image disque virtuelle qui va pointer sur une partition existante. Enfin, avec un peu de chance ça fonctionnera comme ça. Par contre si vous tentez de faire une image de la partition de l’OS hôte pour booter sur lui-même, je ne vous cache pas que ça risque de mal se terminer (“attention les enfants, n’essayez pas de faire ça chez vous !”).

Je pars du principe que vous êtes sous Linux. Ben oui, si vous êtes sous Windows, l’intérêt de booter un autre Windows est limité (à part si vous êtes nostalgique ?). Vous aurez besoin du package “mbr” pour la suite :

1
2
# apt-get install mbr
# install-mbr --force myBootRecord.mbr

Là où d’habitude on mettrait une partition du genre /dev/sda1 pour installer le bootloader, on choisit de l’installer dans un fichier classique nommé “myBootRecord.mbr”. Ce MBR va ensuite être utilisé pour la création de l’image disque :

1
# VBoxManage internalcommands createrawvmdk -filename ./WinXP.vmdk -rawdisk /dev/sda -partitions 1 -mbr ./myBootRecord.mbr -relative

Cette commande magique (euh non, interne) va créer une image au format .vmdk raw, pointant sur la partition /dev/sda avec le contenu du MBR puisé dans le fichier qu’on vient de créer. Il faudra bien évidemment adapter la partition à votre configuration (un petit fdisk -l sera votre ami).

Maintenant que notre image disque est prête, il ne nous reste qu’à créer une machine virtuelle classique qui va l’utiliser (lancer VirtualBox en root si vous êtes sous Linux, sinon vous aurez des problèmes de droits pour accéder à la partition Windows). Je ne détaille pas cette étape car elle est des plus banales.

Attention cependant : avant de booter pour la première fois votre machine virtuelle, je vous conseille vivement de booter nativement votre Windows et de créer un nouveau profil matériel. En effet, comme VirtualBox va simuler un matériel complètement différent de celui do votre machine physique, Windows va passer son temps à faire de la détection de changements et de la réinstallation de drivers à chaque démarrage. Avec les profils matériel, à chaque boot vous aurez le choix entre le profil “hardware” et le profil “VM”, selon que vous soyiez en mode natif ou virtualisé.

Ça y est, vous êtes maintenant prêt à booter pour la première fois une partition Windows depuis votre pingouinmanchot préféré. La première fois, ne soyez pas trop pressé car Windows va détecter le matériel virtualisé et installer un tas de nouveaux drivers…

Références

Manuel de VirtualBox : Chapter 9. Advanced topics
VirtualBox (virtualbox): How to boot from an existing Win XP partition under Ubuntu
Forums ubuntu : Boot an existing XP (Physical HD) install with VirtualBox

VN:R_U [1.9.22_1171]
Rating: 0 (from 0 votes)
Share

À propos de Bastien Jansen

Vous pouvez facilement me retrouver sur twitter, linkedin, voire même le blog Excilys (l'autre ;-)). De temps en temps je poste aussi sur mon blog perso.
Ce contenu a été publié dans Outils, Trucs & astuces. Vous pouvez le mettre en favoris avec ce permalien.

2 réponses à Booter un windows natif dans une machine virtuelle : Winception

  1. Autre possibilité : tu configures ta VM Windows une bonne fois pour toute, mais tu la met sur Dropbox, comme ça elle est dispo partout ;-) .

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)
  2. Tu as acheté des actions chez Dropbox ou quoi ? :D

    VN:R_U [1.9.22_1171]
    Rating: 0 (from 0 votes)

Laisser un commentaire