SerenityOS 如何在 Windows WSL2 中构建并用 QEMU 运行,并开启 WHPX 硬件加速
SerenityOS 如何在 Windows WSL2 中构建并用 QEMU 运行并开启 WHPX 硬件加速【免费下载链接】serenityThe Serenity Operating System 项目地址: https://gitcode.com/GitHub_Trending/se/serenity本任务的目标是在 Windows 系统上完成 SerenityOS 的一次性搭建用 WSL2 作为构建环境编译出系统镜像在 Windows 上安装的 QEMU 中把虚拟机跑起来最后通过 Windows Hypervisor PlatformWHPX把 QEMU 从缓慢的软件虚拟化模式切换为硬件加速模式。整个路径依据仓库中的 Windows 构建指南 与 构建说明 整理。前提条件在文档中是明确的必须使用 WSL2WSL1 不受支持因为 WSL1 不支持 ext2而 SerenityOS 的磁盘镜像需要 ext2WSL2 要求 Windows 10 版本 2004 或更高OS Build 19041 及以上。确认发行版运行在 WSL2 上安装好 WSL2 之后先在 WSL 终端PowerShell 或终端均可确认目标发行版当前运行的是哪个版本wsl -l -v该命令列出所有发行版及其版本。如果目标发行版显示为 Version 1需要转换wsl --set-version 发行版名 2另外如果希望以后新建的发行版默认都是 WSL2可以执行wsl --set-default-version 2发行版名请替换为wsl -l -v输出中你的发行版名称。在 WSL2 中准备构建工具链WSL2 内部就是一个 Linux 环境文档指引按所选 Linux 发行版的说明安装依赖。以 Ubuntu/Debian 为例先安装基础构建工具sudo apt install build-essential cmake curl libmpfr-dev libmpc-dev libgmp-dev e2fsprogs ninja-build qemu-system-gui qemu-system-x86 qemu-utils ccache rsync unzip texinfo libssl-dev zlib1g-dev接下来是主机编译器要求GCC 14 或 Clang 17 及以上需要支持 C26 特性版本越新越好文档中已测试的版本包括 gcc-14 和 Clang 17 至 19。Ubuntu 24.04Noble及之后的仓库自带 gcc-14可以直接安装sudo apt update sudo apt install gcc-14 g-14如果你的 Ubuntu 版本较老、仓库里没有 gcc-14文档给出的替代方案是从 ubuntu-toolchain-r/test PPA 升级或寻找其他安装来源Ubuntu 和 Debian 上较新的 Clang 则可通过 LLVM apt 仓库安装例如 Clang 19sudo apt install libclang-19-dev clang-19 llvm-19 llvm-19-dev其中-dev包仅在启用 jakt 构建时需要。此外注意两个版本下限均来自 构建说明CMake 需要 3.25.0 或更高。若你的 CMake 低于 3.25.x构建脚本会尝试从源码自行构建 CMake如果之前用旧版 CMake 编译过 SerenityOS需要手动删除Build/*/CMakeCache.txt因为这些文件引用了旧的 CMake 版本和路径。QEMU 需要 6.2 或更高Ubuntu 22.04 已提供该版本。把项目克隆到 Linux 文件系统执行首次构建与运行这里有一个直接影响构建体验的要求不要把项目放在 Windows 宿主文件系统上。文档指出 WSL2 对宿主 Windows 文件系统的 IO 性能很差编译大型 C 项目这类 IO 密集任务尤其明显微软官方团队的建议是尽可能把项目存放在 WSL2 的 Linux 文件系统中。因此克隆到类似/home/你的用户名/serenity的路径。之后在 Windows 侧可以通过\\wsl$\home\你的用户名\serenity访问这份 Linux 文件系统。进入仓库后执行Meta/serenity.sh run该命令会完成编译 SerenityOS 全部组件、把构建产物安装到仓库内的Build/架构/Root目录、构建磁盘镜像并启动 QEMU 运行 SerenityOS。架构默认取宿主架构x86_64 机器上即 x86_64脚本支持的架构为 x86_64、aarch64 和 riscv64。首次执行时还有两个只发生一次的动作从互联网下载所需的数据库文件并构建 SerenityOS 交叉编译器工具链。之后再次构建会快很多。只有当你更新到更新的编译器版本时脚本可能提示需要重建工具链对应 排障指南 中的 The toolchain is outdated 一节。如果只想验证代码改动能否编译、不启动虚拟机可用Meta/serenity.sh build不带参数直接运行脚本可列出所有可用子命令。运行成功的直观结果是QEMU 窗口中启动 SerenityOS 虚拟机。登录后anon用户的默认密码是foo另外anon默认可以免密切换为root开发便利设计如需禁止把anon从wheel组移除即可。安装 Windows 版 QEMUMeta/serenity.sh run会在 WSL 中配置 QEMU 在 Windows 宿主上运行因此需要在 Windows 侧从 QEMU 官网 下载并安装最新的 Windows 二进制。文档要求至少安装三部分内容tools工具集i386 与 x86_64 的 system emulators系统模拟器DLL librariesDLL 库。安装界面中对应勾选项如下文档配图安装完成后回到 WSL 中的仓库目录照旧执行Meta/serenity.sh run即可构建并运行。开启 WHPX 硬件加速不加速的情况下QEMU 运行在软件虚拟化模式文档原话是“非常慢”。QEMU 在 Windows 上通过 Windows Hypervisor PlatformWHPX获得硬件加速。开启方式二选一在 Windows 中使用“启用或关闭 Windows 功能”界面勾选 Windows Hypervisor Platform或者在管理员权限elevated的 PowerShell 中执行dism /Online /Enable-Feature /All /FeatureName:HypervisorPlatform注意这条命令必须在提权的 PowerShell 会话中执行它会修改 Windows 系统功能并可能需要管理员权限。在“启用或关闭 Windows 功能”中对应的勾选项见下方文档配图启用 WHPX 特性后可能需要重启系统。重启后照常用Meta/serenity.sh run启动虚拟机QEMU 即走 WHPX 硬件加速路径无需改动脚本或额外参数。已知限制与后续操作WSL1 完全不可用不支持 ext2无法完成镜像构建。项目放在 Windows 磁盘路径下时编译会明显变慢这是文档明确指出的性能问题属于放置位置而非 WSL2 本身的构建流程问题。如果 CMake 低于 3.25.0 且此前用过旧版 CMake 构建记得先清理Build/*/CMakeCache.txt否则会引用旧的 CMake 版本与路径。首次run包含网络下载和交叉工具链构建耗时长的原因就在这一条后续构建不会重复。搭建完成后高级构建说明 提供了构建系统较少用到的功能例如自定义磁盘镜像属于下一步可参考的资料。【免费下载链接】serenityThe Serenity Operating System 项目地址: https://gitcode.com/GitHub_Trending/se/serenity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考