Windows 安装 WSL 详细教程

Windows 安装 WSL 详细教程 Windows Subsystem for Linux即「适用于 Linux 的 Windows 子系统」是 Windows 10/11 自带的一项系统功能实现不用虚拟机、不用双系统直接在 Windows 里跑完整 Linux 环境这是一份 Windows 上 WSL 从安装到高级配置的完整实战教程专门写给想在 Windows 上流畅用 Linux 环境的开发者与折腾爱好者。不管你是第一次装 WSL、遇到各种报错卡壳还是需要把 WSL 挪到其他盘、配置固定 IP 网络、挂载 USB、优化性能与磁盘空间这篇文章都能一步步带你搞定让 WSL 用得稳定、顺手、不踩坑。看完这篇你能学到一键安装 WSL 发行版的标准流程把 WSL 迁移到非系统盘彻底解放 C 盘0x8007019e / 0x800701bc / 0x80370102 等经典报错一次解决桥接网络、镜像网络两种模式配置满足开发与内网通信宿主机与 WSL 互 ping、USB 挂载、中文环境、性能优化常用命令、磁盘瘦身、ROS2 通信问题等实战排障一、安装WSL1.1 微软商店安装打开微软商店搜索 Ubuntu选择需要安装的版本。1.2 将 WSL 转移至自定义目录# 1.2.1 终止运行 WSLwsl --shutdown# 1.2.2 导出需要迁移的 WSLwsl_name 为 WSL 名称可通过 wsl --list 查看wsl --export {wsl_name} {export_path}\{wsl_name}.tar# 1.2.3 注销 WSLwsl --unregister Ubuntu# 1.2.4 导入到选择好的路径wsl --import {wsl_name} {import_path}\ {export_path}\{wsl_name}.tar --version 2# 1.2.5 配置用户名{发行版本} config --default-user {你原来的用户名}1.3 常见错误处理报错0x8007019e — The Windows Subsystem管理员打开 PowerShell输入Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux报错0x800701bc手动升级 WSL 内核下载地址https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi报错0x80370102第一步检查系统版本x64 系统版本 1903 或更高内部版本 18362 或更高ARM64 系统版本 2004 或更高内部版本 19041 或更高低于 18362 的版本不支持 WSL 2请使用 Windows Update 助手更新检查是否开启 VT 虚拟化在任务管理器 → 性能 中查看如果没有启用需要更改 BIOS 设置具体方法参考https://www.yuchen.xyz/2021/09/17/Note on Ubuntu/第二步检查 Windows 功能是否开启Win Q 搜索「启用或关闭 Windows 功能」Win11检查「适用于 Linux 的 Windows 子系统」选项是否开启Win10需要检查以下三项第三步管理员权限运行以下命令后重启# 启用适用于 Linux 的 Windows 子系统dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart# 启用虚拟机功能dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart# 下载 Linux 内核更新包https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi二、配置 WSL 桥接网络注意此方法需要至少 Windows 11 22H22.1 安装 Hyper-VWindows 家庭版手动安装将以下脚本保存为 Hyper-V.bat以管理员方式运行pushd %~dp0dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum hyper-v.txtfor /f %%i in (findstr /i . hyper-v.txt 2^nul) do dism /online /norestart /add-package:%SystemRoot%\servicing\Packages\%%idel hyper-v.txtDism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALLpause专业版开启 Hyper-V打开【控制面板】→【程序和功能】→【启动或关闭 Windows 功能】勾选 Hyper-V 所有功能。确定后重启系统安装完成。2.2 安装 Windows Subsystem for Linux在 Microsoft Store 里面下载最新的 Windows Subsystem for Linux。用不了商店的可以前往以下地址自行下载 msixbundle 部署安装https://github.com/microsoft/WSL/releases安装完毕后使用 wsl --version 命令检查 WSL 版本是否为 1.0 以上。2.3 在 Hyper-V 管理器中配置虚拟交换机2.4 创建 .wslconfig 配置文件在用户目录下创建 .wslconfig 文件。方法在资源管理器地址栏输入 %USERPROFILE%回车跳转。最小配置桥接模式[wsl2]networkingModebridged # 桥接模式vmSwitchmy-switch # 刚才创建的虚拟交换机ipv6true # 启用 IPv6完整配置示例含性能优化# Settings apply across all Linux distros running on WSL 2[wsl2]# 限制 VM 内存最多使用 26 GBmemory26GB# VM 使用 16 个虚拟处理器processors16networkingModebridgedvmSwitchwslBridge # 刚才设置的虚拟交换机ipv6true # 开启 IPv6[experimental]autoMemoryReclaimgradual # 自动回收内存可选 gradual / dropcache / disabled# networkingModemirrored # 开启镜像网络与桥接二选一dnsTunnelingtrue # 开启 DNS Tunnelingfirewallfalse # 关闭 Windows 防火墙WSL 内部autoProxytrue # 开启自动同步代理sparseVhdtrue # 开启自动释放 WSL2 虚拟硬盘空间配置完毕后执行以下命令重启 WSL2wsl --shutdown wsl三、配置 WSL 网络为镜像模式替代桥接方案镜像网络设置只支持 Win11 22H2 以上版本。相较于桥接模式可以直接使用宿主机代理无需配置虚拟交换机直接修改 .wslconfig 文件即可。[wsl2]networkingModemirrored # 开启镜像网络ipv6truednsTunnelingtrue # 开启 DNS Tunnelingfirewallfalse # 关闭 Windows 防火墙WSL 内部autoProxytrue # 开启自动同步代理memory8GB[experimental]autoMemoryReclaimgradual # 开启自动回收内存sparseVhdtrue # 开启自动释放 WSL2 虚拟硬盘空间四、解决宿主机与 WSL 互相 Ping 不通的问题宿主机和 WSL 互相 ping 不通主要原因是宿主机防火墙对 ping 进行了拦截。开启下图中红框的配置即可解决五、将 USB 设备挂载至 WSL5.1 安装 usbipd-win下载地址https://github.com/dorssel/usbipd-win/releases5.2 WSL 中安装相应软件sudo apt install linux-tools-generic hwdatasudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*/usbip 205.3 查看 USB 设备 ID以管理员身份打开 Windows PowerShell执行usbipd list5.4 将 USB 设备挂载到 WSL将 USB 设备绑定到 WSL 总线允许其附加到 WSLusbipd bind --busid {busid}以管理员身份打开 Windows PowerShell执行usbipd attach --wsl --busid {busid}5.5 断开 USB 设备usbipd detach --busid busid六、配置中文环境sudo apt install language-pack-zh-hans -ysudo dpkg-reconfigure locales选择en_US.UTF-8 UTF-8 zh_CN.UTF-8 UTF-8将 zh_CN.UTF-8 UTF-8 设置为默认然后重启 WSL。七、WSL 常用命令# 设置默认 WSLwsl --setdefault {wsl_name}# 进入指定的 WSLwsl -d {wsl_name}# 查看各 WSL 详细信息wsl -l -v# 终止指定的发行版wsl -t {wsl_name}# 查看磁盘占用wsl.exe --system -d distribution-name df -h /mnt/wslg/distro八、释放磁盘空间# 清理 Docker 缓存并关闭 WSL# 在 PowerShell 中打开 diskpartdiskpart# 选择虚拟磁盘文件替换为实际 vhdx 路径select vdisk file这里替换为通过 WinDirStat 获取的 vhdx 虚拟磁盘文件路径attach vdisk readonlycompact vdiskdetach vdisk九、解决镜像网络模式下 ROS2 通信异常的问题在 WSL2 下开启镜像网络模式ROS2 的话题依然无法被同局域网内的其他设备发现和订阅。使用下面的命令开启入站流量即可Set-NetFirewallHyperVVMSetting -Name {40E0AC32-46A5-438A-A0B2-2B479E8F2E90} -DefaultInboundAction Allow结语到这里这份 WSL 安装与进阶优化指南就全部结束了。从最基础的安装、目录迁移、报错排查到桥接 / 镜像网络配置、USB 设备直通、中文环境、性能与磁盘优化再到 ROS2 等开发场景的问题修复基本覆盖了日常使用 WSL 会遇到的 90% 以上场景。不管你是开发、运维、还是学习 Linux 的新手按照步骤操作都能把 WSL 配置成稳定好用的生产力环境。遇到问题不用慌对照本文一步步排查基本都能快速解决。希望这份教程能帮你少走弯路在 Windows 上也能丝滑使用 Linux