GNU/Linux >> Linux Esercitazione >  >> Linux

Come verificare se un sistema Linux è una macchina fisica o virtuale

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 .

$ 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 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.


Linux
  1. Come rimuovere le macchine virtuali basate su KVM su Redhat Linux

  2. Come controllare la versione del sistema operativo e di Linux

  3. Come controllare il tempo di attività del sistema in Linux

  4. Controlla Uptime su Ubuntu Linux Server - Come farlo?

  5. Come verificare se il sistema Linux è in esecuzione su un sistema fisico o una macchina virtuale?

Come verificare che una porta sia aperta su un sistema Linux remoto

Come controllare/riparare il file system Linux all'avvio

Come controllare e riparare un file system in RHEL Linux

Come utilizzare il sistema operativo Tails Linux nella macchina virtuale VirtualBox

Come controllare la cronologia di riavvio del sistema e il tempo di avvio in Linux

Come controllare il carico del server nel sistema Linux