Partager via


Ubuntu Server 10.4 dans Hyper-V avec les drivers Hyper-V

Mise à jour octobre 2013 : les choses ont bien changé depuis cet article de 2010. Les drivers Hyper-V sont maintenant activés par défaut dans la plupart des distributions Linux et aucune manipulation n'est maintenant nécessaire. Plus d'information dans cet article.


En juillet dernier, Microsoft annonçait la mise à disposition du code source des drivers pour Linux dans l’environnement de virtualisation Hyper-V. Dans la pratique, la version 2.6.32 du noyau Linux contient maintenant les drivers pour les composants synthétiques d’une machine virtuelle Hyper-V, à savoir le VMBus, le stockage, et le réseau. Dans le détail, il s’agit des modules hv_vmbus, hv_storvsc, hv_blkvsc et hv_netvsc : ces modules sont décrits dans cet article.

Afin de sortir des configurations “supportées officiellement”, j’ai testé l’activation de ces modules dans le nouvel Ubuntu Server 10.4, fourni récemment avec le noyau 2.6.32. Pour cela j’ai trouvé cet article qui explique comment activer ces modules, et dont je m’inspire donc largement.

Activation des modules

Dans un premier temps il faut faire en sorte que les modules Hyper-V soient chargés au démarrage. Pour ce faire, modifier le fichier /etc/initramfs-tools/modules et ajouter les 4 lignes suivantes :

hv_vmbus
hv_storvsc
hv_blkvsc
hv_netvsc

Puis, mettre à jour l’image initramfs :

$ sudo update-initramfs –u

Enfin, configurer le réseau en modifiant le fichier /etc/network/interfaces de façon à configurer l’interface réseau nommée seth0. En effet, une carte réseau synthétique s’appellera sethn, au lieu de ethn pour la carte réseau “legacy”.

Par exemple pour une configuration DHCP, ajouter ceci dans /etc/network/interfaces :

auto seth0
iface seth0 inet dhcp

ou, pour une adresse IP statique :

auto seth0
iface seth0 inet static
address adresse_ip
netmask masque
gateway adresse_passerelle

Il ne reste plus qu’à redémarrer, et à vérifier le bon chargement des drivers à l’aide de la commande :

$ lsmod | grep hv_

Test de la procédure

Pour mon test, j’ai utilisé Hyper-V de Windows Server 2008 R2, et Ubuntu Server 10.4 32 bits (ubuntu-10.04-server-i386.iso).

Etant donné que j’ai configuré la VM avec une carte réseau synthétique, celle-ci n’est pas détectée lors de l’installation. Ce n’est pas grave, elle le sera lorsque l’on aura effectué les étapes décrites précédemment après l’installation.

Erreur : aucune carte réseau détectée
Sur ce message d’erreur, choisir <Continue>.

Une fois la machine virtuelle installée et démarrée, les étapes décrites ci-dessus sont assez simples à mettre en œuvre :

initramfs

interfaces

Après un redémarrage (sudo reboot), nous avons bien le réseau actif sur la carte synthétique seth0, ainsi que les autres drivers chargés :

Réseau et drivers Hyper-V

Voilà de quoi exécuter des serveurs Linux sous Hyper-V avec des performances correctes. Reste à attendre l’intégration dans le noyau Linux des prochaines fonctionnalités (multi processeurs, synchronisation d’horloge et arrêt intégré) –ces fonctionnalités sont pour l’instant disponibles dans la beta des services d’intégration 2.1, pour SUSE Linux Enterprise Server et Red Hat Enterprise Linux.

Comments

  • Anonymous
    June 22, 2010
    Bonjour, Juste une précision, ceci ne fonctionne pas avec la version serveur 64 bits ...

  • Anonymous
    August 25, 2010
    Bonjour, Dans mon cas, pas de problème avec Ubuntu Server 10.04 64 bits. Par contre:

  • impossible d'effectuer un upgrade kernel sans corrompre la partition / systématiquement. Faut-il désactiver les drivers Hyper-V avant ?
  • les drivers réseau ne fonctionnent pas avec Ubuntu Server 10.04.1
  • Anonymous
    September 07, 2010
    The comment has been removed

  • Anonymous
    September 21, 2010
    Bonjour, J'ai réussi a faire fonctionner avec la version 64bits... Par contre après un apt-get upgrade, le réseau disparais ... J'ai essayer de régénérer les modules avec un update-initramfs -u -k all, mais pas mieux et le ifconfig -a ne me donne plus seth0 mais eth0 et impossible de trouver la définition de celui ci dans le /etc/network/interfaces ... Si vous avez une idée, je suis preneur.

  • Anonymous
    October 05, 2010
    Zut ca passe plus avec la  10.10 ....

  • Anonymous
    January 05, 2012
    The comment has been removed

  • Anonymous
    March 04, 2012
    Si je peux ajouter une suggestion, il est bon à savoir qu'il existe des kernel non génériques dans la distribution ubuntu disponibles sur le dépôt officiel dont le "virtual" qui est spécialement compilé pour les machines virtuelles