[GSoC 2024] 硬件虚拟化:最终报告

主要观点:通过将已支持 QEMU 的 hypervisor NVMM 从 DragonFlyBSD 移植到 Haiku,为 Haiku 引入硬件虚拟化,目标是实现 NVMM 驱动移植和 QEMU 能通过 NVMM 加速虚拟机,但仍存在一些未解决的问题。
关键信息

  • 已完成的目标包括 NVMM 前端、VMX 后端、libnvmm 及测试套件移植,添加 EPT 支持,QEMU 支持 NVMM 等。
  • 未解决的问题有 SVM 后端未移植、部分操作系统在 QEMU 上运行不正常、真实硬件上行为不同、开启 SMP 时 QEMU 崩溃、EPT 转换未及时从 TLB 刷新等。
  • 代码可在 GitHub 上获取,部分内容未合并,包含各个部分的技术细节和相关提交。
  • 项目过程中学习了很多关于 VMX、虚拟化、分页和内核开发等方面的知识,感谢导师和社区人员。
    重要细节
  • NVMM 代码需适应 Haiku 环境,如导入特定头文件、处理 C 和 C++代码混合等。
  • VMX 后端开发耗时较长,逐步增加功能,最终实现 calc 示例的虚拟化。
  • 内存管理是项目中较难和耗时的部分,涉及多个相关函数的实现和重构。
  • QEMU 工作需新补丁,解决非标准错误码和找不到头文件等问题。
  • 不同操作系统在 QEMU 上的表现不同,如 Haiku 虚拟化为 Haiku 时存在问题,Sortix 也出现故障等。
  • 真实硬件上曾存在性能问题,已修复但又出现新故障。
  • 存在 EPT 转换未及时刷新 TLB 的问题,NetBSD 和 DragonFlyBSD 的解决方案可借鉴。
阅读 15
0 条评论