Table des matières

VirtualBox sur Debian

Cette fiche traite de Debian en tant que système hôte et système invité.

Résumé d'installation

Installer VirtualBox

Les opérations sont effectuées avec les droits de superutilisatrice.

Prérequis

En cas de première installation de VirtualBox, il convient de s'assurer que le système est déjà équipé de tout ce dont l'application aura besoin pour fonctionner. On installe, si nécessaire, les paquetages suivants : dkms, build-essential, libvirt-daemon-driver-vbox et tous les packetages linux-headers correspondant aux noyaux1) sur lesquels on veut que virtualbox fonctionne.

À titre d'exemple, voici comment j'ai procédé, sur une version fraîchement installée2) de Debian 11:
uname -a
apt install dkms, libvirt-daemon-driver-vbox linux-headers-5.18.0-0.deb11.3-amd64 linux-headers-5.18.0-0.bpo.1-amd64

Depuis les dépôts Debian

La disponibilité des paquetages nécessaires étant variable selon les versions de Debian, il faut se renseigner sur la page dédiée du wiki de Debian : VirtualBox.

Pour des raisons de licence, VirtualBox et l'extension “Guest Additions” sont dans deux paquetages différents.

Depuis le dépôt d'Oracle

Oracle3) propose également des versions packagées pour Debian. On dispose ainsi de versions plus récentes. Attention : ces paquetages ne bénéficient d'aucune garantie de la part de Debian ! Les informations nécessaires à la configuration des dépôts et à l'installation sont disponibles sur la page dédiée d'Oracle : Download VirtualBox for Linux Hosts.

Ajout du dépôt Oracle

Il est vivement recommandé de suivre les instructions de vérification des clés et signatures applicables tout ajout de dépôts hors Debian.

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian bullseye contrib" | tee -a /etc/apt/sources.list.d/virtualbox.list
cd /tmp
wget https://www.virtualbox.org/download/oracle_vbox_2016.asc
gpg --show-keys oracle_vbox_2016.asc
gpg --dearmor --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg oracle_vbox_2016.asc

Installation du paquetage

Pour l'installer, il faut impérativement indiquer la version souhaitée, par exemple :

apt update
apt install virtualbox-6.0

Une fois la version installée, les mises à jour se font automatiquement, suivant la politique que vous avez définies pour votre système hôte.

En revanche - et heureusement - les changements de version ne sont pas automatiquement répercutés. Passer de la 6.0 à la 6.1 demandera une action de votre part.

Autorisation

VirtualBox est lancé par une utilisatrice et tourne sous les droits de cette utilisatrice. Il en va de même des machines virtuelles. L'utilisation de VirtualBox requiert donc l'octroi d'une autorisation spécifique. Cela se fait en ajoutant l'utilisatrice voulue au groupe vboxusers :

# usermod -a -G  vboxusers <user>

Lors de la première installation du paquetage virtualbox-M.m, le groupe vboxusers sera créé s'il n'existait pas déjà.

Pack d'extension

Ce pack apporte aux VM la possibilité d'accéder à certaines ressources de la machine hôtesse, tels les périphériques USB 2 et USB 3. Il doit être installé même si on ne l'exploite que sur une seule VM.

Lors d'une première installation4), on doit télécharger la version de l'extension qui correspond exactement à la version de VirtualBox que l'on vient d'installer. Le pack d'extension est identique pour tous les systèmes. L'URL de téléchargement est indiquée sur le site d'Oracle (copier l'URL attachée à l'ancre “All supported platforms”).

Une fois l'URL récupérée, on procède à l'installation proprement dite.

Principe :

cd tmp
wget <URL récupérée>
VBoxManage extpack install --replace <fichier téléchargé>

Exemple :

cd tmp
wget https://download.virtualbox.org/virtualbox/6.1.36/Oracle_VM_VirtualBox_Extension_Pack-6.1.36a-152435.vbox-extpack
VBoxManage extpack install --replace Oracle_VM_VirtualBox_Extension_Pack-6.1.36a-152435.vbox-extpack

Bien sûr, on remplacera l'URL et le nom du fichier par les valeurs obtenues, le jour où l'opération sera effectuée.

Si l'on souhaite continuer à utiliser le Pack d'extension5), il faudra le mettre à jour et en accepter la licence, à chaque mise à jour de VirtualBox.

Vérification

Avant d'aller plus loin, il est conseillé de faire un test qui a défaut d'être complet est à la fois informatique et particulièrement simple à réaliser :

/sbin/vboxconfig

En cas de problème6), les informations fournies seront bien plus complètes, lisibles et précises que si on tente bêtement de lancer l'application graphique.

VirtualBox Guest Additions en ligne de commande

Sur la machine hôtesse

On s'assure qu'on a installé l'Extension pack et que l'extension est reconnue par VirtualBox (Fichier > Paramètres > Extensions).

Sur chaque machine invitée

Les compléments pour invitées (Guest Additions) sont disponibles sur une image iso, installée sur la machine hôtesse : /usr/share/virtualbox/VBoxGuestADDitions.iso

Dans la configuration de la machine invitée, on ajoute cette image iso aux stockages disponibles, comme on le ferait pour n'importe quel CD/DVD virtuel.

Sur chaque système invité concerné

Une machine virtuelle pouvant héberger plusieurs systèmes, l'opération est à répéter sur chaque système que l'on souhaite faire bénéficier de Guest Additions.

