我不认为这个问题需要任何解释。我正在编写一个软件,可以 Boot 虚拟机来模拟网络。如果该软件已经在虚拟机上运行,我想禁用此功能。
我已经读过这篇文章:How to detect if my application is running in a virtual machine?,但我需要在Linux上做,那篇文章只涉及Windows。
我把它标记为Perl
问题,因为我必须在Perl中这样做,但可能在proc
或其他地方有一些文件需要检查,这对所有语言都是一样的。
我主要对检测VirtualBox和KVM感兴趣,因为这些是我正在使用的虚拟机。
有什么建议吗?
4条答案
按热度按时间p5fdfcr11#
我将具体谈谈VMware和虚拟机盒虚拟机运行Linux作为客户操作系统.如果你运行下面的命令,你会知道,底层硬件是VMware/VirtualBox这证明它是一个虚拟机.
对于VMware访客:
字符串
对于Virtual Box访客:
型
“
dmidecode
“是一个Linux系统命令。你可以让perl在脚本的开头运行dmidecode
并提取值。如果它是一个虚拟机,那么脚本应该退出,不再执行。我没有任何其他的管理程序在我的处置,让你什么上面的命令返回他们。
希望这对你有帮助。
bvhaajcl2#
一个快速的谷歌收益dmo.ca/ blog/ How to detect virtualization
Perl模块和一切。
6yt4nkrj3#
你有没有试过Sys::Detect::Virtualization,在CPAN上可用?
vkc1a9a24#
在安装了systemd的现代Linux系统上,您可以简单地运行systemd-detect-virt。如果它检测到它正在虚拟环境(VM和容器)中运行,它将打印一个字符串指示检测到的环境并以0退出,否则,它将打印“none”并以非零值退出。在PERL中,您可以这样做:
字符串