- Как определить является ли система Linux физической или виртуальной машиной
- Метод 1 – Использование утилиты Dmidecode
- Метод 2 – Использование утилиты Facter
- Метод 3 – Использование утилиты lshw
- Метод 4 – Использование утилиты dmesg
- Метод 5 – Использование команды hostnamectl
- Метод 6 – Использование systemd-detect-virt
- Метод 7 – Использование скрипта virt-what
- Метод 8 – Использование скрипта imvirt
Как определить является ли система Linux физической или виртуальной машиной
Существует множество способов определить, является ли система физической или виртуальной.
В настоящее время мне известны следующие методы.
Я сообщу, если найду другие способы в ближайшие дни.
Метод 1 – Использование утилиты Dmidecode
Самый простой способ узнать, работаем ли мы на виртуальной или физической машине, – это использовать утилиту dmidecode.
Dmidecode, декодер таблиц DMI, используется для поиска аппаратных компонентов вашей системы, а также другой полезной информации, такой как серийные номера и версия BIOS.
Как получить информацию о системе в Ubuntu Linux
Dmidecode предустановлен в большинстве дистрибутивов Linux.
На всякий случай, если он еще не установлен, вы можете установить его с помощью диспетчера пакетов вашего дистрибутива.
Скажем, например, следующая команда установит dmidecode в системах на основе DEB, таких как Ubuntu, Linux Mint.
$ sudo apt-get install dmidecode
После установки Dmidecode выполните следующую команду, чтобы узнать, является ли ваша система физической или виртуальной машиной:
$ sudo dmidecode -s system-manufacturer
Если это физическая система, вы получите результат, подобный приведенному ниже.
Dell Inc.
Если это виртуальная система, созданная с помощью Virtualbox, вы получите следующий результат:
innotek GmbH
Для тех, кому интересно, innotek – это немецкая компания-разработчик программного обеспечения, которая разрабатывает программное обеспечение для виртуализации ПК под названием VirtualBox.
Если это виртуальная система, созданная с помощью KVM / QEMU, вывод будет:
QEMU
Как видно из вышеприведенного вывода, если это физическая система, dmidecode покажет имя производителя (например, Dell Inc.).
Если это виртуальная система, то она покажет программное обеспечение / технологию виртуализации (например, VirtualBox или QEMU).
Кроме того, вы можете использовать эту команду, чтобы проверить, является ли это физической или виртуальной системой.
$ sudo dmidecode | grep Product
Примеры вывода:
[Физическая машина] Product Name: 01HXXJ Product Name: Inspiron N5050 [VirtualBox] Product Name: VirtualBox Product Name: VirtualBox [KVM/QEMU] Product Name: Standard PC (Q35 + ICH9, 2009)
Еще одна команда, чтобы узнать, является ли это физической или виртуальной системой:
$ sudo dmidecode -s system-product-name
Примеры вывода:
[Физическая машина] Inspiron N5050 [VirtualBox] VirtualBox [KVM/QEMU] Standard PC (Q35 + ICH9, 2009)
Еще одна команда dmidecode для определения типа удаленной системы:
$ sudo dmidecode | egrep -i 'manufacturer|product'
Примеры вывода:
[Физическая машина] 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 [VirtualBox] Manufacturer: innotek GmbH Product Name: VirtualBox Manufacturer: Oracle Corporation Product Name: VirtualBox Manufacturer: Oracle Corporation [KVM/QEMU] Manufacturer: QEMU Product Name: Standard PC (Q35 + ICH9, 2009) Manufacturer: QEMU Manufacturer: QEMU Manufacturer: QEMU Manufacturer: QEMU
И еще одна команда dmidecode предназначена для достижения той же цели:
$ sudo dmidecode | egrep -i 'vendor'
Примеры вывода:
[Физическая машина]
Vendor: Dell Inc. [VirtualBox] Vendor: innotek GmbH [KVM/QEMU] Vendor: EFI Development Kit II / OVMF
Метод 2 – Использование утилиты Facter
Facter – это утилита командной строки для сбора и отображения информации о системе.
В отличие от Dmidecode, Facter по умолчанию не предустановлен.
Возможно, вам потребуется установить его, как показано ниже, в зависимости от используемого вами дистрибутива Linux.
$ sudo pacman -S facter
На Fedora:
$ sudo dnf install facter
На CentOS, RHEL:
$ sudo yum install epel-release
$ sudo yum installl facter
На openSUSE:
$ sudo zypper install facter
После установки facter выполните следующую команду, чтобы проверить, является ли система физической или виртуальной машиной:
$ facter 2> /dev/null | grep virtual
Если эта команда не работает, попробуйте с привилегиями sudo:
$ sudo facter 2> /dev/null | grep virtual
Примеры вывода:
[Физическая машина]
is_virtual => false virtual => physical [VirtualBox и KVM/QEMU] is_virtual => true virtual => kvm
Как вариант, используйте следующую команду:
$ facter virtual
или
$ sudo facter virtual
physical
kvm
Метод 3 – Использование утилиты lshw
Утилита lshw – это небольшая утилита командной строки, которая отображает подробную информацию об оборудовании Unix-подобной системы.
Она отображает все детали оборудования, включая конфигурацию памяти, версию прошивки, конфигурацию материнской платы, версию и скорость процессора, конфигурацию кеша, скорость шины и т. д.
В некоторых дистрибутивах Linux предустановлен lshw.
Если он еще не установлен, вы можете установить его, как показано ниже.
В Arch Linux и производных:
$ sudo pacman -S lshw
В Fedora:
$ sudo dnf install lshw
В RHEL и производных, таких как CentOS, scientific Linux:
$ sudo yum install epel-release
$ sudo yum install lshw
На Debian, Ubuntu, Linux Mint:
$ sudo apt-get install lshw
В SUSE / openSUSE:
$ sudo zypper in lshw
После установки lshw выполните следующую команду, чтобы узнать, является ли ваша система физической или виртуальной:
$ sudo lshw -class 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 [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 [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
Метод 4 – Использование утилиты dmesg
Узнать тип системы можно с помощью утилиты dmesg.
dmesg используется для проверки кольцевого буфера ядра или управления им.
Чтобы проверить, является ли ваша система Linux физической или виртуальной, просто запустите:
$ sudo dmesg | grep "Hypervisor detected"
Если ваша система физическая, вы не увидите никаких выходных данных.
Если ваша система – виртуальная машина, вы увидите результат, подобный приведенному ниже.
[ 0.000000] Hypervisor detected: KVM
Метод 5 – Использование команды hostnamectl
Мы можем узнать, является ли наша система виртуальной или физической, используя команду hostnamectl.
Для работы требуется systemd.
$ hostnamectl status
или
$ hostnamectl
Примеры вывода:
[Физическая машина]
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 [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 [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
Метод 6 – Использование systemd-detect-virt
Инструмент systemd-detect-virt обнаруживает технологию виртуализации и может отличить полную виртуализацию машины от аппаратной или контейнерной виртуализации.
Выполните следующую команду, чтобы проверить, является ли система физической или виртуальной:
$ systemd-detect-virt
Примеры вывода:
[Физическая машина]
none [Virtual machine on VirtualBox] oracle [Virtual machine on KVM/QEMU] KVM
Метод 7 – Использование скрипта virt-what
Virt-what – это небольшой скрит оболочки, разработанный Red Hat, чтобы определить, работаем ли мы на виртуальной или физической машине.
virt-what собран для всех популярных дистрибутивов Linux, таких как RHEL, Fedora, CentOS, Debian, Ubuntu, Arch Linux (AUR).
В Arch Linux вы можете установить его из AUR с помощью любых помощников AUR, например Yay.
$ yay -S virt-what
В RHEL, Fedora, CentOS:
$ sudo yum install virt-what
На Debian, Ubuntu:
$ sudo apt-get install virt-what
$ sudo virt-what
Если ничего не выводится и скрит завершается с кодом 0 (без ошибок), это означает, что либо система является физической, либо является типом виртуальной машины, о которой мы не знаем или не можем обнаружить.
Если ваша система виртуальная, вы увидите результат, как показано ниже.
virtualbox kvm
Метод 8 – Использование скрипта imvirt
Imvirt – это еще один небольшой скрипт Perl, который помогает вам определить, работает ли мы на виртуальной машине.
В Arch Linux вы можете установить его из AUR с помощью вспомогательной программы Yay.
$ yay -S imvirt
На Debian, Ubuntu, Linux Mint:
$ sudo apt-get install imvirt
$ sudo imvirt
Physical
KVM