linux - 我如何以编程方式知道我是否在虚拟机中?

标签 linux windows kernel virtualization

我希望能够从 Windows 和 Linux 执行此操作。我知道有一些方法可以获取 sysinfo 并使用与硬件标识符相关的经验法则。

我想知道是否有更基本的方法,比如查看内存地址/发出中断等。

顺便说一句,我正在尝试在 Intel 硬件上执行此操作,我使用的虚拟化软件是 Vmware Workstation 和 Windows HyperV。

最佳答案

这是一个更有用的命令:

$ lscpu | grep -E 'Hypervisor vendor|Virtualization type'
Hypervisor vendor:     KVM
Virtualization type:   full

其他命令的示例输出:

$ sudo virt-what
kvm

$ dmesg | grep -i virtual
[    0.000000] Booting paravirtualized kernel on KVM
[    0.029160] CPU0: Intel QEMU Virtual CPU version 1.0 stepping 03

$ sudo dmidecode | egrep -i 'manufacturer|product|vendor|domU'
    Vendor: Bochs
    Manufacturer: Bochs
    Product Name: Bochs
    Manufacturer: Bochs
    Manufacturer: Bochs
    Manufacturer: Bochs
    Manufacturer: Bochs
    Manufacturer: Bochs
    Manufacturer: Bochs
    Manufacturer: Bochs
    Manufacturer: Bochs
    Manufacturer: Bochs

关于linux - 我如何以编程方式知道我是否在虚拟机中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374154/

相关文章:

Linux 上的 Java -cp

linux - bash:查找命令中的复杂测试

php - 启动和停止(命令行)程序并获取其输出

linux - Linux 应用程序是否(容易)杀死内核或使 init 进程崩溃

linux - 替换 zsh 命令行中的字符串

python - 在 Alpine Linux 上的 python 上安装 snappy 时出现问题

java - SSO 对 session 超时的影响

windows - 较低的过滤器驱动程序

linux-kernel - 为什么每秒进行一次非自愿上下文切换?

kernel - 错误 : jupyter_client. kernelspec.NoSuchKernel:在作为 docker 容器运行的 Airflow/papermill 中没有出现名为 python3 的内核