探索Mac mini M1的QEMU KVM虚拟化达成
目前行业云平台一般提供 Windows虚拟机和 Linux虚拟机两种不同的产品,用户可以在这些虚拟机上部署符合 Windows生态和 Linux 生态的服务和应用。 Mac mini 虚拟化是指在一台 Mac mini 物理机上模拟出多个互相隔离的 Mac mini 虚拟机,使得每个虚拟机用户都认为自己在一台真正的物理机上以独占的方式运行。 Asahilinux 对 M1 机型上的硬件设备做了足够多的逆向工程分析,并根据推导出来的硬件逻辑来尝试实现linux下的设备驱动,目前已经实现了对 M1 机型的基本支持,其中对 M1 GPU的支持也在不断完善中。Asahilinux这部分工作也在不断的合入Linux upstream。 QEMU 作为机型/系统模拟的常用软件,构造了机型模拟的基本框架,并在此基础上提供了不同平台上很多具体机型的模拟实现,比如 x86 平台的 piix 和 Q35 机型,ARM 的 virt 和 raspi2 等。在 M1 机型的虚拟化中我们需要基于 ARM64 通用机型,构造一个新的 M1 机型,并集成到 QEMU 数据库提供的机型运行模拟数据库框架中。 KVM作为 Linux 下支持虚拟化的内核模块,将虚拟化场景下的硬件加速功能通过 ioctl 的方式导出给QEMU使用。在 KVM 的支持下,虚拟机内部的常用指令将不再需要退出到QEMU来模拟执行,而是在虚拟机的 CPU 上下文中直接执行,只有个别特权指令才需要退出到物理机上,由物理机来具体执行。对于虚拟机的内存访问,也不再需要 QEMU 进行页表翻译,而是直接依赖硬件实现的两级页表翻译机制(虚拟机内部页表实现 Guest Virtual Address向Guest Physical Address的转化,使用stage2 page table 实现 Guest Physical Address向Host Physical Address的转化),从而实现内存的快速访问。在windows操作系统中,guest虚拟机通常是指一个独立的服务器,它可以访问和管理多个用户的计算机。 (编辑:银川站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |