VMware Linux Server - bagaimana Anda bisa tahu apakah Anda seorang vm atau perangkat keras nyata?

46

Pertanyaan yang menarik Saya telah masuk ke host Linux (kemungkinan besar SuSE). Apakah ada cara agar saya dapat mengatakan secara program bahwa saya adalah host VM atau tidak?

Juga asumsikan bahwa vmtools tidak diinstal.

mdpc
sumber
Periksa juga jawaban ini: unix.stackexchange.com/a/32605/103980
Muhamed Huseinbašić

Jawaban:

29

Gunakan alat-alat Linux standar untuk memeriksa perangkat keras pada sistem.

cat /proc/scsi/scsi

atau

ethtool -i eth0

atau

dmidecode | grep -i vmware

Jika output dari perintah ini menunjukkan perangkat keras dengan nama pabrikan "VMWare", Anda menggunakan VM VMWare. Beragam perintah disediakan di sini karena konfigurasi dan alat sistem berbeda.

Greg Cain
sumber
12
Bisakah Anda menjelaskan apa yang dilakukan perintah ini, alih-alih hanya memberikan perintah yang tidak jelas?
Stefan Lasiewski
Terima kasih. cat /proc/scsi/scsibagus karena tampaknya tersedia di mana-mana dan tidak perlu menginstal perangkat lunak baru atau dijalankan dengan hak istimewa.
tiktak
@tiktak Saya tidak melihat /proc/scsi/scsikotak Debian 7 saya ...
Kyle Strand
1
Perhatikan bahwa ini tidak dapat diandalkan 100%. Misalnya, kotak AWS tidak akan muncul sebagai VM. Lihat man virt-whatskrip heuristik yang dibuat untuk tujuan deteksi ini (untuk sistem RedHat / Fedora) dan untuk peringatan yang terlibat.
Wildcard
13
facter virtual 
xenu

menunjukkan bahwa itu adalah VM. Jika dikembalikan "fisik" maka yang terjadi adalah yang sebaliknya (bukan VM), misalnya:

facter virtual
Physical
pengguna155575
sumber
Namun, ini adalah paket khusus non-standar .... tapi saya menyukainya.
mdpc
1
@ mdpc Ini harus ada pada sistem apa pun menggunakan boneka.
Michael Hampton
11

Ada aplikasi praktis yang dapat membantu disebut virt-what . Saya belum menggunakannya dengan VMWare, tetapi itu bekerja dengan baik dengan Qemu.

Raynet
sumber
1
Sayangnya RPM biner memiliki dua dependancies dmidecode dan util-linux-ng ketika dicoba pada SuSE komersial.
mdpc
10

Anda mungkin bisa mendapatkan dan ide dengan melihat-lihat di bawah /sys. Misalnya /sys/class/dmi/id/sys_vendormemiliki nilai VMware, Inc..

Jika sudah diinstal, Anda dapat menggunakan lshw . Perintah lshw -class systemmengembalikan ini di sistem saya:

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
Sakit kepala
sumber
Pada contoh SuSE bahwa saya memiliki akses ke lshw tidak ada. Lebih lanjut, / sys / class / dmi / ... tidak ada.
mdpc
6

Beberapa lingkungan virtual menamai beberapa perangkat virtual mereka dengan nama yang sedikit mengisahkan, misalnya, VirtualBox menghadirkan kartu grafis yang menyebut dirinya "VirtualBox Display Adapter". Tetapi mencari mereka mengikat Anda ke VM tertentu dan mungkin berbagai versi sempit.

Kode Anda mungkin dapat melihat virtualisasi macam apa yang dapat diatur. Jika itu gagal seluruhnya, Anda mungkin berada di VM. Tapi Anda mungkin dengan mudah berada di kotak yang tidak memiliki perangkat keras yang mampu VM.

ahli statika
sumber
Jawaban pertama Anda adalah yang benar. Periksa nama driver perangkat.
Izzy
4

Untuk Linux Anda mengetik dmesg |grep DMI:

OUTPUT HOST VIRTUAL

[root @ myhost ~] # dmesg | grep DMI
DMI 2.3 hadir.
DMI: Mesin Virtual Microsoft Corporation / Mesin Virtual, BIOS 090006 05/23/2012

[root @ myhost ~] # dmesg | grep -i virtual
DMI: Mesin Virtual Microsoft Corporation / Mesin Virtual, BIOS 090006 05/23/2012
Mem-boot kernel paravirtualized pada perangkat keras telanjang
input: emulasi tombol mouse Macintosh sebagai / devices / virtual / input / input1
scsi 0: 0: 0: 0: Msft Virtual Disk Akses Langsung 1.0 PQ: 0 ANSI: 4
input: Microsoft Vmbus HID-compliant Mouse sebagai / perangkat / virtual / input / input4

