程序如何检测 Ubuntu 作为虚拟机运行?

719*_*016 9 virtualbox virtualization

我正在尝试通过 Ubuntu 16.04 作为 Virtualbox VM 运行程序。

该程序的二进制文件检查它是否在虚拟机上运行,​​并在 VM 上执行与在给定计算机上不同的操作。

我怎么知道二进制文件在查询什么?我可以使用类似straceldd本?

我希望能够像在真实机器上而不是虚拟机上一样运行二进制文件。我认为必须有一种方法可以在二进制文件查询时更改 Ubuntu 16.04 报告的内容。

Chr*_*rdt 2

人们和应用程序已经开始编写 dmidecode 解析、特殊指令处理 (vmware) 和其他内容。但此类代码通常会过时,不再匹配新版本和虚拟化技术。

恕我直言,到目前为止,最可靠的方法是依赖当今无处不在的 systemd 并调用systemd-detect-virt

好处很明显,许多虚拟机和容器类型已经实现,您可以根据新的 systemd 版本获得更新,并且需要维护的自己的代码更少。