Debian 11 (Bullseye) et VirtualBox

Contexte

Debian 11 (Bullseye) a été publié le 14 août 2021. Quelques jours après, j’en profite pour mettre à jour mon PC. Je m’aperçois que VirtualBox ne fournit pas de package à jour. Le package existant fait référence à la précédente version avec des packages non fournis ou renommées.

Il faudra attendre que l’équipe projet travaille à mettre à jour les packages.

avertissement Les installations manuelles à partir d’une archive ne sont pas concluantes. Le fait de vouloir garder l’UEFI ne simplifie pas la tâche.

Version de novembre

Le 22 novembre est publié la version 6.1.30. Comme annoncé par le projet, c’est une version de maintenance. Ce qui est intéressant pour nous, c’est qu’elle intègre cette fonctionnalité :

Note
Linux host: For all distribution specific packages (deb/rpm format) fix the packaging so that the feature for unattended installation of guest OSes works

C’est à dire que les packages ont été mis à jour pour les distribution Linux dont Debian.

Installation

  • Ajoutez ou Mettez à jour le fichier /etc/apt/sources.list.d/virtualbox.list

deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian bullseye contrib
# deb-src [arch=amd64] http://download.virtualbox.org/virtualbox/debian bullseye contrib
  • Mise à jour des packages

apt update
  • Installation de la version 6.1

apt install virtualbox-6.1

avertissement Pour rappel, la fin de support pour VirtualBox 6.0 est juillet 2020.

Mise à jour des modules si UEFI est activé.

Si, comme moi, vous avez gardé UEFI actif, il est nécessaire de signer les modules virtualbox. Pour cela, j’ai un script qui permet de le faire :

./sign-vbox-modules
Passphrase for ./MOK.priv ******
[sign-vbox-modules] Signing /lib/modules/5.10.0-9-amd64/misc/vboxdrv.ko...
[sign-vbox-modules] Signing /lib/modules/5.10.0-9-amd64/misc/vboxnetadp.ko...
[sign-vbox-modules] Signing /lib/modules/5.10.0-9-amd64/misc/vboxnetflt.ko...

Pour information, le contenu du script est disponible sur github

avertissementPour plus d’informations, je vous invite à lire mon billet SecureBoot Signer ses modules et pourquoi ?

Suite à l’exécution, il reste à charger les modules :

mobprobe vboxdrv
mobprobe vboxnetadp
mobprobe vboxnetflt

Problèmes avec le hôte seulement

Cependant, si vous avez l’habitude d’utiliser le réseau hôte (host-only), vous ne pourrez plus accèder à vos machines.

Diagnostique

Vous pourrez le voir au niveau du système avec la commande ip a

...
14: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:02 brd ff:ff:ff:ff:ff:ff
15: vboxnet1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:01 brd ff:ff:ff:ff:ff:ff

Nous pouvons constater qu’il n’y a pas (ou plus) d’adresse IP associée aux réseaux virtualbox (vboxnet).

Nouvelle règle

Pour comprendre ce qui te passe, il faut regarder la version précédente, celle publié le 19 octobre, soit la version 6.1.28. Pourquoi parlez de cette version plus ancienne ? car il y a une modification qui a un impact sur vos VMs.

Note
Network: More administrative control over host-only network ranges to prevent trouble due to misconfiguration, see user manual. Check updated documentation or your VMs may stop working!

En effet, à partir de cette version, les adresses IP autorisées sont uniquement les adresses 192.168.56.0/21 par défaut. Pour IPv6, les adresses lien locaux sont autorisées. Vous devez modifier les adresses IP de vos VMs pour être dans la plage concernée ou sinon il faut passer par de la configuration.

Configuration

En effet, cela reste néanmoins configurable. Si vous souhaitez un réseau précis, il suffit de préciser dans le fichier /etc/vbox/networks.conf, en le créant s’il n’existe pas. Pour cela, il faut écrire les lignes de cette manière

 * 192.168.32.0/24

Nous avons trois règles :

  • Nous pouvons configurer autant de ligne que nous le souhaitons.

  • Si la ligne commence par le caractères #, elle sera ignorée.

  • De même, si le fichier existe et qu’il y a aucun plage d’adresse, cela implique que le réseau hôte uniquement est désactivé.

Vérification

Pour vérifier, nous pouvons utiliser de nouveau la commande ip a et nous avons bien l’adresse IP associé au réseau (vboxnet0 dans l’exemple).

14: vboxnet0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 192.168.32.1/24 brd 192.168.32.255 scope global vboxnet0
       valid_lft forever preferred_lft forever
    inet6 fe80::800:27ff:fe00:0/64 scope link
       valid_lft forever preferred_lft forever
15: vboxnet1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0a:00:27:00:00:01 brd ff:ff:ff:ff:ff:ff