Windows Subsystem for Linux (WSL) 极大地改变了开发者和技术爱好者在Windows环境下使用Linux的方式。它提供了一种高效、无缝且功能强大的体验,让您无需虚拟机或双启动即可运行真正的Linux环境。本文将围绕“WSL启动Ubuntu”这一核心主题,深入探讨您可能遇到的各种疑问,从基础概念到高级配置,旨在为您提供一份详尽、实用的操作指南。
WSL与Ubuntu:基础概念
WSL是什么?
WSL,即Windows Subsystem for Linux,是微软推出的一项兼容层技术,允许开发者在Windows操作系统上直接运行GNU/Linux环境,包括大多数命令行工具、实用程序和应用程序,而无需传统的虚拟机或双引导设置。它在Windows内核之上提供了一个兼容层,将Linux系统调用实时转换为Windows系统调用,从而实现了接近原生的性能。
WSL启动Ubuntu意味着什么?
“WSL启动Ubuntu”指的是在您的Windows电脑上,通过WSL技术运行一个Ubuntu Linux发行版的实例。这为您提供了一个完整的Ubuntu命令行环境,您可以在其中执行Ubuntu特有的命令、安装包、运行脚本,甚至通过WSLg(WSL的图形界面支持)运行Ubuntu的桌面应用程序。这个Ubuntu实例与您的Windows系统紧密集成,可以方便地访问Windows文件系统,并共享网络连接。
为什么选择WSL运行Ubuntu?
- 无缝集成:无需重启电脑,您可以同时运行Windows应用和Ubuntu命令行工具。
- 性能接近原生:WSL2通过轻量级虚拟机技术,提供了几乎与原生Linux相同的性能体验,尤其是在文件I/O方面。
- 开发利器:对于Web开发、数据科学、容器化(如Docker)、云计算等场景,许多工具和框架原生支持Linux环境,WSL提供了一个便捷的沙盒。
- 资源效率高:相比传统虚拟机,WSL启动更快,资源占用更低,因为它与Windows共享内核资源,并采用动态内存分配。
- 图形应用支持:WSLg的引入,让您可以直接在Windows桌面上运行Ubuntu的GUI应用程序,无需复杂的X服务器配置。
- 多发行版管理:您可以同时安装和运行多个不同的Linux发行版(如Ubuntu、Debian、Kali等),并轻松切换。
准备与安装
先决条件:在何处安装以及需要什么?
要在您的Windows电脑上安装WSL和Ubuntu,您需要满足以下条件:
- 操作系统:Windows 10版本1903或更高版本(Build 18362或更高),或者Windows 11。推荐使用最新版本的Windows以获得最佳体验和最新功能(如WSLg)。
- 虚拟机平台功能:需要在Windows功能中启用“虚拟机平台”和“适用于Linux的Windows子系统”。通常,使用简化安装命令会自动处理。
- 磁盘空间:WSL2的Ubuntu发行版通常会动态占用磁盘空间,初始安装可能只需要几百MB,但随着您安装更多软件,它会自动扩展其虚拟硬盘(VHDX)文件。建议预留至少10-20GB的可用空间。
- 网络连接:在安装过程中需要连接互联网以下载WSL组件和Ubuntu发行版。
如何安装WSL?
安装WSL最简单的方式是使用一行命令:
- 打开管理员权限的PowerShell或命令提示符:在Windows搜索栏中输入“cmd”或“powershell”,然后右键点击“以管理员身份运行”。
-
执行安装命令:
输入以下命令并按回车:
wsl --install此命令将自动完成以下步骤:
- 启用“适用于Linux的Windows子系统”可选组件。
- 启用“虚拟机平台”可选组件。
- 下载并安装最新版WSL内核。
- 下载并安装默认的Ubuntu发行版(通常是最新的LTS版本)。
- (如果需要)下载并安装WSLg以支持图形界面。
如果您想安装特定版本的WSL(如WSL 2),或者想在安装前手动指定,可以在第一次运行
wsl --install后进行配置,或者使用wsl --set-default-version 2命令。 - 重启电脑:根据提示,您可能需要重启计算机以完成安装过程。
如何安装Ubuntu发行版?
如果您已经通过wsl --install安装了WSL,它通常会自动安装一个默认的Ubuntu发行版。如果您想安装其他版本的Ubuntu(如旧的LTS版本),或者想手动安装:
- 打开Microsoft Store:在Windows搜索栏中输入“Microsoft Store”并打开应用商店。
- 搜索Ubuntu:在Store的搜索框中输入“Ubuntu”。
- 选择您想要的Ubuntu版本:通常会有“Ubuntu”(最新LTS)、“Ubuntu 22.04 LTS”、“Ubuntu 20.04 LTS”等选项。选择一个,然后点击“获取”或“安装”。
- 等待下载和安装完成:完成后,您会看到一个“启动”按钮。
提示:您可以使用命令
wsl --list --online查看所有可用的WSL发行版列表,然后使用wsl --install -d <DistroName>来安装特定的发行版,例如:wsl --install -d Ubuntu-20.04。
启动与基本操作
如何启动Ubuntu?
有几种方式可以启动您的WSL Ubuntu实例:
- 通过Windows开始菜单:在Windows开始菜单中找到“Ubuntu”图标(或您安装的特定Ubuntu版本,如“Ubuntu 22.04 LTS”),点击即可启动一个Ubuntu终端窗口。
-
通过运行命令:
-
打开命令提示符 (cmd) 或 PowerShell。
-
直接启动默认发行版:输入
wsl并按回车。这会启动您的默认WSL发行版(通常是您安装的第一个Ubuntu)。wsl -
启动特定发行版:如果您安装了多个Ubuntu或其他Linux发行版,可以使用
wsl -d <发行版名称>命令。例如,要启动名为“Ubuntu-22.04”的发行版:wsl -d Ubuntu-22.04您可以使用
wsl --list或wsl -l来查看所有已安装发行版的名称。 -
通过发行版名称的快捷命令:许多发行版安装后会在系统路径中创建一个对应的可执行文件,如
ubuntu.exe或ubuntu2204.exe。直接在运行对话框(Win+R)或命令提示符中输入并运行它。
-
首次启动:用户设置
当您首次启动新安装的Ubuntu发行版时,系统会提示您创建一个Unix用户账户。这是您在Ubuntu环境中的默认用户,并会拥有sudo权限。
-
输入新的Unix用户名:
Enter new UNIX username: YourUserName(请替换
YourUserName为您想要的用户名) -
设置密码:系统会要求您输入并确认密码。请注意,在Linux终端中输入密码时,通常不会显示任何字符(包括星号),这是正常现象。
New password: Retype new password: -
完成设置:设置完成后,您将进入Ubuntu的命令行提示符。
如何管理多个Ubuntu实例?
如果您安装了多个Ubuntu版本或不同的Linux发行版,可以使用以下命令进行管理:
-
列出所有已安装的发行版:
wsl --list --verbose或简写:
wsl -l -v这将显示每个发行版的名称、状态(Running/Stopped)和WSL版本(WSL 1/WSL 2)。
-
设置默认启动的发行版:
wsl --set-default <发行版名称>例如:
wsl --set-default Ubuntu-22.04
如何终止Ubuntu实例?
当您关闭Ubuntu终端窗口时,WSL发行版通常不会完全关闭,而是进入“Stopped”状态,以便下次快速启动。要完全终止一个或所有运行中的WSL实例:
-
终止特定发行版:
wsl --terminate <发行版名称>例如:
wsl --terminate Ubuntu-22.04 -
终止所有运行中的发行版:
wsl --shutdown这个命令会关闭所有正在运行的WSL发行版以及WSL 2轻量级虚拟机。
文件系统交互
Ubuntu如何访问Windows文件?
WSL Ubuntu发行版会自动将您的Windows硬盘驱动器挂载到/mnt目录下。
-
访问C盘:您可以在Ubuntu终端中通过
/mnt/c路径访问Windows的C盘。cd /mnt/c/Users/YourWindowsUserName/Documents(请替换
YourWindowsUserName为您的Windows用户名) -
访问其他盘符:如果您的Windows有D盘、E盘等,它们会分别挂载到
/mnt/d、/mnt/e等路径下。
Windows如何访问Ubuntu文件?
在Windows中访问WSL Ubuntu的文件也非常方便:
-
通过文件资源管理器:
- 打开Windows文件资源管理器。
- 在地址栏输入
\\wsl.localhost并按回车。 - 您会看到已安装的WSL发行版列表,双击您想访问的Ubuntu发行版(例如“Ubuntu-22.04”)。
- 然后您可以像访问网络共享文件夹一样浏览Ubuntu的文件系统,例如进入
home/YourUserName目录。
-
直接路径访问:您也可以直接在文件资源管理器地址栏输入完整的UNC路径,例如:
\\wsl.localhost\Ubuntu-22.04\home\YourUserName\myproject - 通过VS Code等工具:许多现代开发工具(如Visual Studio Code)都内置了对WSL的良好支持。您可以在VS Code中直接打开WSL文件夹,并在Ubuntu环境中进行开发。
最佳实践:避免直接修改WSL文件系统
重要提示:强烈建议不要在Windows文件系统(如
C:\Users\YourUserName\AppData\Local\Packages\...)中直接修改WSL发行版的文件。 这样做可能导致权限问题、文件损坏或WSL环境不稳定。请始终通过WSL环境本身或使用\\wsl.localhost路径从Windows访问和操作WSL中的文件。
网络与端口转发
WSL的网络配置
WSL 2使用一个轻量级虚拟机,每个WSL 2发行版都有一个自己的虚拟网卡,拥有一个独立的IP地址(通常是内部NAT网络)。然而,WSL会自动处理大部分网络配置,使得从Windows访问WSL内部服务,或从WSL访问外部网络都非常透明。
-
WSL内部IP地址:您可以在Ubuntu终端中运行
ip a或ifconfig来查看其内部IP地址。这个地址通常是动态的。 - DNS解析:WSL通常会继承Windows的DNS设置。
如何在Windows上访问WSL内部服务?
这是WSL最方便的功能之一。如果您在Ubuntu中运行了一个Web服务器(如Apache、Nginx)、数据库(如MySQL、PostgreSQL)或API服务,它们监听在默认端口上,您可以直接在Windows浏览器或应用程序中通过localhost或127.0.0.1访问它们。
- 自动端口转发:WSL 2的一个重要特性是自动端口转发。这意味着如果您在Ubuntu中启动了一个服务并监听在某个端口(例如80、3000、8080),Windows会自动将流量转发到WSL中的相应端口。
-
示例:
- 在Ubuntu中,启动一个简单的Python HTTP服务器:
python3 -m http.server 8000 - 在Windows浏览器中,直接访问:
http://localhost:8000。您应该能看到Python服务器提供的内容。
- 在Ubuntu中,启动一个简单的Python HTTP服务器:
图形界面应用(GUI)
WSLg:原生GUI支持
WSLg是WSL 2中一个令人兴奋的功能,它允许您在Windows桌面上直接运行Linux GUI应用程序,而无需手动配置X服务器或VNC。WSLg是Windows 11的内置功能,对于Windows 10用户,通常在WSL更新后也会自动安装。
WSLg提供了一个完整的图形栈,包括Wayland、Xserver、PulseAudio和RDP,它们都自动集成到您的Windows桌面体验中。
如何运行Ubuntu的GUI应用?
一旦WSLg安装并运行,运行Ubuntu的GUI应用就和运行命令行应用一样简单:
-
在Ubuntu中安装GUI应用:
例如,安装流行的图片编辑软件GIMP:
sudo apt update sudo apt install gimp或者安装一个简单的文本编辑器gedit:
sudo apt install gedit -
启动GUI应用:
-
通过Ubuntu终端:在您的Ubuntu终端中直接输入应用程序的命令,然后按回车。例如:
gimp或者
gedit应用程序窗口将直接弹出在您的Windows桌面上。
-
通过Windows开始菜单:安装WSLg后,许多Linux GUI应用程序的快捷方式会自动添加到Windows的开始菜单中,您可以在“Ubuntu”文件夹下找到它们并直接点击启动。
-
注意:首次启动GUI应用可能需要一点时间,因为WSLg环境需要初始化。
高级配置与故障排除
WSL版本(1 vs 2)
WSL有两个主要版本:WSL 1和WSL 2。它们之间的底层架构有显著差异,影响着性能和功能。
-
WSL 1:
- 基于翻译层,将Linux系统调用实时转换为Windows系统调用。
- 没有真正的Linux内核,共享Windows内核。
- 文件I/O性能在跨Windows和Linux文件系统时较慢。
- 不完全支持所有Linux应用程序(例如Docker)。
- 启动速度快。
-
WSL 2:
- 基于轻量级虚拟机(VM),运行一个真实的Linux内核。
- 文件I/O性能在Linux文件系统内部(如
~/home)表现出色,但在跨Windows文件系统(如/mnt/c)时可能稍慢于WSL 1。 - 提供完整的系统调用兼容性,支持更多Linux应用程序(包括Docker Desktop)。
- 支持WSLg。
- 启动速度比WSL 1稍慢,但仍远快于传统虚拟机。
推荐:强烈建议使用WSL 2以获得最佳性能和功能。新的安装默认就是WSL 2。
如何检查和切换WSL版本:
-
查看发行版的WSL版本:
wsl --list --verbose或
wsl -l -v -
将特定发行版设置为WSL 1或WSL 2:
wsl --set-version <发行版名称> <版本号>例如:
wsl --set-version Ubuntu-22.04 2 -
设置所有新安装发行版的默认WSL版本:
wsl --set-default-version 2
WSL的默认发行版设置
您可以通过以下命令设置在执行wsl命令时不带参数时启动哪个发行版:
wsl --set-default <发行版名称>
例如:wsl --set-default Ubuntu-22.04
磁盘空间管理
WSL 2发行版的根文件系统存储在一个虚拟硬盘(VHDX)文件中。这个文件位于您的Windows用户文件夹下的隐藏目录中。WSL 2的VHDX是动态扩展的,这意味着它只会占用实际使用的空间,但它不会自动收缩。
-
查看VHDX文件大小:
wsl du -sh /这个命令将在Ubuntu内部查看根目录已使用的大小。要在Windows中查看实际的VHDX文件大小,您需要前往:
C:\Users\<YourWindowsUserName>\AppData\Local\Packages\<UbuntuDistroPackageName>\LocalState\ext4.vhdx(
<UbuntuDistroPackageName>通常以“CanonicalGroupLimited.Ubuntu”开头) -
收缩VHDX文件(释放未使用的空间):如果您的Ubuntu实例占用了大量磁盘空间,但您删除了很多文件,VHDX文件可能不会自动缩小。您可以手动收缩它:
- 终止WSL实例:
wsl --shutdown - 打开PowerShell作为管理员:
- 查找VHDX文件路径:
Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss\ | ForEach-Object { (Get-ItemProperty -Path $_.pspath).BasePath + "\ext4.vhdx" }这将列出所有WSL发行版的VHDX文件路径。
- 优化VHDX文件:
Optimize-VHD -Path "<VHDX文件完整路径>" -Mode Full请将
<VHDX文件完整路径>替换为上一步找到的实际路径。例如:Optimize-VHD -Path "C:\Users\YourUserName\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx" -Mode Full
- 终止WSL实例:
常见问题与解决方案
-
“WSL 2 requires an update to its kernel component”错误:
解决方案:在管理员权限的PowerShell中运行
wsl --update,然后重启电脑。 -
网络连接问题(无法访问外部网络):
解决方案:尝试重启WSL:
wsl --shutdown,然后重新启动Ubuntu。检查Windows防火墙设置,确保WSL组件没有被阻止。 -
文件权限问题(在Windows中编辑WSL文件导致):
解决方案:不要在Windows中直接修改WSL文件系统(
C:\Users...\Packages下的文件)。如果已发生,可能需要重置或重新安装发行版。始终通过\\wsl.localhost访问或在WSL内部编辑文件。 -
WSLg应用启动失败或显示异常:
解决方案:确保您的Windows和WSL都已更新到最新版本(
wsl --update)。尝试重启WSL:wsl --shutdown。检查Ubuntu内部的X服务器相关日志。
更新与卸载
如何更新WSL和Ubuntu?
-
更新WSL平台本身:
为了获取最新的WSL功能和性能改进,您应该定期更新WSL平台。在管理员权限的PowerShell或命令提示符中执行:
wsl --update然后检查版本:
wsl --version -
更新Ubuntu发行版内部的软件包:
在Ubuntu终端中,您应该定期更新其内部的软件包和系统:
sudo apt updatesudo apt upgrade第一个命令会刷新可用软件包列表,第二个命令会安装所有已安装软件包的新版本。有时也需要运行
sudo apt dist-upgrade来处理依赖关系变化较大的升级。
如何卸载Ubuntu发行版?
如果您不再需要某个Ubuntu发行版,可以将其卸载以释放磁盘空间。
-
终止发行版(如果正在运行):
wsl --terminate <发行版名称> -
注销发行版:
这将从WSL中删除该发行版的文件系统,并删除所有数据。请谨慎操作,数据将无法恢复。
wsl --unregister <发行版名称>例如:
wsl --unregister Ubuntu-22.04 -
(可选)从Microsoft Store卸载应用:
完成注销后,您还可以选择从Windows的“设置” -> “应用” -> “应用和功能”中找到对应的Ubuntu应用,然后将其卸载,就像卸载其他Windows应用一样。
通过本文的详细指导,您应该已经对如何在WSL中启动和管理Ubuntu有了全面而深入的理解。无论是日常开发、系统管理还是学习Linux,WSL Ubuntu都将成为您Windows工作流中不可或缺的一部分。