How to detect virtualization 虚拟机检测

简介: 除了下面的方法外,mac地址也可以检测虚拟机。Update: You may be interested in [[the perl module|perl-module-for-virtualization-detection]] implementing these tricks.

除了下面的方法外,mac地址也可以检测虚拟机。
Update: You may be interested in [[the perl module|perl-module-for-virtualization-detection]] implementing these tricks.

Frequently, our customers want to install our software in a virtual machine. This can be OK, but frequently they hit a CPU, memory, or IO limit caused by running in a constrained virtual environment. When this happens, we really like to know if they’re running under virtualization when we try to support them. Here’s some tricks to detect, from a shell, if the system is virtualized.

The first thing to check is dmesg. On a recently-booted system, checking the ‘dmesg’ command output may be sufficient. Otherwise, try “cat /var/log/dmesg” instead of “dmesg”

 

  • VMWare:
     # dmesg | grep -i virtual
     VMware vmxnet virtual NIC driver
       Vendor: VMware    Model: Virtual disk      Rev: 1.0
     hda: VMware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM drive
    
  • QEmu or KVM:If the “-cpu host” option has not been used, QEmu and KVM will identify themselves as:
     # dmesg | grep -i virtual
     CPU: AMD QEMU Virtual CPU version 0.9.1 stepping 03
    

    otherwise, the host’s CPU information will be used both in dmesg, or in /proc/cpuinfo.

    However, you should see something like:

     $ dmesg | grep -i virtual
     [    0.000000] Booting paravirtualized kernel on KVM
    

    on newer kernels that understand that they’re running under paravirtualization. (Thanks to René Pfeiffer for pointing this out)

  • Microsoft VirtualPC:
     # dmesg | grep -i virtual
     hda: Virtual HD, ATA DISK drive
     hdc: Virtual CD, ATAPI CD/DVD-ROM drive
    
  • Xen (thanks, wardi and others)
    # dmesg | grep -i xen
    Xen virtual console successfully installed as tty1
    
  • Virtuozzo
    # dmesg
    (returns no output)
    
    # cat /var/log/dmesg
    (returns no output)
    
    # ls -al /proc/vz
    veinfo  veinfo_redir  veredir  vestat  vzaquota  vzdata
    

On longer-running systems, you may need to grep /var/log/dmesg instead.

If that doesn’t produce anything useful, try using dmidecode to look at the BIOS information. Frequently, there will be at least one component identifying itself as virtualized:

  • VMWare:
     # dmidecode | egrep -i 'manufacturer|product'
     Manufacturer: VMware, Inc.
     Product Name: VMware Virtual Platform
    
  • Microsoft VirtualPC:
     # dmidecode | egrep -i 'manufacturer|product'
     Manufacturer: Microsoft Corporation
     Product Name: Virtual Machine
    
  • QEMU or KVM:
     # dmidecode | egrep -i 'vendor'
     Vendor: QEMU
    
  • Virtuozzo:
     # dmidecode
     /dev/mem: Permission denied
    
  • Xen:
     # dmidecode | grep -i domU
           Product Name: HVM domU
    

You should just examine the output of dmidecode directly rather than trying to grep as above, in case the output changes. QEMU, for example, doesn’t report the vendor in all versions.

Next, check disk devices for identification as virtualized:

  • VMWare:
    # cat /proc/ide/hd*/model
    VMware Virtual IDE CDROM Drive
    # cat /proc/scsi/scsi
    Attached devices:
    Host: scsi0 Channel: 00 Id: 00 Lun: 00
      Vendor: VMware   Model: Virtual disk     Rev: 1.0
      Type:   Direct-Access                    ANSI SCSI revision: 02
    
  • Microsoft VirtualPC:
    # cat /proc/ide/hd*/model
    Virtual HD
    Virtual CD
    
  • QEMU, KVM, or Xen:
    # cat /proc/ide/hd*/model
    QEMU HARDDISK
    QEMU DVD-ROM
    
  • Virtuozzo:
    # ls -al /dev/vzfs
    b-----x--- 1 root root 0, 19 2009-04-06 15:04 /dev/vzfs
    
目录
相关文章
|
存储 安全 虚拟化
虚拟机检测技术剖析
作者:riusksk (泉哥) 主页:http://riusksk.blogbus.com 前言 在当今信息安全领域,特别是恶意软件分析中,经常需要利用到虚拟机技术,以提高病毒分析过程的安全性以及硬件资源的节约性,因此它在恶意软件领域中是应用 越来越来广泛。
1403 0
|
1月前
|
缓存 Linux 调度
【YashanDB数据库】VMware虚拟机使用默认安装,在掉电之后数据库无法启动
VMware虚拟机使用默认安装,在掉电之后数据库无法启动
|
1月前
|
IDE 测试技术 数据库
【YashanDB知识库】使用vmware虚拟机安装的YashanDB,本机无法访问
在 VMware 虚拟机中安装并测试 YashanDB,数据库及虚拟机运行正常,但本地 IDE 工具无法连接虚拟机中的数据库。问题可能与 VMware 网络适配器配置或网络模式(如 NAT、桥接)有关,导致网络通信异常。需检查虚拟机网络设置、IP 地址配置以及防火墙规则,确保本地与虚拟机间网络连通性。目前无明确修复版本。
|
9天前
|
Linux 虚拟化 iOS开发
Windows Server 2008 R2 OVF (2025 年 4 月更新) - VMware 虚拟机模板
Windows Server 2008 R2 OVF (2025 年 4 月更新) - VMware 虚拟机模板
64 29
Windows Server 2008 R2 OVF (2025 年 4 月更新) - VMware 虚拟机模板
|
30天前
|
安全 Linux 虚拟化
VMware Tools 12.5.1 下载 - 虚拟机必备组件 (驱动和交互式服务)
虚拟机必备组件 (驱动和交互式服务)
122 13
VMware Tools 12.5.1 下载 - 虚拟机必备组件 (驱动和交互式服务)
|
1天前
|
存储 Linux 虚拟化
超详细!VMware虚拟机迁移操作教程
为VMware虚拟机迁移提供从0到1的详尽操作指导
超详细!VMware虚拟机迁移操作教程
|
1月前
|
存储 API 虚拟化
VMware vSphere Replication 9.0.2.2 发布 - 虚拟机复制和数据保护
VMware vSphere Replication 9.0.2.2 发布 - 虚拟机复制和数据保护
51 2
VMware vSphere Replication 9.0.2.2 发布 - 虚拟机复制和数据保护
下一篇
oss创建bucket