Matériel, Hardware

Linux : Détecter la plateforme de virtualisation utilisée

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

virtualisation-logo



Introduction



Il peut être utile de savoir si le système fonctionne sur une machine virtuelle ou non.
Dans le cas de scripts, cela peut être utile pour optimiser les performances du système, en installant par exemple des outils invité.

Dans cet article, nous allons voir comment utiliser l'outil virt-what qui répond à ce besoin.


Installation



virt-what est un script shell qui va détecter la plateforme virtuelle sur laquelle on est.
Avant de pouvoir l'utiliser, il suffit de l'installer.

Fedora, Red Hat et dérivées :
Code BASH :
dnf install virt-what


Debian, Ubuntu et dérivées :
Code BASH :
apt install virt-what


Gentoo et dérivées :
Code BASH :
emerge -av app-emulation/virt-what


Et c'est tout !

Utilisation



Pour utiliser l'outil, il n'y a pas d'options particulières.
Il suffit de lancer la commande :

Code BASH :
virt-what


Il est nécessaire d'être root pour lancer le script.

Interpréter le résultat



Si la commande ne retourne rien : vous êtes sur une machine physique.

Si on est dans un conteneur LXC, l'outil renvoie :
Code TEXT :
lxc


Si on est dans une machine virtuelle, le script nous renvoie la platrforme virtuelle utilisée.

VMware (ESXi, VxRail) :
Code TEXT :
vmware


Xen (XCP-ng) :
Code TEXT :
xen


Proxmox, Libvirt :
Code TEXT :
kvm


Microsoft Hyper-V :
Code TEXT :
hyperv


Virtualbox :
Code TEXT :
virtualbox


Plus de valeurs indiquées dans la page de manuel de virt-what :
Code BASH :
man virt-what


Cas d'usage



Si vous avez un script de post-installation, vous pouvez installer virt-what et installer par exemple les additions-invité.

Voici un petit bout de code utilisable par exemple pour Fedora ou Red Hat Enterprise Linux :

Code BASH :
VMTYPE=$(virt-what)
if [[ "$VMTYPE" = "kvm" ]]
then
    dnf install qemu-guest-agent -y > /dev/null
    systemctl enable --now qemu-guest-agent.service > /dev/null
fi
if [[ "$VMTYPE" = "vmware" ]]
then
    dnf install open-vm-tools -y > /dev/null
    systemctl enable --now vmtoolsd.service > /dev/null
fi


Maintenant, vous pouvez améliorer vos scripts !