AlexiaChen.github.io icon indicating copy to clipboard operation
AlexiaChen.github.io copied to clipboard

一个我犯的关于虚拟化的一个愚蠢错误

Open AlexiaChen opened this issue 1 year ago • 0 comments

在这里暂时不讨论类似QEMU的纯软件虚拟化,因为没有硬件参与,云计算无法商用。所以都需要宿主机的CPU本身就支持硬件虚拟化的指令。Intel AMD的x86处理器都有相关指令,比如svm或vmx。当然,ARM64也有。。。。

我犯了一个什么错误呢?我就是不假思索的天真直觉以为同一个处理器架构的,可以虚拟实例化不同处理器架构的操作系统。这个直觉就是错的,也就是说windows x86的Hyper-V只能虚拟化x86架构的Linux或Windows。无法虚拟化ARM64下的Linux或Windows。而ARM64下的Linux 上的KVM,也只能虚拟化运行ARM64架构的操作系统。

对于KVM或者Hyper-V都是一样的,毕竟商用的虚拟化都需要硬件参与,纯软件的模拟当然可以,但是没有人这样做,一般是拿来调试测试用的,比如你自己在x86上写一个ARM64的玩具操作系统,需要用QEMU或 Bochs这样的emulator来运行,这样是可以的

我说难怪在一台ARM64下的信创麒麟系统下virsh-install一个x86的Linux iso镜像会报以下错误呢。我就没有仔细想想。

UEFI Interactive Shell v2.2
EDK II
UEFI v2.70 (EDK II, 0x00010000)
Mapping table


Synchronous Exception at 0x00000000B4C5B814


Synchronous Exception at 0x00000000B4C5B814

参考资料

  • https://stackoverflow.com/questions/69516247/how-to-instantiate-an-arm-based-vm-through-linux-kvm-api-on-x86
  • https://gist.github.com/yen3/884bf14ec8286df35de67953a561eee8
  • https://developer.arm.com/documentation/102412/0103/Exception-types/Synchronous-exceptions
  • https://blog.csdn.net/cheagoun/article/details/139021515

AlexiaChen avatar Sep 11 '24 08:09 AlexiaChen