操作系统真的可以感知是在VM中运行吗?

2020-09-24 11:00:55 浏览数 (1)

操作系统可以检测它们是否正在VM中运行吗?

为什么抛出这个问题呢,

是因为很多软件会自动检测自己是否是运行在虚拟机环境下,

软件本身对运行环境是由要求的。

所以当一个软件无法运行的时候,

可以考虑是不是虚拟机环境造成的。

本文分别在Windows和Linux下检测一下操作系统是否运行在虚拟机中。

Windows下

在电脑属性中看不到任何虚拟机的信息:

使用systeminfo可以查看更加详细的信息,从下图可以看出系统制造商是QEMU:

下面介绍Linux系统下识别VM的九种方法

Linux下第一种方法:

dmes

物理机:

root@server01:~# dmesg | grep "Hypervisor"

无返回

虚拟机:

root@server02:~# dmesg | grep "Hypervisor"

[ 0.000000] Hypervisor detected: KVM

Linux下第二种方法:

lscpu

物理机:

root@server01:~# lscpu | grep Hypervisor

无返回

虚拟机:

root@server02:~# lscpu | grep Hypervisor

Hypervisor vendor: KVM

linux下第三种方法:

virt-what

物理机:

root@server01:~# virt-what

无返回

虚拟机:

root@server02:~# virt-what

kvm

linux下第四种方法:

imvirt

物理机:

root@server01:~# imvirt

Physical

虚拟机:

root@server02:~# imvirt

KVM

linux下第五种方法:

systemd-detect-virt

物理机:

root@server01:~# systemd-detect-virt

none

虚拟机:

root@server02:~# systemd-detect-virt

qemu

linux下第六种方法:

facter

物理机:

root@server01:~# facter virtual

physical

虚拟机:

root@server02:~# facter virtual

kvm

linux下第七种方法:

hostnamectl

物理机:

root@server01:~# hostnamectl

Static hostname: server01

Icon name: computer-desktop

Chassis: desktop

Machine ID: f909adea404642a6a39aa69bdb978fd1

Boot ID: f9dddf54f03747eab54337123bfbd079

Operating System: Debian GNU/Linux 9 (stretch)

Kernel: Linux 4.15.18-10-pve

Architecture: x86-64

虚拟机:

root@server02:~# hostnamectl

Static hostname: server02

Icon name: computer-vm

Chassis: vm

Machine ID: f909adea404642a6a39aa69bdb978fd1

Boot ID: c3e2b56b6cbf425c8daf8dbc9ba46a44

Virtualization: qemu

Operating System: Debian GNU/Linux 9 (stretch)

Kernel: Linux 4.15.18-10-pve

Architecture: x86-64

linux下第八种方法:

dmidecode

物理机:

root@server01:~# dmidecode -s system-manufacturer

Hewlett-Packard

root@server01:~# dmidecode -s bios-vendor

AMI

虚拟机:

root@server02:~# dmidecode -s system-manufacturer

QEMU

root@server02:~# dmidecode -s bios-vendor

SeaBIOS

注明:虚拟机的Vendor一般是OVMF或者SeaBIOS

linux下第九种方法:

lshw

物理机:

root@server01:~# lshw -class system

server01

description: Desktop Computer

product: HP ProDesk 490 G2 MT (L0J69PA#AB2)

vendor: Hewlett-Packard

serial: 6CR5126GKF

width: 64 bits

capabilities: smbios-2.8 dmi-2.8 smp vsyscall32

configuration: administrator_password=disabled boot=normal chassis=desktop family=103C_53307F G=D frontpanel_password=disabled keyboard_password=disabled power-on_password=disabled sku=L0J69PA#AB2 uuid=2F6D2D65-A077-4A0F-1AFA-A85FD9C09739

虚拟机:

root@server02:~# lshw -class system

server02

description: Computer

product: Standard PC (i440FX PIIX, 1996)

vendor: QEMU

version: pc-i440fx-3.0

width: 64 bits

capabilities: smbios-2.8 dmi-2.8 smp vsyscall32

configuration: boot=normal uuid=71BAA06F-406A-0B49-ACA3-6EF9D267C75B

0 人点赞