Dans ce qui suit, ne pas sauter l'étape d'installation de build-essential et dkms !!!
# apt-get update
# apt-get install build-essential dkms
# cd /media
//// on devrait trouver un répertoire dont le nom ressemble à VBOXADDITIONS_4.2.12_84980, sinon explorer les répertoires présents (cdrom, cdrom0, cdrom1, etc.)////
//// si tous les répertoires /media/* sont vides, procéder à un montage manuel de l'image iso : # mount /dev/cdrom /media/cdrom ////
# cd VBOXADDITIONS             <TAB>  pour faire jouer l'autocomplétion
# sh VBoxLinuxAdditions.run

En cas de montage manuel de l'image du CD, il est normal que le système indique un montage en lecture seule puisqu'il s'agit de l'image iso d'un CD ;)

Déclarer l'utilisatrice souhaitant utiliser les guest additions comme membre du groupe vboxsf.

# usermod -a -G vboxsf <user>

Mises à jour

Chaque mise à jour de VirtualBox s'accompagne d'une mise à jour des Guest Additions.

Sur le système hôte, ces mises à jour sont gérées automatiquement par le gestionnaire de paquetages suivant la politique que l'on a définie.

Au lancement de VirtualBox, l'utilisatrice sera avertie de l'existence d'une nouvelle version des Guest Additions et l'ajout de cette mise à jour lui sera proposé.

Mais rien n'est répercuté sur les systèmes des machines invitées puisque ce sont des systèmes indépendants… Sur chaque machine invitée exploitant les Guest Additions, il faudra relancer le script d'installation, comme indiqué précédemment :

# sh VBoxLinuxAdditions.run
Si on ne fait pas la mise à jour, aucun message ne viendra nous l'indiquer, ni au démarrage de la machine invitée, ni au lancement du système invité. Il faut donc être vigilante, car la plupart du temps, on ne perdra pas automatiquement tous les bénéfices de l'intégration au système hôte apportée par les Guest Additions. On ne s'en rendra pas compte jusqu'au jour où…

Redimensionner un disque

Sources : VBoxManage manual, parted command examples.

Nous partons du principe que l'on veut agrandir un disque devenu trop petit.

Il va falloir :

  1. redimensionner le disque
  2. réorganiser les partitions

Redimensionner le disque

Vérifier dans la documentation quel type disque est redimentionnable et quel type d'opération est permis.

$ VBoxManage modifyhd <fichier_disque> --resize <taille en Mo>

Réorganiser les partitions

Dans une VM de test basique, on a une seule partition. Mais en réalité, cela signifie 2 partitions :

De plus ces deux partitions seront souvent organisées comme suit :

Cela signifie qu'il va falloir :

  1. étendre la partition étendue “sur la droite”
  2. déplacer la partition de swap “sur la droite”
  3. réduire la partition étendue “par la gauche”
  4. étendre la partition racine “sur le droite”

Ces opération doivent nécessairement être réalisée en bootant sur un autre système. Si la machine hôtesse est munie d'une interface graphique, je suggère de démarrer la machine invitée avec un CD (virtuel) de dépannage disposant de gparted (par ex. une image Ubuntu pour desktop).

Au secours !

Quelques astuces pour se sortir de mauvaises situations.

Changer de terminal virtuel

Pour changer de terminal virtuel, dans une VM Linux, il suffit d'utiliser la touche “host” (HostKey) qui est, par défaut, assignée à la touche Ctrl située à droite du clavier. HostKey+Fn fait basculer sur le terminal virtuel n de la VM. Tout se passe comme si HostKey insérait un Crtl+Alt.

Forcer la VM à rendre la souris/clavier

Pour une raison ou une autre, la VM a capturé la souris (et le clavier) ne veut plus la rendre… Une pression sur la touche HostKey est censée la libérer. Si la VM est complètement partie dans le décor7), il faudra peut-être envisager que l'éteindre en ligne de commande.

Mais comment ouvrir un terminal si on a perdu tout contrôle ? La première option et de basculer la machine hôtesse sur un autre terminal virtuel, par ex. Ctrl+Alt+Fn. Si cela ne fonctionne pas et si la machine hôtesse est joignable en ssh, on y accède depuis un autre ordi.

Quitter une VM en ligne de commande

Depuis la machine hôtesse, on commence par vérifier les noms des VM en fonction :

$ VBoxManage list runningvms

puis on arrête celle que l'on cible :

$ VBoxManage controlvm VM-ciblée poweroff

Une variante effectue une sauvegarde de l'état de la VM puis l'arrête.

$ VBoxManage controlvm VM-ciblée savestate
1)
Il faut être honnête, déterminer avec précisions quels sont les linux-headers nécessaires et suffisantes à charger n'est pas simple. En cas de doute, une technique simple, fiable mais fastidieuse consiste à noter tous les paquetages linux-image-xxx déjà présents sur le système et installer tous le paquetages linux-headers-xxx correspondants.
2)
Installation de base puis upgrade du noyau via les backports.
3)
L'éditeur de VirtualBox.
4)
Par la suite, les mises à jours sont gérées par VirtualBox.
5)
Oracle VM VirtualBox Extension Pack
6)
La liste des problèmes possibles et les moyens d'y remédier dépasse le cadre de cette fiche.
7)
Plus aucun contrôle de l'interface graphique par la souris ni raccourcis clavier de navigation et la VM utilisant 100% d'une CPU, par ex.