VMware Linux Server - як ти можеш дізнатися, чи є ти vm чи справжнім обладнанням?


46

Цікаве запитання. Я увійшов у хост Linux (швидше за все, SuSE). Чи є якимось чином я можу програмно сказати, що я хостинг VM чи ні?

Припустимо також, що vmtools не встановлено.


Перевірте також цю відповідь: unix.stackexchange.com/a/32605/103980
Muhamed Huseinbašić

Відповіді:


29

Використовуйте стандартні інструменти Linux для перевірки обладнання в системі.

cat /proc/scsi/scsi

або

ethtool -i eth0

або

dmidecode | grep -i vmware

Якщо у висновку цих команд відображається обладнання з назвою виробника "VMWare", ви знаходитесь у VMWare VM. Тут подано кілька команд, оскільки конфігурації системи та інструменти відрізняються.


12
Чи можете ви пояснити, що роблять ці команди, а не лише надавати розпливчасті команди?
Стефан Ласевський

Дякую. cat /proc/scsi/scsiце приємно, оскільки воно, здається, доступне скрізь і не вимагає встановлення нового програмного забезпечення або роботи з привілейованими правами.
тиктак

@tiktak Я не бачу /proc/scsi/scsiна своїй скриньці Debian 7 ...
Kyle Strand

1
Зауважте, що це не на 100% надійно. Наприклад, вікна AWS, схоже, не є віртуальними машинами. Ознайомтеся man virt-whatз евристичним сценарієм, побудованим для цієї мети виявлення (для систем RedHat / Fedora) та щодо застережень.
Wildcard

13
facter virtual 
xenu

вказує, що це ВМ. Якщо він повернувся "фізичним", то все навпаки (не VM), наприклад:

facter virtual
Physical

Однак це нестандартний спеціальний пакет .... але мені це подобається.
mdpc

1
@mdpc Він повинен бути присутнім у будь-якій системі, що використовує лялечку.
Майкл Хемптон

11

Є зручний додаток, який може допомогти назвати virt-what . Я не використовував його з VMWare, але він добре працював з Qemu.


1
На жаль, двійковий RPM має дві залежності dmidecode та util-linux-ng при спробі на SuSE комерційних.
mdpc

10

Можливо, вам вдасться отримати ідею, поглянувши під /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

На прикладів SuSE, що я маю доступ до lshw, не існує. Крім того, / sys / class / dmi / ... не існує.
mdpc

6

Деякі віртуальні середовища називають деякі свої віртуальні пристрої з іменами, які є трохи показовими, наприклад, VirtualBox, що представляє графічну карту, яка називає себе "VirtualBox Display Adapter". Але шукаючи цих зв'язків, ви підходите до певного віртуального комп'ютера та, можливо, до вузького кола версій.

Ваш код може виявити, яку віртуалізацію він може налаштувати. Якщо це повністю не вдасться, ви, можливо, перебуваєте у вітчизняній машині. Але ви настільки ж легко можете знаходитись на коробці, яка не має апаратного забезпечення, здатного на VM.


Ваша перша відповідь була правильною. Перевірте назви драйверів пристрою.
Іззі

4

Для 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

1
Основна проблема вашого рішення полягає в тому, що dmesg зчитує буфер ядра і він має обмежений розмір. Якщо після перезавантаження системи було багато повідомлень або трохи часу, ця інформація буде недоступною.
mdpc

4

Існує багато коду, який дозволяє виявити, ви знаходитесь у вітрині чи ні. Почніть з червоної таблетки і шукайте звідти. Цей документ у «Наступальних обчисленнях» також добре читається.

Ось якщо ніхто з тих легких вище не працює :)


Перша ланка розірвана. Друга або зламана, або повільна.
Wildcard

Ти правий. Піски часу їх з'їли ... Я побачу, чи зможу я придумати альтернативні посилання.
Білл Вайс

Соромно; "червона таблетка" звучала цікаво. :)
Wildcard

1
Оновлено посилання archive.org.
Білл Вайс

3

Ви також можете пошукати першу частину свого mac-адреси тут і побачити, чи він вказаний як призначений будь-якій із компаній, що займаються віртуалізацією.


Цікава ідея .... Я думаю, що це працює (доки мережевий пристрій включений у VM ;-))
mdpc

2
Не буде надійним. У багатьох випадках mac може бути встановлений як довільне значення. Це дозволить клонувати mac оригінальної машини при перетворенні його на VM. Деяке програмне забезпечення пов'язує свою ліцензію з mac, і часто неможливо отримати нову ліцензію (постачальник розрушився або витрати є непомірними).
Тонні

3

Віртуальні пристрої також будуть розкриті інформацією lspci та / або дискового пристрою в / proc:

lspci | grep -i vmware

grep -i vmware /proc/scsi/scsi /proc/ide/*/model

2

У Linux системна інформація розкривається в / sys / devices / virtual / dmi / id /. Дивіться мою відповідь тут щодо зручного сценарію, щоб показати вам всю наявну інформацію.

корінь не потрібно.


1

Мені не сподобалося жодне з цих рішень, оскільки зазвичай встановлений драйвер 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 ініціалізований

3
Це буде працювати при запуску, але пізніше ви не можете гарантувати, що dmesg не був очищений або переповнений.
mattdm

Це те, що я зазвичай теж роблю, тобто поздоровлення dmesg
tpaul

1

Це працювало краще для мене, оскільки дає мені конкретну інформацію про виробника та назву продукту.

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на сервері шеф-кухаря.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.