ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

SerenityOS 在 Linux 上 QEMU 运行很慢,如何启用 KVM 加速

SerenityOS 在 Linux 上 QEMU 运行很慢,如何启用 KVM 加速 SerenityOS 在 Linux 上 QEMU 运行很慢如何启用 KVM 加速【免费下载链接】serenityThe Serenity Operating System 项目地址: https://gitcode.com/GitHub_Trending/se/serenity在 Linux 上用 QEMU 运行 SerenityOS 时如果虚拟机响应迟钝、操作卡顿最常见的原因是 QEMU 没有走硬件虚拟化而是落在纯软件模拟上。项目文档给出的结论很直接在 Linux 上QEMU 能使用 KVM 时速度会显著提升而官方运行脚本Meta/serenity.sh run会在满足条件时自动启用 KVM。这篇文章说明自动启用的判定条件、如何检查自己的环境是否满足、如何用环境变量强制开关虚拟化以及一个 Linux 上的已知限制。运行脚本如何自动启用 KVMMeta/serenity.sh run内部会调用 Meta/run.py。脚本启用 KVM 的判定逻辑是检查/dev/kvm是否存在并且当前用户对它有读和写权限宿主机架构与目标架构一致默认x86_64且不是 Raspberry Pi 机型满足以上条件后QEMU 会带上-accel kvm启动不满足时自动退回-accel tcg纯软件模拟也就是慢的那个模式。判定代码位于 run.py 的kvm_usable()和set_up_virtualization_support()最终生成的加速参数见accelerator_argumentsdef kvm_usable() - bool: return access(/dev/kvm, os.R_OK | os.W_OK)也就是说KVM 不是手动打开的而是脚本检测到/dev/kvm可读可写后自动生效。Documentation/Troubleshooting.md 中 The VM is really slow 一节对此有明确说明。检查当前环境是否满足自动启用条件自动启用只依赖一个条件/dev/kvm存在且当前用户可读可写。可以用下面两条命令核对文档给出的这两个条件# 查看 /dev/kvm 是否存在及其属组、权限 ls -l /dev/kvm # 查看当前用户所属用户组 id判断方式ls -l /dev/kvm不存在该文件系统没有加载 KVM 模块属于宿主机内核/系统配置问题需要先让系统提供/dev/kvm文件存在但属组既不是root也不是你所在的组多数发行版是kvm组或权限不含你对应的读/写位说明当前用户无权访问运行脚本会自动跳过 KVM回落到 TCG。文档只要求当前用户可读可写这一结果没有规定具体如何改组或权限。修改用户组属于系统级变更请按你自己发行版的常规做法操作改完重新登录会话后再运行Meta/serenity.sh run验证。前置条件方面Documentation/BuildInstructions.md 要求 QEMU 版本不低于 5可用qemu-system-i386 -version检查版本过低时脚本会报错并提示安装新版或使用Toolchain/BuildQemu.sh构建。用环境变量强制开关虚拟化如果自动检测的结果不符合预期可以用SERENITY_VIRTUALIZATION_SUPPORT环境变量覆盖判定。该变量在set_up_virtualization_support()中优先于自动检测生效设为1时强制使用平台对应的虚拟化器Linux 上即 KVM设为0时强制关闭、回落到 TCG。# 强制关闭虚拟化用于对比确认卡顿是否来自 TCG SERENITY_VIRTUALIZATION_SUPPORT0 Meta/serenity.sh run # 强制启用虚拟化即使自动检测未通过若 /dev/kvm 实际不可用QEMU 会启动失败 SERENITY_VIRTUALIZATION_SUPPORT1 Meta/serenity.sh run这两个用法分别适合两个方向先强制关闭一次、确认慢在 TCG确认权限修好后再靠自动检测或1强制启用。注意1只是告诉脚本按有硬件加速处理它不能绕过/dev/kvm不可用的事实。已知限制与相关报错aarch64 上 KVM 被有意禁用run.py 中的注释说明 Booting with KVM on aarch64 is broken因此 Linux 上跑SERENITY_ARCHaarch64时虚拟化支持会被强制关闭。KVM 加速路径针对的是x86_64目标。QEMU 版本不足脚本要求 QEMU 5.2版本不符时会报Required QEMU ...并指向Toolchain/BuildQemu.sh见 Meta/run.py。KVM doesnt support guest debugging启动报错如果你启用 KVM 后遇到这个报错Documentation/Troubleshooting.md 给出两条处理路径把宿主内核升级到至少 5.10支持KVM_CAP_SET_GUEST_DEBUG的最低版本或确认发行版的 QEMU 构建启用了 debug 特性也可以临时设置SERENITY_DISABLE_GDB_SOCKET1关闭 GDB socket 来绕过。验证完成检查或修复后重新执行Meta/serenity.sh run启动系统判断 KVM 是否生效虚拟机整体的启动和交互速度应有明显提升这是文档给出的定性预期没有固定数值标准在 QEMU 窗口运行时另开终端用ps -ef | grep qemu-system-x86_64查看进程参数参数中出现-accel kvm表示硬件加速已启用出现-accel tcg表示仍落在软件模拟上需要回到检查当前环境一节继续排查。如果确认-accel kvm已生效但速度仍不理想就超出了 KVM 开关本身的问题范围可以对照 Documentation/Troubleshooting.md 中 Running SerenityOS 下的其他条目逐项核对。【免费下载链接】serenityThe Serenity Operating System 项目地址: https://gitcode.com/GitHub_Trending/se/serenity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表