
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. Please see the difference between testing and debugging, and how to debug a PowerShell script.
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
You can download the dmidecode package from: https://centos.pkgs.org/6/centos-x86_64/dmidecode-2.12-7.el6.x86_64.rpm.html
– Other derivatives of the dmidecode command are:
Sudo dmidecode –s system-manufacturer
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
sudo dmidecode | egrep -i 'manufacturer|product'
sudo dmidecode -s system-product-name
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
SAMPLE 3
Viewing the /sys/class/dmi/id/product_name using the cat command
cat /sys/class/dmi/id/product_name
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
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.