UNTUK CONTOH HOST FISIKAL

[root @ backdev1 ~] # dmesg | grep DMI
DMI 2.5 hadir.
DMI: Sistem IBM x3650 M3 - [7945AC1] - / 90Y4784, BIOS - [D6E153AUS-1.12] - 06/30/2011
pengguna215983
sumber
1
masalah utama dengan solusi Anda adalah bahwa dmesg membacakan buffer kernel dan ukurannya terbatas. Jika ada banyak pesan atau sedikit waktu sejak sistem telah di-boot ulang, maka informasi ini tidak akan tersedia.
mdpc
4

Ada banyak kode di luar sana untuk mendeteksi apakah Anda menggunakan VM atau tidak. Mulai dengan pil merah dan cari dari sana. Makalah ini di Offensive Computing juga merupakan bacaan yang baik.

Itu kalau tidak ada yang mudah di atas :)

Bill Weiss
sumber
Tautan pertama rusak. Yang kedua rusak atau lambat.
Wildcard
Kamu benar. Pasir waktu telah memakannya ... Aku akan melihat apakah aku bisa menemukan tautan alternatif.
Bill Weiss
Memalukan; "pil merah" terdengar menarik. :)
Wildcard
1
Diperbarui dengan tautan archive.org.
Bill Weiss
3

Anda juga dapat mencari bagian pertama dari alamat mac Anda di sini dan melihat apakah itu terdaftar sebagai ditugaskan ke salah satu perusahaan virtualisasi.

Zypher
sumber
Ide yang menarik .... Saya berpikir bahwa karya (selama perangkat jaringan termasuk dalam VM ;-))
mdpc
2
Tidak akan bisa diandalkan Dalam banyak kasus, mac dapat diatur ke nilai arbitrer. Ini untuk mengaktifkan kloning mac dari mesin asli ketika mengubahnya menjadi VM. Beberapa perangkat lunak mengikat lisensinya ke mac dan seringkali tidak mungkin untuk mendapatkan lisensi baru (vendor bangkrut atau biaya mahal).
Tonny
3

Perangkat virtual juga akan diungkapkan oleh lspci dan / atau info perangkat disk di / proc:

lspci | grep -i vmware

grep -i vmware /proc/scsi/scsi /proc/ide/*/model
Heath
sumber
2

Di Linux, informasi sistem terungkap di / sys / devices / virtual / dmi / id /. Lihat jawaban saya di sini untuk skrip berguna untuk menunjukkan kepada Anda semua informasi yang tersedia.

root tidak diperlukan.

Mike S
sumber
1

Saya tidak menyukai solusi ini, karena biasanya ada driver VMware CDROM atau driver memori yang diinstal sehingga dmesg mengkonfirmasi atau menolaknya untuk saya dengan cepat.

[server @ user ~] $ dmesg | grep VMware
hda: Drive VMware Virtual IDE CDROM, drive ATAPI CD / DVD-ROM
Vendor: Model VMware: Disk virtual Rev: 1.0
Vendor: Model VMware: Disk virtual Rev: 1.0
Vendor: Model VMware: Disk virtual Rev: 1.0
Vendor: Model VMware: Disk virtual Rev: 1.0
Vendor: Model VMware: Disk virtual Rev: 1.0
Vendor: Model VMware: Disk virtual Rev: 1.0
Vendor: Model VMware: Disk virtual Rev: 1.0
Driver kontrol memori VMware diinisialisasi
Greg
sumber
3
Ini akan berfungsi saat startup, tetapi nanti Anda tidak dapat menjamin bahwa dmesg belum dihapus atau diluap.
mattdm
Inilah yang biasanya saya lakukan juga, yaitu
menangkap
1

Ini bekerja lebih baik untuk saya karena memberi saya informasi spesifik tentang produsen dan nama produk.

dmidecode -t system|grep 'Manufacturer\|Product'

Output pada server Dell:

Manufacturer: Dell Inc.
Product Name: PowerEdge C5220

Output pada Virtualbox VM:

Manufacturer: innotek GmbH
Product Name: VirtualBox

Output pada KVM / QEMU:

Manufacturer: QEMU
Product Name: Standard PC (i440FX + PIIX, 1996)

Ini bagus untuk skrip yang dapat menguraikan ini untuk identifikasi server yang lebih baik ... tetapi jika Anda menggunakan Chef dalam infrastruktur Anda, Anda dapat memeriksa atribut node Virtualization -> systemdi server chef.

pengguna751528
sumber