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
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.
SAMPLE 3 : Viewing the /sys/class/dmi/id/product_name using the cat command
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. If it is a virtual machine on virtual box, the output will be oracle.