VirtualBox

J’ai installé récemment VirtualBox sur mon PC Ubuntu, un logiciel qui permet de faire tourner des machines virtuelles sur son ordinateur. Cela s’est révélé un peu plus compliqué que prévu, en tout cas de la façon dont je voulais le faire (bridging, ou mode pont). D’où l’idée ce billet.

Vous y trouverez les informations de base pour l’installer (il existe des pages sur le web beaucoup plus détaillées à ce sujet), et surtout une manière simple pour passer en mode « bridge », car j’ai un peu galéré avant de trouver sur le web un script qui simplifie énormément toute cette partie.

Un peu d’histoire

Historiquement, VirtualBox était réalisé par la société Inno Tek, et disponible sous licence GPL (General Public License), et donc totalement gratuit. En début d’année, Sun Microsystems a racheté le produit, et a sorti récemment une nouvelle version 1.6, revendiquant plus de 2000 améliorations. Le mode de licence a changé (PUEL, Private Use and Evaluation License), mais le logiciel reste gratuit pour les particuliers avec une dérogation supplémentaire pour les écoles. Le nom exact est maintenant Sun xVM VirtualBox.
VirtualBox est disponible pour Windows, Linux ou Mac.

VmWare, leader sur le marché de la virtualisation, bénéficiant de nombreuses années d’expérience, est également gratuit pour les particuliers. Toutefois, il faut tout de même vous enregistrer sur leur site pour obtenir une licence. Et puis, je l’utilise déjà au boulot, et je voulais tester VirtualBox.

A quoi cela sert ?

Typiquement, faire tourner une machine virtuelle Windows si l’un de vos logiciels indispensables ne fonctionne pas sous Ubuntu (ou l’inverse !). Remarque : et qui ne fonctionne donc pas non plus avec l’aide de Wine (qui permet de faire tourner sous Linux des logiciels prévus pour Windows).

Cela permet aussi de faire tourner une version Beta d’Ubuntu, pour goûter en avant première aux nouveautés… ou bien la même version d’Ubuntu, mais dans un environnement propre, afin de tester une application qui vous pose problème. J’y reviendrai.

Un autre avantage est la possibilité de faire un instantané de la machine à un instant donné. De pouvoir faire tous les essais que vous voulez, puis revenir à l’état initial en quelques secondes.
Certaines personnes utilisent une machine virtuelle comme machine usuelle (mails, etc…). Ainsi, en cas de plantage ou de virus, hop, on repart d’une machine propre. Ce sont, vous l’aurez compris, des gens qui utilisent Windows ! 😉

Installation

Cette dernière version 1.6 est téléchargeable ici : choisissez bien votre système (Ubuntu 8.04 en ce qui me concerne). L’installation sous Ubuntu ne pose aucun problème, il s’agit d’un fichier .deb qu’il suffit de lancer.

Dans un premier temps, il faut créer les machines virtuelles elles-mêmes (l’enveloppe). Lancer VirtualBox (menu Outils Système), faites nouveau, et suivez l’assistant. Sélectionnez le système que vous voulez installer (Windows, Ubuntu, etc.). Créez un nouveau disque quand la question vous est posée. La VM est donc créée, reste à installer le système d’exploitation (le contenu).

Pour cela, il vous faut à priori le CD d’installation en question, comme vous le feriez pour installer Windows ou Ubuntu sur PC. Dans ce cas démarrez la machine virtuelle (VM) que vous venez de créer, votre lecteur CD sera détecté automatiquement et l’installation démarrera.
Mais c’est encore plus simple si vous disposez d’une image iso (un fichier) de l’OS désiré. Pas besoin de graver un CD, il suffit d’indiquer dans les préférences de la machine virtuelle qu’il faut « monter » ce fichier (le fichier sera vu comme un lecteur de CD) :

Préférences de la VM

Il ne reste plus qu’à installer Ubuntu en démarrant la machine virtuelle, et de procéder comme pour n’importe quelle installation.

Installez ensuite les VBoxGuestAdditions, qui permettent un meilleure gestion de l’affichage et surtout de la souris (focus dynamique), absolument indispensables. Pour Ubuntu, il suffit de monter le fichier VBoxGuestAdditions.iso fourni dans /usr/share/virtualbox :

monter l'image vboxguestadditions.iso

Utilisation

C’est là que j’ai rencontré un petit problème. Contrairement à VmWare, VirtualBox est configuré par défaut en mode NAT, c’est-à-dire que la machine virtuelle n’accède pas directement au réseau de la machine hôte. C’est le logiciel VitualBox qui fait office de serveur DHCP et de routeur. La machine virtuelle n’accède donc au réseau qu’en passant par la machine hôte.
Si l’on accède ainsi très facilement à Internet, l’accès à sa propre machine (la machine hôte) ne fonctionne pas simplement (accéder à un répertoire partagé sur le réseau par exemple).

