VirtualBox Headless sur Debian Lenny

 

On a l'habitude d'utiliser VirtualBox au travers de son interface graphique.

Cependant on peut avoir besoin de mettre en place un serveur de virtualisation (si on est pas trop conformiste et qu'on veut parler de virtualisation pour VirtualBox) avec VirtualBox sur un serveur sans interface graphique. Pour cela VirtualBox arrive avec une option très intéressante : VBoxHeadless.

Nous allons voir dans cet article comment mettre un tel serveur sur une GNU/Debian Lenny.

Installation

Rajoutez la ligne suivante dans votre fichier /etc/apt/sources.list :

# VirtualBox
deb http://download.virtualbox.org/virtualbox/debian lenny non-free

Récupérez la clé GPG :

# wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | 
apt-key add -

Et mettre à jour la liste des paquets :

# apt-get update

Puis on installe la dernière version de VirtualBox :

# apt-get install linux-headers-$(uname -r) build-essential virtualbox-3.1

On ajoute un utilisateur (autre que root) au groupe vboxusers :

# adduser sysadmin vboxusers

Utilisation de VBox en ligne de commande

Les commandes suivantes peuvent être utilisées avec un utilisateur standard appartenant au groupe vboxusers.

On va créer une machine virtuelle avec 1Go de Ram et 20Go de disque dur en utilisant une image iso d'Ubuntu 9.10 serveur :

$ VBoxManage createvm --name "Debian Lenny Server" --register

$ VBoxManage modifyvm "Ubuntu 9.10 server" --memory 1024 --acpi on --boot1 dvd 
--nic1 bridged --nictype1 82543GC --cableconnected1 on --bridgeadapter1 eth0

$ VBoxManage createvdi -filename "ubuntu_910_server.vdi" -size 20000 -register

$ VBoxManage storagectl "Ubuntu 9.10 server" --name "IDE Controller" --add ide

$ VBoxManage storageattach "Ubuntu 9.10 server" --storagectl "IDE Controller" 
--port 0 --device 0 --type hdd --medium "ubuntu_910_server.vdi"

$ VBoxManage registerimage dvd /home/sysadmin/ubuntu-9.10-server-amd64.iso

$ VBoxManage storageattach "Ubuntu 9.10 server" --storagectl "IDE Controller" 
--port 1  --device 0 --type dvddrive --medium /home/sysadmin/ubuntu-9.10-server-amd64.iso

Pour démarrer cette nouvelle vm :

$ VBoxHeadless --startvm "Ubuntu 9.10 server"

...

Listening on port 3389.

VirtualBox démarre la machine virtuelle et un serveur VRDP, pour y accéder il faut à partir d'un poste bureautique utiliser un client RDP. Personnellement j'utilise Gnone-RDP qui me permet de garder mes configurations d'accès RDP à toutes mes machines.

Ne pas oublier d'ouvrir le port 3389/tcp si vous avez un firewall.

Il suffit maintenant de suivre la procédure d'installation standard de la distribution choisie.

Pour arrêter la vm

$ VBoxManage controlvm "Ubuntu 9.10 server" poweroff

Pour mettre en pause la vm

$ VBoxManage controlvm "Ubuntu 9.10 server" pause

Pour la reseter une vm

$ VBoxManage controlvm "Ubuntu 9.10 server" reset

Lister les vms

Lister les vms existantes sur le système :

$ VBoxManage list vms

Lister les vms fonctionnant :

$ VBoxManage list runningvms

Désenregistrer une vm

$ VBoxManage unregistervm 0bc5fd29-bd92-4dcc-ad1d-be89f045a9a0

Récupérer une vm existante

Si on veut transférer une vm d'un VirtualBox bureautique à un VirtualBox HeadLess.

En théorie

En théorie, on dois recopier deux choses sur le nouveau serveur :

  • l'image du disque : le fichier *.vdi
  • le contenu du répertoire Machines/nom_vm

Après tout cela on devrait taper la commande suivante pour ajouter la machine :

$ VBoxManage registervm Machines/examplevm/examplevm.xml

En pratique

En pratique la commande registervm n'a pas fonctionné chez moi. J'ai donc exécuté les commandes suivantes :

On commence par transférer l'image VDI dans le répertoire HardDisks.

Puis on créer la vm :

$ VBoxManage createvm --name "vm" --ostype Linux --register

$ VBoxManage modifyvm "vm" --memory 1024 --acpi on --nic1 bridged --nictype1 82543GC 
--cableconnected1 on --bridgeadapter1 eth0

$ VBoxManage storagectl "vm" --name "IDE Controller" --add ide --controller PIIX4

$ VBoxManage storageattach "vm" --storagectl "IDE Controller" --port 0 --device 0 
--type hdd --medium "vm.vdi"

$ VBoxHeadless --startvm "vm" &