如何识别代码是否运行在QEMU模拟器中?(自定义OS无第三方工具)
无依赖检测是否运行在QEMU模拟器的方法
以下是无需第三方工具、仅用系统自带命令的可靠检测方式,适配自定义OS环境:
检查CPU标识
直接读取/proc/cpuinfo,QEMU模拟的CPU通常会包含特征关键词:grep -i 'qemu\|kvm' /proc/cpuinfo输出中若出现
QEMU Virtual CPU或kvm字样,大概率处于QEMU/KVM环境。读取DMI硬件标识(sysfs方式)
无需dmidecode,直接访问sysfs下的DMI节点:# 查看系统厂商 cat /sys/devices/virtual/dmi/id/sys_vendor # 查看产品名称 cat /sys/devices/virtual/dmi/id/product_nameQEMU环境下,厂商通常显示
QEMU,产品名称多为Standard PC (Q35 + ICH9, 2009)这类标准虚拟机标识。检查块设备信息
查看模拟磁盘的型号标识:# 根据实际磁盘设备调整(如sdb、vda等) cat /sys/block/sda/device/modelQEMU虚拟硬盘通常会显示
QEMU HARDDISK。查看PCI设备日志
若系统带有lspci工具,直接过滤QEMU相关设备:lspci | grep -i qemu无
lspci时,可直接读取PCI设备列表文件:cat /proc/bus/pci/devices | grep -i qemu模拟的显卡、网卡等设备会带有QEMU标识。
分析内核启动日志
内核初始化时会记录虚拟化环境信息:dmesg | grep -i 'qemu\|kvm'输出中可能出现
Booting paravirtualized kernel on KVM或QEMU硬件初始化的相关日志。
注意事项
- 部分QEMU配置会伪装硬件信息,建议结合2-3种方法交叉验证,提升准确性。
- 若自定义OS裁剪了
/proc或sysfs文件系统,优先使用仍可用的节点进行检测。
内容的提问来源于stack exchange,提问作者Tanisha Saxena
相关产品推荐
相关产品推荐

