Ciekawe pytanie. Zalogowałem się na hoście Linux (najprawdopodobniej SuSE). Czy jest jakiś sposób, że mogę programowo powiedzieć, że jestem hostem VM, czy nie?
Załóżmy również, że vmtools nie są zainstalowane.
Ciekawe pytanie. Zalogowałem się na hoście Linux (najprawdopodobniej SuSE). Czy jest jakiś sposób, że mogę programowo powiedzieć, że jestem hostem VM, czy nie?
Załóżmy również, że vmtools nie są zainstalowane.
Odpowiedzi:
Użyj standardowych narzędzi systemu Linux, aby sprawdzić sprzęt w systemie.
cat /proc/scsi/scsi
lub
ethtool -i eth0
lub
dmidecode | grep -i vmware
Jeśli dane wyjściowe tych poleceń pokazują sprzęt o nazwie producenta „VMWare”, oznacza to, że masz maszynę wirtualną VMWare. Udostępniono tutaj wiele poleceń, ponieważ konfiguracje systemu i narzędzia różnią się.
cat /proc/scsi/scsi
jest fajny, ponieważ wydaje się, że jest dostępny wszędzie i nie wymaga instalowania nowego oprogramowania ani uruchamiania z uprawnieniami uprzywilejowanymi.
/proc/scsi/scsi
na moim pudełku Debiana 7 ...
man virt-what
skrypt heurystyczny zbudowany dla tego celu wykrywania (dla systemów RedHat / Fedora) i związane z tym zastrzeżenia.
facter virtual
xenu
wskazuje, że jest to maszyna wirtualna. Jeśli zwrócił „fizyczny”, to prawda jest odwrotna (nie VM), np .:
facter virtual
Physical
Być może uda ci się zdobyć pomysł i rozejrzeć się po okolicy /sys
. Na przykład /sys/class/dmi/id/sys_vendor
ma wartość VMware, Inc.
.
Jeśli jest zainstalowany, możesz użyć lshw . Polecenie lshw -class system
zwraca to w moim systemie:
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
Niektóre środowiska wirtualne nazywają niektóre ze swoich urządzeń wirtualnych nazwami, które są nieco wymowne, na przykład VirtualBox przedstawia kartę graficzną, która nazywa się „VirtualBox Display Adapter”. Ale szukanie tych łączy Cię z konkretną maszyną wirtualną i być może z wąską gamą wersji.
Kod może zobaczyć, jaki rodzaj wirtualizacji może skonfigurować. Jeśli to się nie powiedzie całkowicie, możesz być na maszynie wirtualnej. Ale równie łatwo możesz znaleźć się w pudełku, które nie ma sprzętu obsługującego maszyny wirtualne.
W systemie Linux piszesz dmesg |grep DMI
:
[root @ myhost ~] # dmesg | grep DMI Obecny DMI 2.3. DMI: Microsoft Corporation Virtual Machine / Virtual Machine, BIOS 090006 05/23/2012 [root @ myhost ~] # dmesg | grep -i virtual DMI: Microsoft Corporation Virtual Machine / Virtual Machine, BIOS 090006 05/23/2012 Uruchamianie parawirtualizowanego jądra na czystym sprzęcie input: Emulacja przycisku myszy Macintosh jako / devices / virtual / input / input1 scsi 0: 0: 0: 0: Bezpośredni dostęp Msft Virtual Disk 1.0 PQ: 0 ANSI: 4 wejście: Mysz zgodna z Microsoft Vmbus HID jako / devices / virtual / input / input4
[root @ backdev1 ~] # dmesg | grep DMI Obecny DMI 2.5. DMI: IBM System x3650 M3 - [7945AC1] - / 90Y4784, BIOS - [D6E153AUS-1.12] - 30.06.2011
Istnieje wiele kodów do wykrycia, czy jesteś na maszynie wirtualnej, czy nie. Zacznij od czerwonej pigułki i szukaj stamtąd. Ten artykuł w Offensive Computing jest również dobrą lekturą.
Tak, jeśli żaden z tych łatwych powyżej nie działa :)
Możesz również przeszukać pierwszą część adresu mac tutaj i sprawdzić, czy jest wymieniony jako przypisany do dowolnej firmy zajmującej się wirtualizacją.
Urządzenia wirtualne zostaną również ujawnione przez lspci i / lub informacje o urządzeniu dyskowym w / proc:
lspci | grep -i vmware
grep -i vmware /proc/scsi/scsi /proc/ide/*/model
Nie podobało mi się żadne z tych rozwiązań, ponieważ zwykle jest zainstalowany sterownik CD-ROM VMware lub sterownik pamięci, więc dmesg szybko mi to potwierdza lub zaprzecza.
[serwer @ użytkownik ~] $ dmesg | grep VMware hda: VMware Virtual IDE CDROM Drive, ATAPI CD / DVD-ROM Producent: VMware Model: Dysk wirtualny Rev: 1.0 Producent: VMware Model: Dysk wirtualny Rev: 1.0 Producent: VMware Model: Dysk wirtualny Rev: 1.0 Producent: VMware Model: Dysk wirtualny Rev: 1.0 Producent: VMware Model: Dysk wirtualny Rev: 1.0 Producent: VMware Model: Dysk wirtualny Rev: 1.0 Producent: VMware Model: Dysk wirtualny Rev: 1.0 Zainicjowany sterownik kontroli pamięci VMware
To działało dla mnie lepiej, ponieważ daje mi szczegółowe informacje o producencie i nazwie produktu.
dmidecode -t system|grep 'Manufacturer\|Product'
Dane wyjściowe na serwerze Dell:
Manufacturer: Dell Inc.
Product Name: PowerEdge C5220
Dane wyjściowe na maszynie wirtualnej Virtualbox:
Manufacturer: innotek GmbH
Product Name: VirtualBox
Dane wyjściowe na KVM / QEMU:
Manufacturer: QEMU
Product Name: Standard PC (i440FX + PIIX, 1996)
Jest to świetne w przypadku skryptów, które mogą je analizować w celu lepszej identyfikacji serwerów ... ale jeśli używasz Chef w swojej infrastrukturze, możesz sprawdzić atrybut węzła Virtualization -> system
na serwerze szefa kuchni.
Bardzo lubię:
hostnamectl status
lub beton:
hostnamectl status | grep "Chassis:"
Jak sprawdzić, czy system Linux jest maszyną fizyczną czy wirtualną
16 metod sprawdzania, czy system Linux jest maszyną fizyczną czy wirtualną