Ответы:
Используйте стандартные инструменты Linux для проверки оборудования в системе.
cat /proc/scsi/scsi
или же
ethtool -i eth0
или же
dmidecode | grep -i vmware
Если выходные данные этих команд показывают аппаратное обеспечение с именем производителя «VMWare», значит, вы находитесь на VMWare VM. Здесь приведены несколько команд, потому что системные конфигурации и инструменты различаются.
cat /proc/scsi/scsi
это хорошо, потому что, кажется, он доступен везде и не требует установки нового программного обеспечения или запуска с привилегированными правами.
/proc/scsi/scsi
в своей коробке Debian 7 ...
man virt-what
Эвристический скрипт, созданный для этой цели обнаружения (для систем RedHat / Fedora), а также сведения о возможных предупреждениях.
facter virtual
xenu
указывает на то, что это ВМ. Если он вернул «физический», то верно обратное (не виртуальная машина), например:
facter virtual
Physical
Вы могли бы получить и идею, оглядываясь вокруг /sys
. Например, /sys/class/dmi/id/sys_vendor
имеет значение VMware, Inc.
.
Если он установлен, вы можете использовать lshw . Команда lshw -class system
возвращает это в моей системе:
server1
description: Computer
product: VMware Virtual Platform
vendor: VMware, Inc.
version: None
serial: VMware-...
width: 64 bits
capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32
Некоторые виртуальные среды называют некоторые из своих виртуальных устройств именами, которые являются немного контрольными, например, VirtualBox представляет графическую карту, которая называет себя «VirtualBox Display Adapter». Но поиск этих связей связывает вас с конкретной ВМ и, возможно, с узким диапазоном версий.
Ваш код может увидеть, какой тип виртуализации он может настроить. Если это не удастся полностью, возможно, вы находитесь в виртуальной машине. Но вы так же легко можете оказаться на коробке, где нет аппаратного обеспечения, способного работать с виртуальными машинами.
Для Linux вы набираете dmesg |grep DMI
:
[root @ myhost ~] # dmesg | grep DMI DMI 2.3 присутствует. DMI: Microsoft Corporation Виртуальная машина / Виртуальная машина, BIOS 090006 23.05.2012 [root @ myhost ~] # dmesg | grep -i virtual DMI: Microsoft Corporation Виртуальная машина / Виртуальная машина, BIOS 090006 23.05.2012 Загрузка паравиртуализированного ядра на голом оборудовании input: эмуляция кнопок мыши Macintosh как / devices / virtual / input / input1 scsi 0: 0: 0: 0: виртуальный диск Msft с прямым доступом 1.0 PQ: 0 ANSI: 4 input: Microsoft Vmbus HID-совместимая мышь как / devices / virtual / input / input4
[root @ backdev1 ~] # dmesg | grep DMI DMI 2.5 присутствует. DMI: IBM System x3650 M3 - [7945AC1] - / 90Y4784, BIOS - [D6E153AUS-1.12] - 30.06.2011
Есть много кода, чтобы определить, находитесь ли вы в виртуальной машине или нет. Начните с красной таблетки и ищите оттуда. Эта статья в «Offensive Computing» также хорошо читается.
Это если ни один из тех простых из вышеперечисленных не работает :)
Вы также можете найти первую часть своего mac-адреса здесь и посмотреть, указан ли он как назначенный какой-либо из компаний по виртуализации.
Мне не понравилось ни одно из этих решений, так как обычно там установлен драйвер VMware CDROM или драйвер памяти, поэтому dmesg быстро подтверждает или отклоняет его для меня.
[сервер @ пользователь ~] $ dmesg | grep VMware hda: VMware Virtual IDE CDROM, ATAPI CD / DVD-ROM Поставщик: VMware Модель: Виртуальный диск Rev: 1.0 Поставщик: VMware Модель: Виртуальный диск Rev: 1.0 Поставщик: VMware Модель: Виртуальный диск Rev: 1.0 Поставщик: VMware Модель: Виртуальный диск Rev: 1.0 Поставщик: VMware Модель: Виртуальный диск Rev: 1.0 Поставщик: VMware Модель: Виртуальный диск Rev: 1.0 Поставщик: VMware Модель: Виртуальный диск Rev: 1.0 Драйвер управления памятью VMware инициализирован
Это сработало для меня лучше, так как дает конкретную информацию о производителе и названии продукта.
dmidecode -t system|grep 'Manufacturer\|Product'
Вывод на сервер Dell:
Manufacturer: Dell Inc.
Product Name: PowerEdge C5220
Вывод на Virtualbox VM:
Manufacturer: innotek GmbH
Product Name: VirtualBox
Выход на KVM / QEMU:
Manufacturer: QEMU
Product Name: Standard PC (i440FX + PIIX, 1996)
Это отлично подходит для сценариев, которые могут анализировать их для лучшей идентификации серверов ... но если вы используете Chef в своей инфраструктуре, вы можете проверить атрибут узла Virtualization -> system
на сервере chef.
Мне очень нравится:
hostnamectl status
или бетон:
hostnamectl status | grep "Chassis:"
Как проверить, является ли система Linux физической или виртуальной машиной
16 способов проверить, является ли система Linux физической или виртуальной машиной