Sous Jaunty et avec les dernières versions de Virtualbox, ce problème est maintenant résolu. Il suffit d’installer le paquet bridge-utils et de configurer l’adaptateur réseau comme ci-dessous. Si vous êtes en DHCP (e.g. freebox) le tour est joué, la machine virtuelle est accessible directement sur le réseau local sans plus de configuration.

préférences réseau virtualbox

Il faut donc configurer le mode bridge (pont) comme c’est le cas par défaut dans VmWare. Après avoir lu pas mal de documents, cela se révèle assez compliqué. Il s’agit de créer des interfaces virtuelles sous Linux, et de créer un pont vers votre carte réseau physique. Heureusement, le bien nommé Taltan s’en est occupé et a réalisé un script qui s’occupe de tout. Sa page est ici et explique tout de manière très claire et détaillée.

En résumé, il faut d’abord installer deux paquets nécessaire à Ubuntu pour le mode bridge :

$ sudo apt-get install bridge-utils uml-utilities

puis télécharger le script Script bridging_vb_tap_v1.0.sh, le copier dans le répertoire de votre choix, lui donner les droits d’exécution, et l’adapter à vos besoins en modifiant la partie Variables du script.

Pour ma configuration, voilà ce que cela donne : mon interface physique est eth0, ma freebox fait office de serveur DHCP, et est configurée en mode router (nécessaire pour pourvoir attribuer plusieurs adresses, puisqu’il y aura plusieurs machines en même temps sur le réseau : la machine hôte et la machine virtuelle). Mon PC a l’adresse 192.168.0.1, et je souhaite configurer deux interfaces virtuelles (nb_tap =2). Enfin, mon nom d’utilisateur (celui de ma session Ubuntu) est pascal.

## Variables
gateway=192.168.0.254		# adresse ip de la passerelle
bridge=br0			# nom du pont
if_hote=eth0			# interface physique actuelle
DHCP=YES			# DHCP pour le pont YES | NO
bridge_ip=192.168.0.1		# adresse ip du pont si DHCP=NO
bridge_mask=255.255.255.0	# masque du pont si DHCP=NO
bridge_bc=192.168.0.255	# adresse ip de broadcast si DHCP=NO
nb_tap=3			# nombre d'interfaces virtuelles tapX
vb_user=pascal			# utilisateur de VirtualBox

Voilà tout est prêt. Le script a de plus l’avantage de ne créer ces interfaces que le temps souhaité. Vous lancez le script comme ceci :

$ sudo bridging_vb_tap start

Les interfaces sont maintenant créées et vous pouvez démarrer et utiliser vos machines virtuelles. Quand vous n’en avez plus besoin, alors tapez :

$ sudo bridging_vb_tap stop

Votre configuration réseau habituelle est restaurée. Génial !

Vous avez donc lancé le script, reste une petite modification à faire dans votre machine virtuelle. Dans mon exemple, j’ai donc demandé dans le script deux interfaces : sont alors créées tap0 et tap1. Il faut maintenant le dire à votre VM : choisissez « attaché à Adapteur réseau hôte » dans les préférences réseau, et entrez tap0 pour le nom de l’interface de votre première VM (et tap1 pour la seconde).

Préférences réseau de la VM

Et voilà, votre machine virtuelle peut démarrer, obtenir son adresse IP de la freebox (ou d’une autre « box »), et les deux machines (ou les trois) se voient chacune sur le réseau (à condition de partager des répertoires).

Si pour une raison ou pour une autre le script n’a pas fonctionné, ou que vous avez oubliez de le lancer (!), vous obtiendrez le message d’erreur suivant :

erreur quand l'interface définie n'existe pas

VERR_HOSTIF_INIT_FAILED, la VM ne trouve pas son interface réseau. Et refuse de démarrer.

Pour terminer, voilà deux captures d’écran :
La première, c’est simplement Windows qui démarre dans sa VM.
Sur la seconde, on peut voir l’utilité de tester un logiciel sous une version « propre » de Ubuntu. En fait, je n’arrivais pas à faire fonctionner IGN Carto Exploreur sous Wine. Le programme démarrait, mais la fenêtre se plantait (écran noir). Sur la capture, vous voyez à droite la VM avec IGN Carto Exploreur qui fonctionne, et à gauche le même logiciel qui ne fonctionne pas dans mon environnement, pour une raison encore inconnue. On voit aussi que de ma machine hôte, je peux accéder au répertoire partagé par la VM.

4 réflexions sur « VirtualBox »

  1. Merci pour ce petit tutoriel très complet.

    J’ai juste eu à adapter quelque peu le script sous Debian Leny 5.0, mais celà m’a paru plus simple que nombre de tutoriels sous ubuntu.fr.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *