十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

WSL2与Ubuntu在Win10上的完整安装与深度配置指南

WSL2与Ubuntu在Win10上的完整安装与深度配置指南 1. 项目概述从零到一在Win10上驯服WSL2与Ubuntu如果你和我一样是个长期在Windows环境下工作但又时不时需要Linux环境来跑点脚本、编译点代码或者纯粹想体验一下命令行魅力的开发者那么WSL2Windows Subsystem for Linux 2绝对是一个划时代的礼物。它不再是那个性能孱弱、兼容性堪忧的初代WSL而是基于完整Linux内核的轻量级虚拟机能让你在Windows里无缝运行一个近乎原生的Linux发行版比如Ubuntu。听起来很美好对吧但现实往往是从你兴奋地敲下第一个命令到看到一个能正常工作的Ubuntu终端中间可能会横亘着一系列令人抓狂的“拦路虎”。网络上的教程大多只展示一帆风顺的“标准流程”却对过程中可能出现的各种错误闪烁其词。今天我就以一名踩过几乎所有坑的“过来人”身份带你完整走一遍在Windows 10上启用WSL2并安装Ubuntu的全过程重点不是告诉你“应该怎么做”而是“如果出错了你该怎么办”。我们会深入每一个可能卡住的环节从系统准备、组件安装、发行版部署到网络、文件系统等进阶配置把那些教程里一笔带过的问题掰开揉碎了讲清楚。2. 战前准备你的Windows 10真的准备好了吗在开始任何安装操作之前盲目地执行命令是最大的忌讳。WSL2对系统版本和功能有明确的要求跳过检查步骤后续的失败几乎是必然的。2.1 系统版本与功能要求核查首先确认你的Windows 10版本。WSL2需要Windows 10版本 1903 或更高版本内部版本 18362 或更高版本。对于绝大多数用户更稳妥的门槛是版本2004内部版本19041及以上这个版本之后的WSL体验才趋于完善。如何查看很简单按下Win R输入winver回车。弹出的窗口会清晰显示你的版本和内部版本号。如果低于1903你需要通过Windows更新先将系统升级到最新版本。这里常遇到的一个坑是有些企业版或特定版本的Windows更新通道较慢可能需要手动下载官方的升级助手。其次WSL2依赖于两个核心的Windows功能“适用于Linux的Windows子系统”和“虚拟机平台”。前者是WSL的运行时环境后者是WSL2所需的虚拟化底层支持。传统的教程会让你去“控制面板 - 程序和功能 - 启用或关闭Windows功能”里勾选。这没错但这里有个隐藏问题如果你曾经安装过旧版的WSL1或者安装过程不完整这个图形界面可能无法正确反映实际状态甚至勾选后依然无效。更可靠的方式是使用PowerShell管理员身份进行检查和安装。打开PowerShell管理员分别执行以下命令查看功能状态# 检查WSL功能状态 Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux # 检查虚拟机平台功能状态 Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform如果状态是“Disabled”则需要启用。我强烈建议使用PowerShell命令来启用这比图形界面更彻底# 启用WSL功能不指定版本默认为WSL2所需环境做准备 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # 启用虚拟机平台功能 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart执行完这两个命令后必须重启计算机。这是很多新手忽略的关键一步不重启更改不会生效后续步骤必然报错。2.2 BIOS/UEFI中的虚拟化支持WSL2的本质是一个轻量级虚拟机因此它依赖CPU的硬件虚拟化支持Intel VT-x 或 AMD-V。绝大多数现代CPU都支持但问题在于这个功能可能在电脑的BIOS/UEFI设置中被默认关闭了尤其是在品牌笔记本电脑上。如何判断重启电脑进入BIOS/UEFI设置界面通常在开机时按F2、Del、F10等键因品牌而异。找到类似“Advanced”高级 - “CPU Configuration”CPU配置或 “Security”安全 - “Virtualization”虚拟化的选项。你需要确保“Intel Virtualization Technology”Intel VT-x或“AMD SVM”处于Enabled启用状态。如果你在安装过程中后续执行wsl --set-default-version 2时遇到类似“请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化”的错误十有八九就是这里没打开。另一个在Windows内快速检查的方法是打开任务管理器CtrlShiftEsc切换到“性能”标签页看CPU部分是否显示“虚拟化已启用”。3. 核心安装与版本管理跨越第一个大坑系统准备就绪后我们开始安装WSL2内核更新和Linux发行版。这里是从“官方教程”走向“个人实战”的分水岭。3.1 安装WSL2 Linux内核更新包微软为WSL2提供了一个独立的内核更新包WSL2 Linux kernel update package。你需要手动下载并安装它。直接访问微软官方文档的下载链接是最稳妥的。安装过程就是一个普通的.msi安装程序一路下一步即可。注意这个内核包只需要安装一次。之后WSL2的内核会通过Windows Update进行更新这与你在WSL内使用的Ubuntu等发行版的内核是两回事。前者是Windows用来“托管”Linux虚拟机的底层内核后者是Linux系统自身的内核。3.2 设置WSL2为默认版本安装好内核后重新打开一个管理员权限的PowerShell执行以下命令将WSL的默认版本设置为2wsl --set-default-version 2这是第一个高频出错点。你可能会看到这样的错误信息错误 0x80370102这几乎可以肯定是上一步的“虚拟机平台”功能未启用或者启用后未重启。请返回2.1和2.2节检查。错误 0x8007007e或“WSL 2 需要更新其内核组件”这通常意味着WSL2内核更新包没有正确安装。请重新下载安装并确保安装过程没有中断。命令执行后没有任何输出或者提示命令不存在请检查你是否在管理员PowerShell中运行以及WSL功能是否真的启用了。可以尝试先运行wsl --status查看状态。如果命令成功执行你会看到“有关与 WSL 2 主要区别的信息请访问 https://aka.ms/wsl2”的提示。此时WSL2的框架就搭好了。3.3 安装Ubuntu发行版现在我们可以安装Linux发行版了。最方便的方式是打开Microsoft Store微软商店搜索“Ubuntu”。你会看到多个版本如“Ubuntu 22.04 LTS”、“Ubuntu 20.04 LTS”等。LTS代表长期支持版更稳定推荐选择最新的LTS版本如22.04。点击“获取”即可安装。然而Store安装也可能出问题Store打不开或下载缓慢这是网络环境问题。可以尝试更换DNS如8.8.8.8或者使用一些网络工具。更彻底的方案是使用命令行安装绕过Store。安装后无法启动这可能是Store应用安装机制的问题。可以尝试在PowerShell中卸载并重新安装。我更推荐使用命令行进行安装可控性更强。在PowerShell无需管理员中执行# 列出可在线获取的发行版列表 wsl --list --online # 安装指定的发行版例如 Ubuntu-22.04 wsl --install -d Ubuntu-22.04wsl --install命令是一个集成命令它会自动执行启用功能、设置默认版本为2、并安装指定发行版的操作。但如果你已经手动完成了前面的步骤直接运行这个命令安装发行版即可。4. 首次启动与初始化配置避开那些“沉默的失败”安装完成后你可以在开始菜单找到Ubuntu的图标点击启动或者在PowerShell中直接输入wsl或ubuntu命令进入。首次启动会进行解压和初始化这需要几分钟。4.1 创建Linux用户账户初始化完成后系统会提示你创建一个新的UNIX用户名和密码。这个用户名和密码与你的Windows账户完全无关它是你这个WSL Linux实例的独立管理员sudo用户。这里有几个关键点用户名建议用小写字母不要用空格或特殊字符。虽然可以叫“john”但如果你Windows用户名是中文这里起个英文名会更方便。密码输入时不会显示任何字符星号也没有这是UNIX系统的正常行为正常输入后回车即可。密码用途后续当你执行sudo命令获取管理员权限时需要输入这个密码。如果初始化过程卡住或者报错退出可以尝试在PowerShell中执行wsl --terminate Ubuntu-22.04终止实例然后再次启动。如果问题依旧可能是安装文件损坏考虑卸载 (wsl --unregister Ubuntu-22.04) 后重装。4.2 基础系统更新进入Ubuntu终端后第一件事永远是更新软件包列表和升级现有软件。这能确保你从一个最新的基础开始。sudo apt update sudo apt upgrade -ysudo apt update刷新本地软件包索引从Ubuntu仓库获取最新的软件包信息。sudo apt upgrade -y升级所有可升级的软件包。-y参数表示自动回答“yes”避免中途需要确认。常见问题执行apt update时可能遇到“暂时无法解析域名 ‘archive.ubuntu.com’”之类的网络错误。这引出了WSL2最经典的网络问题。5. 网络与代理配置让WSL2与世界畅通无阻WSL2采用了一种NAT网络地址转换的网络模式。简单说WSL2虚拟机在一个虚拟的内部网络中通过Windows主机的网络访问外网。这带来了高性能但也带来了一些配置上的小麻烦。5.1 解决DNS解析失败问题apt update报错“无法解析域名”通常是DNS解析出了问题。WSL2默认会复制Windows主机的DNS配置但有时复制不成功或存在兼容性问题。解决方案一手动设置DNS编辑WSL2 Ubuntu中的DNS配置文件sudo nano /etc/resolv.conf如果文件开头有nameserver 172.x.x.x将其注释掉在行首加#。然后添加可靠的公共DNS例如nameserver 8.8.8.8 nameserver 114.114.114.114保存退出CtrlX然后按Y回车。但注意WSL2每次重启可能会重写这个文件。解决方案二创建配置文件阻止自动生成推荐为了防止WSL2覆盖你的设置创建一个配置文件sudo nano /etc/wsl.conf添加以下内容[network] generateResolvConf false保存退出。然后手动创建一个永久的/etc/resolv.conf并设置权限sudo rm /etc/resolv.conf # 先删除可能存在的软链接 sudo nano /etc/resolv.conf # 输入 nameserver 8.8.8.8 等 sudo chattr i /etc/resolv.conf # 给文件加上不可更改属性防止被覆盖这样设置后DNS问题基本能解决。5.2 配置Windows主机代理如需要如果你在Windows上使用了网络代理为了让WSL2也能通过代理访问外网加速git clone、apt install等需要获取Windows主机的IP地址。因为WSL2将Windows主机视为网关。在WSL2 Ubuntu中执行cat /etc/resolv.conf | grep nameserver | awk {print $2}这个命令会输出Windows主机在WSL2虚拟网络中的IP地址通常是172.x.x.1。然后在WSL2的Shell配置文件中如~/.bashrc或~/.zshrc添加代理设置export host_ip$(cat /etc/resolv.conf | grep nameserver | awk {print $2}) export http_proxyhttp://$host_ip:你的代理端口 export https_proxyhttp://$host_ip:你的代理端口 # 如果需要也可以设置 all_proxy, rsync_proxy 等保存后执行source ~/.bashrc使配置生效。这样WSL2内的网络请求就会通过Windows主机的代理出去了。6. 文件系统互访与性能调优WSL2的一个巨大优势是文件系统互访极其方便但两者性能特性不同需要正确使用。6.1 从Windows访问Linux文件在Windows文件资源管理器的地址栏直接输入\\wsl$回车你就能看到所有运行的WSL发行版点进去就像访问网络共享一样访问Linux根文件系统。这是最直观的方式。重要警告不要使用Windows应用程序直接创建、编辑或修改\\wsl$下的Linux文件这可能导致文件权限和元数据如inode损坏进而引发Linux系统内程序行为异常。正确的做法是在Windows端编辑文件然后复制到WSL目录或者在WSL内使用Linux工具如vim, nano, VS Code Remote来编辑。6.2 从Linux访问Windows文件在WSL2的Ubuntu中你的Windows用户目录通常自动挂载在/mnt/c/Users/你的Windows用户名路径下。你可以直接cd进去操作。性能提示对/mnt/c下的文件进行大量IO操作如编译大型项目、运行git status会比在WSL2原生文件系统/home下慢很多。因为这是跨文件系统的访问。最佳实践是将项目代码克隆到WSL2的Linux原生文件系统中如~/project。在WSL2内部进行开发、编译、测试。只有需要最终成果或使用特定Windows软件时才将文件复制到/mnt/c下。6.3 WSL2基础配置优化编辑WSL2的全局配置文件C:\Users\你的用户名\.wslconfig如果不存在就创建。这个文件可以控制分配给WSL2虚拟机的资源。[wsl2] # 限制WSL2使用的最大内存避免占用过多主机内存 memory4GB # 限制WSL2使用的处理器核心数 processors2 # 启用页面交换文件位置在 %USERPROFILE%\AppData\Local\Temp swap2GB # 将交换文件设置为内存大小的50% swapFileD:\\WSL\\swap.vhdx # 自定义Linux内核引导参数高级选项 kernelCommandLine vsyscallemulate # 指定自定义内核路径一般不需要 # kernelD:\\WSL\\kernel修改此文件后需要在PowerShell中执行wsl --shutdown完全关闭WSL2再重新启动配置才会生效。根据你的主机配置调整memory和processors能有效提升运行效率和避免资源争抢。7. 进阶问题排查与维护即使一切安装就绪在日常使用中也可能遇到一些古怪问题。7.1 WSL2启动失败或状态异常如果某天WSL2突然无法启动或者状态不对可以按以下步骤排查检查WSL服务在PowerShell管理员中运行Get-Service LxssManager和Get-Service vmcompute确保它们的状态是“Running”。如果不是尝试Start-Service vmcompute。关闭并重启WSL在PowerShell中运行wsl --shutdown强制关闭所有WSL实例然后重新启动Ubuntu。重置网络有时虚拟网络会出问题。以管理员运行命令提示符或PowerShell执行netsh winsock reset netsh int ip reset all然后重启电脑。修复安装如果怀疑WSL2组件损坏可以尝试在“设置 - 应用 - 应用和功能”中找到“Windows Subsystem for Linux Update”或“Windows Subsystem for Linux”点击“修改”选择修复。7.2 磁盘空间管理与清理WSL2虚拟机使用的虚拟硬盘文件通常是ext4.vhdx位于%USERPROFILE%\AppData\Local\Packages\发行版包名\LocalState目录下。这个文件只会增大不会自动缩小。即使你在Linux里删除了文件vhdx文件占用的Windows磁盘空间也不会释放。手动清理并压缩磁盘在Windows上首先确保所有WSL发行版都已关闭wsl --shutdown。以管理员身份打开PowerShell。找到你的WSL2发行版对应的vhdx文件路径。运行磁盘优化命令# 将 path-to-vhdx 替换为你的vhdx文件实际路径 Optimize-VHD -Path path-to-vhdx -Mode Full这个过程可能需要一些时间但可以有效地回收已删除文件占用的空间。7.3 与Windows防火墙的冲突某些情况下Windows防火墙可能会阻止WSL2的网络通信导致WSL2内无法访问特定端口或外部网络。如果你在WSL2内运行了一个服务如Web服务器在127.0.0.1:8080但在Windows浏览器中无法访问可能需要检查防火墙。一个简单的测试方法是暂时关闭Windows Defender防火墙仅用于测试不推荐长期关闭。如果关闭后能访问说明需要为WSL2的虚拟网络适配器添加防火墙入站规则。这涉及到高级防火墙配置对于大多数开发场景确保你的应用绑定到0.0.0.0而非127.0.0.1并且Windows防火墙弹出提示时选择“允许访问”通常就够了。8. 从安装到日常使用一些个人心得折腾完这一圈WSL2Ubuntu应该已经成为一个稳定可用的开发环境了。最后分享几个让我效率倍增的小技巧终端与Shell的选择不要再用那个简陋的默认控制台了。在Windows Terminal微软商店免费下载中配置WSL2的Ubuntu作为默认配置文件支持多标签、分屏、自定义主题和字体比如Cascadia Code Mono, Fira Code体验提升巨大。在Ubuntu内可以考虑将默认bash升级为zsh并安装oh-my-zsh框架配合自动补全、语法高亮等插件命令行会变得非常友好。开发环境搭建对于Python、Node.js、Go等语言强烈建议使用版本管理工具如pyenv、nvm、gvm在WSL2内安装与Windows环境彻底隔离避免冲突。对于数据库如MySQL、PostgreSQL、缓存Redis等服务也优先考虑在WSL2内通过apt安装和运行这样环境更接近生产服务器。与Windows IDE的协作如果你主力使用Visual Studio Code那么“Remote - WSL”扩展是必装的。它允许你直接在Windows的VSCode中打开WSL2里的项目文件夹所有插件和终端都运行在Linux环境中实现了完美的混合开发体验。对于JetBrains系列IDE如PyCharm, IntelliJ IDEA新版本也提供了对WSL2作为解释器或工具链的良好支持。性能监控在WSL2 Ubuntu内你可以使用htop、nmon等工具监控Linux内部的资源使用情况。在Windows端可以通过任务管理器中的“Linux虚拟机”进程来查看WSL2整体占用的CPU和内存便于进行资源调配。回顾整个历程WSL2的安装本身并不复杂但其中涉及的系统功能、虚拟化、网络、文件系统等概念交织在一起任何一个环节的小问题都可能让新手束手无策。我的经验是遇到报错不要慌仔细阅读错误信息它通常已经给出了线索比如错误代码、缺少的组件。善用wsl --help查看命令帮助多用wsl --status查看当前状态。大部分问题都能通过本文提到的步骤定位和解决。当这一切配置妥当你会发现在Windows上拥有一个完整的Linux开发环境不再是妥协而是一种高效而愉悦的体验。
返回列表