In qualità di amministratore Linux, a volte ti starai chiedendo se stai lavorando su una macchina fisica o virtuale. La maggior parte delle volte, accederai e gestirai i tuoi server da remoto. Potresti non avere sempre accesso fisico ai tuoi server e potresti non sapere nemmeno dove si trova il server. Tuttavia, è possibile verificare se il tuo sistema Linux è una macchina fisica o virtuale utilizzando un paio di utilità Linux. Questa guida elenca tutti i modi possibili per verificare se il sistema Linux su cui stai lavorando è un server fisico o un server virtuale.
Verifica se un sistema Linux è una macchina fisica o virtuale
Ci possono essere molti modi per scoprire se un sistema è fisico o virtuale. Sono a conoscenza dei seguenti metodi al momento. Aggiornerò se trovo altri modi nei giorni a venire.
Metodo 1:utilizzo dell'utilità Dmidecode
Il modo più semplice per scoprire se stiamo lavorando su una macchina virtuale o fisica è utilizzare dmidecode utilità. Dmidecode, decodificatore di tabelle DMI, viene utilizzato per trovare i componenti hardware del sistema, nonché altre informazioni utili come i numeri di serie e la revisione del BIOS.
Dmidecode viene preinstallato con la maggior parte delle distribuzioni Linux. Per ogni evenienza, se non è già installato, puoi installarlo utilizzando il gestore di pacchetti della tua distribuzione. Ad esempio, il comando seguente installerà dmidecode nei sistemi basati su DEB come Ubuntu, Linux Mint.
$ sudo apt-get install dmidecode
Dopo aver installato Dmidecode, esegui il comando seguente per scoprire se il tuo sistema è una macchina fisica o virtuale:
$ sudo dmidecode -s system-manufacturer
Se si tratta di un sistema fisico, otterrai un output simile a quello riportato di seguito.
Dell Inc.
Se è un sistema virtuale creato con Virtualbox, otterrai il seguente output:
innotek GmbH
Per coloro che si chiedono, innotek è una società di software con sede in Germania che sviluppa software di virtualizzazione per PC chiamato VirtualBox .
Se si tratta di un sistema virtuale creato con KVM/QEMU, l'output sarà:
QEMU
Come si vede nell'output sopra, se si tratta di un sistema fisico, dmidecode mostrerà il nome del produttore (ovvero Dell Inc.). Se si tratta di un sistema virtuale, mostrerà il software/la tecnologia di virtualizzazione (ovvero VirtualBox o QEMU).
Inoltre, puoi utilizzare questo comando per verificare se si tratta di un sistema fisico o virtuale.
$ sudo dmidecode | grep Product
Risultato di esempio:
[Physical system] Product Name: 01HXXJ Product Name: Inspiron N5050 [Virtual system on VirtualBox] Product Name: VirtualBox Product Name: VirtualBox [Virtual system on KVM/QEMU] Product Name: Standard PC (Q35 + ICH9, 2009)
Un altro comando per scoprire se si tratta di un sistema fisico o virtuale è:
$ sudo dmidecode -s system-product-name
Risultato di esempio:
[Physical system] Inspiron N5050 [Virtual system on VirtualBox] VirtualBox [Virtual system on KVM/QEMU] Standard PC (Q35 + ICH9, 2009)
Ancora un altro comando dmidecode per trovare il tipo del sistema remoto è:
$ sudo dmidecode | egrep -i 'manufacturer|product'
Risultato di esempio:
[Physical system] Manufacturer: Intel Manufacturer: Sanyo Manufacturer: Not Specified Manufacturer: Dell Inc. Product Name: 01HXXJ Manufacturer: Dell Inc. Manufacturer: Dell Inc. Product Name: Inspiron N5050 Manufacturer: 014F [Virtual system on VirtualBox] Manufacturer: innotek GmbH Product Name: VirtualBox Manufacturer: Oracle Corporation Product Name: VirtualBox Manufacturer: Oracle Corporation [Virtual system on KVM/QEMU] Manufacturer: QEMU Product Name: Standard PC (Q35 + ICH9, 2009) Manufacturer: QEMU Manufacturer: QEMU Manufacturer: QEMU Manufacturer: QEMU
E un altro comando dmidecode è quello di raggiungere lo stesso obiettivo:
$ sudo dmidecode | egrep -i 'vendor'
Risultato di esempio:
[Physical system] Vendor: Dell Inc. [Virtual system on VirtualBox] Vendor: innotek GmbH [Virtual system on KVM/QEMU] Vendor: EFI Development Kit II / OVMF
Metodo 2:utilizzo dell'utilità Factor
Fattore è un'utilità della riga di comando per raccogliere e visualizzare le informazioni di un sistema. A differenza di Dmidecode, Facter non viene preinstallato per impostazione predefinita. Potrebbe essere necessario installarlo come mostrato di seguito a seconda della distribuzione Linux in uso.
In Arch Linux, Manjaro Linux:
$ sudo pacman -S facter
In Fedora:
$ sudo dnf install facter
In CentOS, RHEL:
$ sudo yum install epel-release
$ sudo yum installl facter
In openSUSE:
$ sudo zypper install facter
Una volta installato il facter, esegui il comando seguente per verificare se il sistema è una macchina fisica o virtuale:
$ facter 2> /dev/null | grep virtual
Se questo comando non funziona, prova con i privilegi sudo:
$ sudo facter 2> /dev/null | grep virtual
Risultato di esempio:
[Physical system] is_virtual => false virtual => physical [Virtual system on VirtualBox and KVM/QEMU] is_virtual => true virtual => kvm
In alternativa, usa il seguente comando:
$ facter virtual
Oppure,
$ sudo facter virtual
Se è una macchina fisica, l'output sarà:
physical
Se è una macchina virtuale, vedrai un output come di seguito.
kvm
Metodo 3:utilizzo dell'utilità lshw
Il lshw utility è una piccola utility della riga di comando che mostra le informazioni hardware dettagliate di un sistema simile a Unix. Visualizza tutti i dettagli hardware tra cui configurazione della memoria, versione del firmware, configurazione della scheda madre, versione e velocità della CPU, configurazione della cache, velocità del bus, ecc.
Alcune distribuzioni Linux sono preinstallate con lshw. Se non è già installato, puoi installarlo come mostrato di seguito.
In Arch Linux e derivati:
$ sudo pacman -S lshw
In Fedora:
$ sudo dnf install lshw
In RHEL e derivati come CentOS, Linux scientifico:
$ sudo yum install epel-release
$ sudo yum install lshw
In Debian, Ubuntu, Linux Mint:
$ sudo apt-get install lshw
In SUSE/openSUSE:
$ sudo zypper in lshw
Dopo aver installato lshw, esegui il comando seguente per scoprire se il tuo sistema è fisico o virtuale:
$ sudo lshw -class system
Risultato di esempio:
[Physical system] sk description: Portable Computer product: Inspiron N5050 (To be filled by O.E.M.) vendor: Dell Inc. version: Not Specified serial: JSQ9PR1 width: 4294967295 bits capabilities: smbios-2.6 dmi-2.6 smp vsyscall32 configuration: boot=normal chassis=portable sku=To be filled by O.E.M. uuid=44454C4C-5300-1051-8039-CAC04F505231 [Virtual system on VirtualBox] ubuntuserver description: Computer product: VirtualBox vendor: innotek GmbH version: 1.2 serial: 0 width: 64 bits capabilities: smbios-2.5 dmi-2.5 vsyscall32 configuration: family=Virtual Machine uuid=78B58916-4074-42E2-860F-7CAF39B5E6F5 [Virtual system on KVM/QEMU] centos8uefi.ostechnix.lan description: Computer product: Standard PC (Q35 + ICH9, 2009) vendor: QEMU version: pc-q35-4.2 width: 64 bits capabilities: smbios-2.8 dmi-2.8 smp vsyscall32 configuration: boot=normal uuid=C40041DE-2E63-094C-8DCF-BBDE29170268 *-pnp00:00 product: PnP device PNP0b00 physical id: 1 capabilities: pnp configuration: driver=rtc_cmos
Lettura consigliata:
- Come trovare le specifiche hardware su Linux
- Come scoprire la RAM massima supportata in Linux
Metodo 4 - Utilizzo dell'utilità dmesg
Possiamo trovare il tipo di sistema usando dmesg utilità. dmesg viene utilizzato per esaminare o controllare il buffer dell'anello del kernel.
Per verificare se il tuo sistema Linux è fisico o virtuale, esegui semplicemente:
$ sudo dmesg | grep "Hypervisor detected"
Se il tuo sistema è fisico, non vedrai alcun output.
Se il tuo sistema è una macchina virtuale, vedrai un output simile a quello di seguito.
[ 0.000000] Hypervisor detected: KVM
Metodo 5:utilizzo del comando hostnamectl
Possiamo scoprire se il nostro sistema è virtuale o fisico usando hostnamectl comando. Richiede systemd lavorare.
$ hostnamectl status
Oppure,
$ hostnamectl
Risultato di esempio:
[Physical system] Static hostname: sk Icon name: computer-laptop Chassis: laptop Machine ID: 84e3c8e37e114ac9bc9f69689b49cfaa Boot ID: 19cf3572e1634e778b5d494d9c1af6e9 Operating System: Arch Linux Kernel: Linux 4.10.13-1-ARCH Architecture: x86-64 [Virtual system on VirtualBox] Static hostname: ubuntuserver Icon name: computer-vm Chassis: vm Machine ID: 2befe86cf8887ba098b509e457554beb Boot ID: 8021c02d65dc46a1885afb25dddcf18c Virtualization: oracle Operating System: Ubuntu 16.04.1 LTS Kernel: Linux 4.4.0-78-generic Architecture: x86-64 [Virtual system on KVM/QEMU] Static hostname: centos8uefi.ostechnix.lan Icon name: computer-vm Chassis: vm Machine ID: de4100c4632e4c098dcfbbde29170268 Boot ID: 6136783bb9c241d08c8901aeecc7c30d Virtualization: kvm Operating System: CentOS Linux 8 (Core) CPE OS Name: cpe:/o:centos:centos:8 Kernel: Linux 4.18.0-80.el8.x86_64 Architecture: x86-64
Metodo 6:utilizzo di systemd-detect-virt
Il systemd-detect-virt lo strumento rileva la tecnologia di virtualizzazione e può distinguere la virtualizzazione completa della macchina dalla virtualizzazione dell'hardware o del container.
Esegui il comando seguente per verificare se il sistema è fisico o virtuale:
$ systemd-detect-virt
Risultato di esempio:
[Physical machine] none [Virtual machine on VirtualBox] oracle [Virtual machine on KVM/QEMU] KVM
Metodo 7 - Utilizzo dello script virt-what
Il virt-cosa è un piccolo script di shell sviluppato da Red Hat per scoprire se siamo in esecuzione in una macchina virtuale o fisica. virt-what è confezionato per tutte le distribuzioni Linux più diffuse, come RHEL, Fedora, CentOS, Debian, Ubuntu, Arch Linux (AUR).
In Arch Linux, puoi installarlo da AUR utilizzando qualsiasi aiutante AUR, ad esempio Sì .
$ yay -S virt-what
In RHEL, Fedora, CentOS:
$ sudo yum install virt-what
Su Debian, Ubuntu:
$ sudo apt-get install virt-what
Una volta installato, esegui il seguente comando per visualizzare per scoprire se il tuo sistema è fisico o virtuale:
$ sudo virt-what
Se non viene stampato nulla e lo script esce con codice 0 (nessun errore), significa che il sistema è fisico o un tipo di macchina virtuale di cui non siamo a conoscenza o che non riusciamo a rilevare.
Se il tuo sistema è virtuale, vedrai un output come di seguito.
virtualbox kvm
Per maggiori dettagli, fare riferimento alla home page del progetto.
- http://people.redhat.com/~rjones/virt-what/
Metodo 8 - Utilizzo dello script imvirt
L'Imvirt è un altro piccolo perl script che ti aiuta a rilevare se siamo in esecuzione su una macchina virtuale.
In Arch Linux, puoi installarlo da AUR usando Sì programma di supporto.
$ yay -S imvirt
Su Debian, Ubuntu, Linux Mint:
$ sudo apt-get install imvirt
Una volta installato, esegui il seguente comando per visualizzare per scoprire se il tuo sistema è fisico o virtuale:
$ sudo imvirt
Se il tuo sistema è fisico, l'output sarebbe:
Physical
se il sistema è virtuale, vedrai:
KVM
Per maggiori dettagli, fare riferimento alla home page del progetto.
- http://micky.ibh.net/~liske/imvirt.html
Lettura correlata:
- Come verificare se un sistema Linux è a 32 o 64 bit
- Come scoprire se una CPU supporta la tecnologia di virtualizzazione (VT)
E per ora è tutto. Se conosci altri modi per scoprire se la scatola Linux è fisica o virtuale, faccelo sapere nella sezione commenti. Controlleremo e aggiorneremo la guida di conseguenza.