Відповіді:
Використовуйте стандартні інструменти 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
вказує, що це ВМ. Якщо він повернувся "фізичним", то все навпаки (не VM), наприклад:
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". Але шукаючи цих зв'язків, ви підходите до певного віртуального комп'ютера та, можливо, до вузького кола версій.
Ваш код може виявити, яку віртуалізацію він може налаштувати. Якщо це повністю не вдасться, ви, можливо, перебуваєте у вітчизняній машині. Але ви настільки ж легко можете знаходитись на коробці, яка не має апаратного забезпечення, здатного на VM.
Для 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 віртуальний DMI: Віртуальна машина / віртуальна машина Microsoft Corporation, BIOS 090006 23.05.2012 Завантаження паравіртуалізованого ядра на голому обладнанні вхід: Емуляція кнопки миші Macintosh як / пристрої / віртуальні / введення / введення1 scsi 0: 0: 0: 0: Віртуальний диск Msft з прямим доступом 1,0 PQ: 0 ANSI: 4 вхід: Microsoft Vmbus, сумісна з HID, миша як / пристрої / віртуальна / вхід / вхід4
[root @ backdev1 ~] # dmesg | grep DMI DMI 2.5 присутній. DMI: IBM System x3650 M3 - [7945AC1] - / 90Y4784, BIOS - [D6E153AUS-1.12] - 30.06.2011
Існує багато коду, який дозволяє виявити, ви знаходитесь у вітрині чи ні. Почніть з червоної таблетки і шукайте звідти. Цей документ у «Наступальних обчисленнях» також добре читається.
Ось якщо ніхто з тих легких вище не працює :)
Ви також можете пошукати першу частину свого mac-адреси тут і побачити, чи він вказаний як призначений будь-якій із компаній, що займаються віртуалізацією.
Мені не сподобалося жодне з цих рішень, оскільки зазвичай встановлений драйвер VMware CDROM або драйвер пам'яті, тому dmesg швидко підтверджує або заперечує це для мене.
[сервер @ користувач ~] $ dmesg | grep VMware hda: VMware Virtual IDE CDROM Drive, привід CD / DVD-ROM ATAPI Постачальник: 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
на сервері шеф-кухаря.
Я дуже люблю:
hostnamectl status
або бетон:
hostnamectl status | grep "Chassis:"
Як перевірити, чи є система Linux фізичною чи віртуальною машиною
16 способів перевірити, чи є система Linux фізичною чи віртуальною машиною