L'installation et l'utilisation de VMWare Player (ou Server) sous Ubuntu est largement couverte sur le web, à commencer par les articles du planet. La capacité de VMWare de charger un système depuis un disque physique fait partie des réels avantages comparés à d'autres solutions de virtualisation.

Par défaut, VMWare est alors configuré pour lancer le chargeur de démarrage (le bootloader, Grub) présent sur le disque physique. Et bien entendu, celui-ci est en général configuré pour démarrer automatiquement sur le système Ubuntu (sinon, pourquoi utiliser Vmware ?)

C'est un risque majeur : lancer par erreur dans VMWare le système hôte (Ubuntu) à la place du système invité peut alors gravement endommager votre Linux préféré. Une solution existe : démarrer la virtualisation sur une disquette, qui possèdera son propre Grub et forcera le démarrage sur la partition Windows (ou autre).

La suite présuppose que vous avez déjà une configuration fonctionnelle, et ne couvre que la création d'une disquette virtuelle. C'est une adaptation succincte des articles VMWare: when two OSs access the same partition et Running VMWare on a Physical Partition

  • passer en mode administrateur (root) pour plus de facilité

sudo su

  • se placer dans le répertoire qui contient vos fichiers de configuration *.vmx et *.vmdk

cd vmware

  • créer le fichier qui sera la disquette virtuelle

dd if=/dev/zero of=bootdisk.img bs=1k count=512

  • la formater

mke2fs -F bootdisk.img

  • monter la disquette dans /mnt

mount -oloop bootdisk.img /mnt

  • préparer la configuration de grub
mkdir -p /mnt/boot/grub
cp /boot/grub/stage[12] /mnt/boot/grub/
  • configurer le grub en créant le fichier /mnt/boot/grub/grub.conf et en y posant le contenu suivant (par exemple avec gedit)
timeout=3
title=Windows
root            (hd0,0)
chainloader     +1
makeactive

NB : bien sur, il faut adapter la ligne "root (hd0,0)" suivant la partition ou se trouve le système à lancer.

  • dupliquer le fichier grub.conf en menu.lst (c'est un ajout plus ou moins spécifique à Ubuntu qui n'était pas mentionné ailleurs mais qui s'est révèlé nécessaire)

cp /mnt/boot/grub/grub.conf /mnt/boot/grub/menu.lst

  • démonter l'image de la disquette

umount /mnt

  • initialiser le grub à partir de cette configuration
grub --device-map=/dev/null <<EOF
device (fd0) bootdisk.img
root (fd0)
setup (fd0)
quit
EOF
  • éditer votre fichier .vmx (décrivant votre machine virtuelle) et remplacer la configuration de la disquette par
floppy0.present = "TRUE"
floppy0.fileType = "file"
floppy0.fileName = "bootdisk.img"
floppy0.startConnected = "TRUE" 
  • c'est fini ;) Vous pouvez lancer votre VM comme d'habitude, elle démarrera sur la disquette en ne présentant comme possibilité que votre partition Windows. Vous ne risquer plus d'endommager votre partition Linux.

vmwaredisk.png

C'est bien sur moins bien que si c'était mieux. Un bête script serait capable de réaliser automatiquement les étapes précédentes, et il regrettable qu'il ne soit pas (encore) disponible. Il est aussi possible de rendre les manipulations précédentes un peu plus graphique en utilisant VMWare Server et en créant la disquette partiellement sous Windows.