Virtualiser Windows 7 sur Xen

 

Nous allons voir dans cet article comment virtualiser Windows 7 avec Xen sur une Debian Lenny. Eh oui même un libriste 100% converti à besoin de temps en temps aussi de comprendre comment les autres systèmes fonctionnenent et surtout j'aimerais voir comment intégrer cette nouvelle version de Windows sur un réseau avec des serveurs GNU/Linux. Cette installation peut s'appliquer pour toutes les versions de Windows (XP,Vista,2000....). Avant de commencer, il faut vérifier que votre processeur possède les instructions nécessaires pour faire de la virtualisation matérielle. Il faut exécuter la commande suivante :

# egrep -e 'vmx|svm' /proc/cpuinfo

Pour les processeurs Intel, ce sera les instructions vmx. Pour les processeurs AMD, ce sera les instructions svm.

 

Installation de Windows

On crée une partition lvm pour notre système :

# lvcreate -L20G -n windows7 xen_disk

On modifie le fichier de configuration de Xen : /etc/xen/xend-config.sxp, on précise que VNC doit écouter sur toutes les adresses de la machine, et il faut aussi préciser la langue du clavier :

(vnc-listen '0.0.0.0')
(keymap 'fr')

Il est aussi possible de définir un mot de passe pour VNC. Puis on crée le fichier de configuration de la vm : /etc/xen/windows7.cfg :

import os, re
arch = os.uname()[4]
if re.search('64', arch):
   arch_libdir = 'lib64'
else:
   arch_libdir = 'lib'

kernel = '/usr/lib/xen-3.2-1/boot/hvmloader'
builder = 'hvm'
memory = 2048
shadow_memory = 8
name = 'windows7'

vif = ['bridge=eth2']
acpi = 1
apic = 1
disk = [ 'phy:/dev/xen_disk/windows7,hda,w', 'file:/etc/xen/images/windows7.iso,hdc:cdrom,r']

device_model = '/usr/' + arch_libdir + '/xen-3.2-1/bin/qemu-dm'

boot = 'dc'
sdl = 0
vnc = 1
vncconsole = 1
vncpasswd = ''

serial = 'pty'
usbdevice = 'tablet'

On peut maintenant démarrer la machine virtuelle :

# xm create /etc/xen/windows7.cfg

Si tout se passe bien vous devriez pouvoir vous connecter sur cette vm avec un client VNC comme ceci :

$ vncviewer 192.168.1.100:5900

Je vais pas détailler l'installation de Windows 7.

 

Se connecter à la machine virtuelle

Une fois l'installation de Windows faite, on va pouvoir se connecter dessus. Il y a deux possibilités :

  1. installer un serveur VNC sur la machine Windows
  2. activer la connexion distante (RDP), voir cet article par exemple pour Windows 7 http://www.howtogeek.com/howto/windows-vista/turn-on-remote-desktop-in-windows-vista/

La connexion via RDP est beaucoup plus rapide que par VNC, même sur un réseau local.

 

Créer un snapshot

On peut protéger notre machine virtuelle en créant un snapshot de l'installation, on travaillera sur le snapshot et non plus la partition originale

# lvcreate -L2G -s -n snap_win7 /dev/xen_disk/windows7

Toutes les nouvelles modifications seront écrites dans le snapshot et non pas sur l'installation originale. Ceci peut être très utile pour faire des tests, voir en production pour tout les jours recréer chaque matin une version "propre" de notre installation.

 

Améliorer le support matériel

Notre machine Windows fonctionne pour le moment en virtualisation complète, ce qui est assez gourmand en ressources matérielles. Il existe des drivers pour améliorer tout celà, qui permettent de transformer notre machine virtuelle HVM en Paravistualisé. Il y a deux choix :

  1. les drivers Novell : http://www.novell.com/products/vmdriverpack/ payants et fonctionnant -je penses- uniquement sous un serveur Xen OpenSuse ;
  2. les drivers GPL développés pas James Harper : http://www.meadowcourt.org/downloads/

Pour le moment je regarde comment faire fonctionner les drivers GPL avec Windows 7. Je modifierai cet article une fois que j'aurai une procédure d'installation pour.

egrep -e 'vmx|svm' /proc/cpuinfo