Linux Machine: Is it Virtual or a Physical server

Virtualization technology

Sometimes, as a Linux Administrator, you want to know if a server you are working on remotely is a Physical device or a Virtual machine. This tutorial explains some simple command which will help you determine the nature of the machine you are working on.

SAMPLE 1  The dmidecode tool

This is the Desktop Management Interface table decoder and it retrieves comprehensive system information of your systems hardware components and presents it in a readable format.

Below are two images from the command: sudo dmidecode | more

Server hardware

You can download the dmidecode package from:
– Other derivatives of the dmidecode command are:

Sudo dmidecode –s system-manufacturer
Cloud computing

My machine is a Virtual Machine. If it were a physical device, the output will be the name of the company that developed the device e.g. Dell Inc, Lenovo, Asus Inc.

Other virtualization tools exist such as innotek , which is German based company that develops Virtualbox.

sudo dmidecode –t system

Virtualization technology
sudo dmidecode | egrep -i 'manufacturer|product'
sudo dmidecode -s system-product-name
Cloud computing

Their outputs will differ in format but they will tell the Physical or Virtual nature of the Linux machine.

SAMPLE 2 : hostnamectl
If you have system installed, hostnamectl is a very good good command to determine if the machine is physical or virtual.

Hotsnamectl status
Virtualization technology

SAMPLE 3 : Viewing the /sys/class/dmi/id/product_name using the cat command

cat /sys/class/dmi/id/product_name
Server hardware

However, this particular command has a certain peculiarity: a libvirt-kvm-VM will be displayed as Standard PC (i440fx +/PIIX) which is a common fingerprint for QEMU/KVM VITUAL virtual machines.

Another derivative of this command is;

pr –t /sys/class/dmi/id/sys-vendor/sys/class/dmi//id/product_name
Cloud computing

SAMPLE 4: Using the dmesg tool with the following command;

 Sudo dmesg | grep “Hypervisor detected” 

What this dmesg does is to control the kernel buffer. If the machine is virtual, the output will be something like the image below. If it is a physical device, the command will return nothing

SAMPLE 5: virt-what
You will need to install this utility. And the command is just that. If the machine is virtual, the output will look like the image below:

If the machine is physical, it will return nothing or exit the script with code0.

SAMPLE 6: lshw
This utility is included in the epel-release. if you don’t have it already, you need to install it and then install the lshw utility.

If this were a physical device, the output under the product tag will be the model of the device.

SAMPLE 7: systemd-detect-virt
This command is unique in a way in that it can tell the difference in the virtualization tehnology if the system is on a virtual machine

If this were a physical device, the output to the command will be none. However, if it is a virtual machine on VirtualBox, the output will be “Is it Virtual or a Physical server.

Notify of

Inline Feedbacks
View all comments
Would love your thoughts, please comment.x