尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Windows下用WSL安装Rocky Linux完整指南与排错经验

发布时间:2026/9/16 18:30:56

资讯中心
01
ARTICLE

Windows下用WSL安装Rocky Linux完整指南与排错经验

Windows下用WSL安装Rocky Linux完整指南与排错经验
如果你和我一样日常工作离不开 Windows但又需要一套 RHEL 系的 Linux 环境来部署、测试、学习那么在 WSL 上安装 Rocky Linux 绝对是你绕不开的一个好方案。我第一次在 Windows 上用 WSL 装 Rocky Linux 的时候踩了不少坑——商店里找不到发行版、导入完发现 systemd 没启动、软件源慢到怀疑人生——所以今天把完整步骤和排错经验整理出来希望能帮你少走点弯路。这篇文章适合谁看主要是两类人一类是后端开发和运维工程师需要在 Windows 笔记本上跑一个和服务器环境一致的企业级 Linux用来验证脚本、调试服务、跑容器另一类是正在备考 Linux 认证、或者想系统学习 RHEL 系操作的学生党用 WSL 比开虚拟机轻量太多随时能进能出。文章不会假设你有多深的基础命令都会解释清楚你照着操作基本就能复现。1. 为什么选择 WSL Rocky Linux 这套组合1.1 WSL 到底是什么和虚拟机有什么区别很多刚接触 WSL 的朋友会把它理解成Windows 里的小型虚拟机这么说不够准确。WSL 全称 Windows Subsystem for Linux从 WSL 2 开始确实引入了轻量级虚拟机技术但它和 VMware、VirtualBox 这类传统虚拟机有本质区别传统虚拟机需要完整模拟一台电脑的硬件给你分配固定内存、虚拟磁盘、网络适配器开机要等几十秒而 WSL 2 由 Windows 底层直接调度启动只需要几百毫秒内存也实现了按需分配你不用提前给虚拟机划出 2GB 内存它用多少分多少。最实用的一个特点是文件互操作。在 WSL 里可以直接访问 Windows 目录路径是 /mnt/c/xxx反过来在 Windows 资源管理器地址栏输入 \wsl$\RockyLinux 就能直接看到 Linux 里的文件。这种双向打通的体验传统虚拟机的共享文件夹功能完全没法比。我实测下来写代码、跑脚本、调试网络服务体验和一台原生 Linux 开发机几乎没有差别。1.2 Rocky Linux 为什么值得装Rocky Linux 是 RHELRed Hat Enterprise Linux的社区重建版本和当年 CentOS 做的事一样由 CentOS 创始人 Gregory Kurtzer 主导发起。RHEL 毫无疑问是企业级 Linux 的事实标准但商业订阅费用不低于是 Rocky Linux 这种 1:1 重建版就成了个人开发者、学习者和预算有限的运维团队的首选。它有几个很实在的优点一是生命周期长每个大版本提供长达 10 年的安全维护二是包管理和软件生态和 RHEL 完全一致你在公司服务器上写的 dnf 命令、编写的 systemd 服务单元、用的 SELinux 策略在本地 Rocky Linux 里都能原样跑通三是有 EPEL、Remi 这类成熟的第三方软件仓库装新版本软件非常方便。对做后端的人来说本地环境能和线上生产环境保持同一个 Linux 发行版家族很多在我电脑上明明是好的这类问题会大幅减少。1.3 这套组合适合什么人、解决什么问题我见过很多人为了跑一个 Linux 环境在 Windows 上装 VirtualBox 或者 VMware然后老老实实分 4GB 内存、50GB 硬盘平时开着又占资源关掉又麻烦。其实如果只是用来跑开发环境、写脚本、学 Linux 操作WSL 的性价比远高于虚拟机。这套组合解决的核心问题有三个一是省资源WSL 2 的内存是动态占用几十个进程加起来可能也就 1GB 左右二是切换快从 Windows 进入 Linux 环境就是一条命令的事不用切换操作系统、不用等虚拟机开机三是环境一致性Rocky Linux 和服务器端的 RHEL/CentOS 系同源本地开发和线上部署的差距被压缩到最小。当然它也有短板。WSL 2 的 NAT 网络模式导致 IP 地址重启会变某些依赖固定 IP 的服务需要额外处理这点我在后面的静态 IP 章节会详细讲。还有如果你需要跑图形化桌面、需要嵌套虚拟化那 WSL 确实不如虚拟机灵活。想清楚自己的需求再选别盲目跟风。2. 安装前的准备工作2.1 确认 Windows 版本与虚拟化状态开始安装前先确认三件事。第一Windows 版本。WSL 2 要求 Windows 10 2004Build 19041及以上或者 Windows 11。老版本 Windows 10 不是不能用 WSL 1但体验打折扣。快速查看版本的方法是按 Win R输入 winver 回车看弹窗里的版本号。第二CPU 虚拟化是否开启。WSL 2 本质是个轻量虚拟机依赖 CPU 的虚拟化指令。打开任务管理器切换到性能标签页点 CPU查看右下角虚拟化一项。如果显示已启用说明 BIOS 里已经打开如果显示已禁用需要重启进入 BIOS/UEFI找到 Intel VT-xIntel 平台或 AMD-V/SVMAMD 平台选项并开启。第三可以去启用或关闭 Windows 功能面板里检查一下相关组件是否齐全。按 Win R 输入 optionalfeatures 即可打开。如果你之前从没用过 WSL大概率是没有勾选相应功能的需要按下一节操作。2.2 启用 WSL 功能并更新内核在 Windows 的 PowerShell管理员模式里执行下面两条命令启用 WSL 和虚拟机平台两个功能组件dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart第一条开启 WSL 功能第二条开启 WSL 2 依赖的虚拟机平台。执行完重启 Windows然后再次打开管理员 PowerShell把默认版本切到 WSL 2wsl --set-default-version 2如果你用的是较新版本的 Windows也可以直接执行wsl --install这条命令会自动安装相关组件、下载 WSL 内核并默认安装一个 Ubuntu 发行版。但注意wsl --install默认装的是 Ubuntu商店里目前并没有 Rocky Linux 的一键安装包所以我们还需要后面手动导入镜像。另外如果你执行wsl --install时遇到 403 或下载慢别硬磕后面的常见问题章节有替代方案。2.3 获取 Rocky Linux 的 rootfs 镜像这是整个流程里最关键的准备工作。Rocky Linux 官方没有像 Ubuntu 那样把 WSL 发行版上架到 Microsoft Store所以咱们需要自己准备一份 rootfs 镜像再通过wsl --import命令导入。最通用的方式是借助 Docker 导出。你可以在一台装有 Docker 的机器上执行以下命令Windows 上跑 Docker Desktop、或者任意一台 Linux 服务器都行docker pull rockylinux:9 docker create --name rocky-wsl rockylinux:9 docker export rocky-wsl -o rocky9-wsl.tar docker rm rocky-wsl解释一下这几条命令的作用。docker pull从镜像仓库拉取最新的 Rocky Linux 9 基础镜像docker create把镜像实例化成一个容器但这里并不启动它纯粹是为了拿到它的文件系统docker export把容器的整个文件系统导出成一个 tar 包——这个 tar 包就是 WSL 需要的 rootfs 镜像最后docker rm把临时容器删掉。导出完成后你会得到一个 rocky9-wsl.tar 文件大小一般在 100MB 到 300MB 之间取决于镜像里自带的软件数量。把这个 tar 文件拷贝到 Windows 上备用。如果本机没有 Docker 环境也可以在一台现成的 Linux 机器上装 podman 或 skopeo 导出基本原理完全一样。3. 将 Rocky Linux 导入 WSL 的完整实操3.1 创建安装目录并执行导入在 Windows 上找一个空间充足的盘创建一个专门存放 WSL 发行版的目录比如 C 盘或者 D 盘下的 C:\WSL\RockyLinux。不推荐直接放到用户目录下的临时位置因为 WSL 发行版的所有文件都会放在这个目录里以后想迁移、备份都靠它。然后在 PowerShell 里执行导入命令wsl --import RockyLinux C:\WSL\RockyLinux D:\downloads\rocky9-wsl.tar --version 2命令格式是wsl --import 发行版名称 安装目录 tar文件路径 --version 2。发行版名称可以随意起但建议用有意义的名称比如 RockyLinux 或者 RockyLinux9以后在wsl -d参数里要用到。--version 2明确指定使用 WSL 2避免默认成 WSL 1。导入过程一般几十秒到几分钟不等取决于磁盘速度。导入完成后没有任何成功提示看起来就像命令执行完退出了一样这是正常的。你可以用wsl --list --verbose查看当前所有发行版及其运行状态应该能看到 RockyLinux 一栏VERSION 列是 2。3.2 首次进入系统确认版本和网络进入新导入的 Rocky Linux 很简单wsl -d RockyLinux因为你还没有设置默认用户首次进入会以 root 身份登录。进入后先检查两件事。第一确认系统版本和仓库配置cat /etc/os-release输出里能看到 Rocky Linux 的版本号比如 9.4。第二检查网络是否通ping -c 3 mirrors.aliyun.com如果 ping 不通别急着往下走先看看 DNS 配置。WSL 里网络走宿主机的 NAT正常情况下是自动配好的。偶尔会遇到 DNS 解析异常表现为 ping 域名失败但 ping IP 地址成功这种情况通常需要手动修改 /etc/resolv.conf但你改完之后可能会被 WSL 在重启时覆盖正确做法是在后面的 /etc/wsl.conf 里做配置这点后面讲。3.3 默认用户的坑先用 root 做三件事刚导入的基础镜像默认只有 root 用户长期用 root 跑开发环境有权限混乱的风险所以建议第一时间创建普通用户并配置好默认登录用户。这一步我建议在 root 身份下完成三件事创建用户、装 sudo、写 wsl.conf。创建用户并加入 wheel 组wheel 组在 RHEL 系里默认拥有 sudo 权限useradd -m -G wheel -s /bin/bash rocky passwd rocky然后确认 sudo 已安装dnf install -y sudo最后编辑 /etc/wsl.conf这个文件是 WSL 针对单个发行版的配置文件WSL 每次启动时都会读取它。先创建文件vi /etc/wsl.conf写入以下内容[user] defaultrocky保存后回到 Windows PowerShell执行wsl --shutdown关闭发行版再重新进入wsl -d RockyLinux看到提示符变成了 rocky机器名就说明默认用户设置生效了。这里有个很多人会踩的坑wsl.conf 改完不生效。原因多半是忘了执行wsl --shutdown完全重启单靠exit退出再重新进入是不够的因为 WSL 会话可能有缓存。4. 导入后的核心配置与日常使用细节4.1 启用 systemd让服务管理回归正常刚导入的容器镜像里 systemd 通常没有作为 PID 1 启动因为 Docker 容器模式默认不需要它。但在 WSL 里如果你要正常使用 systemctl 管理服务比如跑 nginx、sshd就必须让 systemd 接管系统。新版 WSL0.67.6 以上已经支持这个能力。同样编辑 /etc/wsl.conf在 [boot] 段里开启 systemd[boot] systemdtrue修改后的完整 wsl.conf 大概长这样[user] defaultrocky [boot] systemdtrue还是老规矩wsl --shutdown后重新进入然后验证systemctl list-units --typeservice --staterunning如果能看到一堆 systemd 管理的服务说明生效了。注意这一步对后续使用 Docker、nginx、sshd 都至关重要别跳过。4.2 切换国内软件源提速 dnf这一步非常建议做。Rocky Linux 默认可用的官方源服务器在国外第一次dnf update会慢到让你怀疑人生。切换国内镜像源的思路是把 /etc/yum.repos.d/ 下 rocky*.repo 文件里的 mirrorlist 注释掉把 baseurl 指向国内镜像站。以阿里云镜像为例执行以下命令cd /etc/yum.repos.d/ sed -e s|^mirrorlist|#mirrorlist|g \ -e s|^#baseurlhttp://dl.rockylinux.org/$contentdir|baseurlhttps://mirrors.aliyun.com/rockylinux|g \ -i.bak \ /etc/yum.repos.d/rocky*.repo这条命令做的事是把以 mirrorlist 开头的行注释掉把被注释的 baseurl 行替换成阿里云镜像地址。-i.bak会在修改前生成 .bak 备份文件万一改坏了还能还原。如果偏好清华源把命令里的镜像域名换成 mirrors.tuna.tsinghua.edu.cn 即可。执行完后清理并重建缓存dnf clean all dnf makecache然后再跑一次dnf update -y速度应该快很多。我实际测过单纯从官方源拉取全量更新可能花半小时以上换国内源之后通常一两分钟就能完成元数据下载体感天差地别。4.3 安装基础开发工具链系统刚导入时非常精简很多日常工具都没有。建议一次性把基础工具装上sudo dnf install -y vim git curl wget sudo tar gcc make python3如果你需要完整的开发工具组可以直接安装 development 组包一次性引入编译器、调试器、头文件等一套工具sudo dnf groupinstall -y Development Tools这个组包安装完你后面编译源码、装一些需要自行编译的 Python 包都会顺利很多。注意 Rocky Linux 9 里 python3 默认是 Python 3.9想用其他版本可以用 dnf 搜索 python3.11、python3.12 等。4.4 与 Windows 文件互操作的技巧WSL 最香的特性就是和 Windows 的文件互通。在 Rocky Linux 里访问 Windows 文件系统路径是 /mnt/c/、/mnt/d/ 这种格式对应 Windows 的 C 盘、D 盘。反过来Windows 访问 Rocky Linux 的文件在资源管理器地址栏输入\\wsl$\RockyLinux就能直接浏览。这里有个人经验要分享跨系统频繁读写的文件放到 /mnt/c/ 下面这样两边都能直达适合存放项目源码对读性能要求高、需要大量小文件操作的场景优先放在 Linux 原生文件系统里也就是 WSL 内部因为跨文件系统的 I/O 性能有一定损耗。数据库文件、构建缓存这类永远放 Linux 内部。另外你可以在 Rocky Linux 里直接运行 Windows 程序。比如输入notepad.exe会打开 Windows 记事本输入explorer.exe .会在 Windows 资源管理器中打开当前 Linux 目录。反过来在 Windows 里也能调用 WSL 里的命令配合脚本能实现一些很有意思的自动化操作。4.5 让 VS Code 和 PyCharm 直接连接 WSLWindows 上装好 VS Code再安装微软官方提供的 Remote - WSL 扩展然后在 Rocky Linux 里进入项目目录执行code .VS Code 会自动在 Windows 弹出一个窗口并接入到 WSL 会话中。左下角绿色标记会显示你当前连接的是 RockyLinux。这时候你在 VS Code 里打开的终端、跑的命令、装的插件全部运行在 WSL 环境里体验和远程 SSH 非常像但配置成本几乎为零。PyCharm 用户也有方案。在 PyCharm 的 Settings 里找到 Languages Frameworks可以看到 WSL 相关配置项选择你的 RockyLinux 发行版PyCharm 就会通过 WSL 里的 Python 解释器跑代码。这样你既保留了 Windows 上的 JetBrains 全家桶体验又用上了 Linux 原生环境两边互不干扰。4.6 网络与静态 IP 的正确姿势WSL 2 默认使用 NAT 网络模式每次启动时分配一个内部 IP重启后 IP 可能变化这对跑服务的用户来说很头痛。针对这个问题Windows 11 22H2 及以上版本有个很实用的解决方案在 Windows 用户目录下创建 .wslconfig 文件加入镜像网络模式配置。在 PowerShell 里执行notepad $env:USERPROFILE\.wslconfig写入[wsl2] networkingModemirrored然后wsl --shutdown重新启动 Rocky Linux。镜像网络模式下WSL 直接共享 Windows 的物理网卡和 IP 地址WSL 里监听的端口在局域网内可以直接访问localhost 也没问题IP 也不再变化。这对开发调试、跑服务都是一个很舒服的体验。如果你是 Windows 10 用户没有 mirrored 模式只能用传统的 NAT 方案。可以在 Windows 上通过端口转发把 WSL 里的端口暴露给局域网命令是netsh interface portproxy add v4tov4 listenaddress0.0.0.0 listenport8080 connectaddressWSL-IP connectport8080注意 WSL 的 IP 可以通过wsl hostname -I获取但重启后可能变化所以这种方案需要配合脚本自动更新比较繁琐。我的建议是能升 Win 11 就直接升省心很多。5. 常见问题与排查技巧实录5.1 wsl --install 提示 403 或下载很慢怎么办很多人在新电脑上执行wsl --install时遇到过 403 报错或者卡在下载阶段迟迟不动。这个问题的根源多半是 Windows 更新服务或者商店下载通道的网络环境异常但不代表装不了 WSL 了。我的建议是放弃wsl --install改用两条腿走路。第一用 dism 命令手动启用 WSL 和虚拟机平台功能也就是上面 2.2 节写的两条命令这是本地操作不依赖网络。第二从 WSL 的官方 GitHub Release 页面手动下载安装包文件名一般是 wsl.2.x.x.x.x64.msi 或者 msixbundle 格式下载后双击安装即可。内核更新卡住时可以在管理员 PowerShell 里执行wsl --update --web-download这个参数可以避免走商店更新通道直接从 Web 下载更新包很多时候能绕开下载慢的问题。5.2 错误代码 WslServiceCreateInstance 的排查思路如果你启动 WSL 时遇到wsl/service/createinstance/createvm/hcs/error_file_not_found这类错误不用慌我总结了一个排查顺序。第一步去任务管理器确认虚拟化状态是否是已启用如果禁用进 BIOS 打开 Intel VT-x 或 AMD-V。第二步检查 Windows 功能里 VirtualMachinePlatform 是否启用dism 命令重新启用一次重启。第三步更新 WSL 内核执行wsl --update --web-download。第四步部分电脑上 Windows 服务里的虚拟机管理服务vmcompute可能出现异常在管理员 PowerShell 里执行Get-Service vmcompute Restart-Service vmcompute按这个顺序排查大部分 error_file_not_found 都能解决。我见过最后是靠重启 vmcompute 解决的所以别一上来就重装系统。5.3 WSL 删除文件后空间不释放这是 WSL 的经典问题。WSL 2 的虚拟磁盘文件是动态增长的你用了一阶段后发现磁盘占用很大但删了一堆文件后Windows 侧看到的 VHDX 文件大小并没有变小因为虚拟磁盘只会增长不会自动收缩。要彻底瘦身最保险的是导出再导入大法。先在 PowerShell 里关闭 WSLwsl --shutdown然后导出当前系统为 tar 备份wsl --export RockyLinux D:\backup\rocky9.tar接着注销原发行版wsl --unregister RockyLinux最后用导出的 tar 重新导入wsl --import RockyLinux C:\WSL\RockyLinux D:\backup\rocky9.tar --version 2重新导入后VHDX 文件会重新创建空间占用恢复干净状态。注意wsl --unregister会删除原发行版的所有数据所以务必确认导出成功再操作。新版 WSL 也支持直接对发行版启用稀疏虚拟磁盘wsl --manage RockyLinux --set-sparse true这个命令能让 VHDX 尽量按实际使用量占用空间可以在日常使用中缓解膨胀问题。5.4 导入后版本始终是 WSL 1如果你发现导入的 RockyLinux 一直运行在 WSL 1先执行wsl --list --verbose看 VERSION 列。如果显示 1在管理员 PowerShell 里转换版本wsl --set-version RockyLinux 2这个转换过程可能耗时几分钟期间会重新创建虚拟磁盘。转换失败的话回到 2.1 检查虚拟化是否开启或者更新一下内核。如果只是想让所有新导入的发行版默认走 WSL 2可以重复执行wsl --set-default-version 2确保默认值正确。5.5 离线环境安装整套 WSL Rocky Linux有些内网环境不能直接下载东西但同样可以装。建议提前在外网准备三样东西WSL 安装包msi/msixbundle、WSL 2 内核更新包、Rocky Linux 的 rootfs tar。然后把这三个文件拷贝到目标机器里。安装流程是先装 WSL 的 msi 安装包再双击安装内核更新包接着在 PowerShell 里执行 dism 启用两个 Windows 功能重启最后wsl --import导入 Rocky Linux 的 tar 包。整个过程完全不需要网络。注意离线环境下导入后首次dnf update依旧没网需要先想办法补充离线依赖包或者直接不更新先用着基础环境。5.6 其他随手记录的坑再分享几个我实际遇到过的小坑。第一个不要在 Windows 资源管理器里直接修改 WSL 内的文件。比如用记事本打开 \wsl$\RockyLinux\etc\nginx\nginx.conf 然后另存很容易把文件权限和换行符搞坏。正确做法是在 WSL 终端里用 vim 编辑或者用 VS Code 的 Remote-WSL 插件。第二个WSL 里跑服务时如果发现端口被占用先确认是不是 Windows 侧有程序占用因为 WSL 2 和宿主机共享 localhost 有一定规则排查时需要两边都看。第三个如果直接在容器镜像基础上操作有些基础包可能没装比如 curl、ca-certificates跑一些命令行工具时会出现 TLS 证书错误先dnf install -y ca-certificates装掉能省不少事。这套组合我已经用了大半年说实话一旦习惯Windows 写代码 WSL 跑环境的工作流之后就真的很难再回去开虚拟机了。系统启动快、资源省、和 IDE 联动顺滑唯一要适应的就是网络模式和一些权限上的差异。我现在的日常做法是开发项目全部放 WSL 内部文件系统需要共享给 Windows 操作的文件再放到 /mnt/c 下关键数据定期用wsl --export做一次 tar 备份。如果你也需要一个干净、稳定、轻量的 RHEL 系环境Rocky Linux WSL 值得花一晚上折腾一下。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。