安装WSL子系统教程
1. 前提条件与准备工作
- 操作系统要求:
- Windows 10:要求版本 2004 及 Build 19041 以上,或
- Windows 11
- 网络环境:部分地区需要设置代理。
- 管理员权限:安装及部分配置需要以管理员身份运行 PowerShell 或 CMD。
- 存储空间及磁盘规划:WSL 会在系统盘或你指定的目录中保存 Linux 文件系统,提前规划好存储位置与空间。
2. WSL 安装方法
2.1 一键安装(推荐)
适用于 Windows 10 版本 2004、Build 19041 及以上,以及 Windows 11;旧系统按官方手动安装说明处理。步骤如下:
- 打开 PowerShell(管理员模式):
在开始菜单搜索 “PowerShell”,右键选择“以管理员身份运行”。 - 执行安装命令:
此命令会自动启用 WSL 相关组件、虚拟机平台,并默认安装最新的 WSL 版本(通常为 WSL2)和默认 Linux 发行版(一般为 Ubuntu)。wsl --install - 重启电脑:安装完成后系统会提示重启以完成配置。
2.2 手动安装
对于需要更多自定义选项的用户,手动安装步骤如下:
(1)启用 WSL 和虚拟机平台功能
在管理员模式下打开 PowerShell,依次执行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
执行后重启计算机。
(2)安装 WSL2 内核更新包
旧版 Windows 组件式安装按 WSL 手动安装说明 选择匹配架构的内核包。使用商店版 WSL 时通常通过 wsl --update 更新,不需要把旧式内核包当作所有安装的必经步骤。
(3)设置默认 WSL 版本为 WSL2
再次打开 PowerShell(无需管理员模式也可),执行:
wsl --set-default-version 2
(4)安装 Linux 发行版
有两种方式:
- 通过 Microsoft Store:搜索
Ubuntu、Debian等,选择版本(如 Ubuntu 22.04 LTS),点击“获取”并完成安装;与下方命令行安装二选一,无需重复安装同一发行版。 - 命令行安装:查看支持的在线发行版列表:
安装指定版本(示例名称需要出现在上面的在线列表中):wsl --list --onlinewsl --install -d Ubuntu-22.04
3. Linux 发行版安装及首次使用
- 首次启动:安装完成后,从“开始菜单”启动对应 Linux 发行版。
- 创建用户:系统会提示你为 Linux 系统创建用户名(使用发行版允许的普通用户名)和密码,这样你就可以使用
sudo提权操作。 - 更新系统:
sudo apt update && sudo apt upgrade - 安装常用软件:根据需要安装
git、vim、python3等:sudo apt install git vim python3
4. WSL 版本切换:WSL1 与 WSL2
WSL 中各发行版可以独立设置为 WSL1 或 WSL2。查看所有已安装发行版及其版本:
wsl -l -v
输出示例:
NAME STATE VERSION
* Ubuntu-22.04 Running 2
Ubuntu-20.04 Stopped 2
Debian Stopped 1
切换版本
- 将发行版切换为 WSL2:
例如:$Distro = "Ubuntu-22.04" # 改为 wsl -l -v 中的实际名称 wsl --set-version $Distro 2wsl --set-version Debian 2 - 将发行版切换为 WSL1(如有需求):
$Distro = "Ubuntu-22.04" wsl --set-version $Distro 1 - 设置默认安装版本:在安装新发行版时,可以用下面命令设置默认版本:
wsl --set-default-version 2
转换前备份发行版和项目文件。转换耗时与数据量有关,也可能因兼容性或磁盘空间失败;--set-default-version 只改变以后新安装发行版的默认值,不会转换已有实例。
5. 附加功能与进阶用法
5.1 Windows 与 WSL 文件共享
- WSL 文件系统访问:
在 WSL 中可通过/mnt/c/等路径访问 Windows 磁盘。例如访问C:\Users\YourName:cd /mnt/c/Users/YourName - 在 Windows 中访问 WSL 文件:
可使用 File Explorer 直接访问:在地址栏输入\\wsl$,会显示所有已安装的 WSL 发行版及其文件系统。 - 同步代码与项目文件:
同一路径是访问同一份文件,不是自动同步副本。主要用 Linux 工具构建的项目通常放在 WSL 的 Linux 文件系统中,通过 Windows 的\\wsl$或explorer.exe .访问;跨文件系统操作的性能和权限语义需要另行考虑。
5.2 WSL GUI 应用(WSLg)
WSLg 要求 WSL 2,以及 Windows 10 Build 19044 及以上或 Windows 11,并需要相应 GPU 驱动。配置方法如下:
- 确保 WSL 更新至最新版本:执行
wsl --update - 启动 GUI 应用(以下用简单的 X11 应用测试):
sudo apt install x11-apps xeyes
WSLg 会自动启动并显示 Linux GUI 应用,无需额外配置 X 服务器。
5.3 代理设置
如果你处于网络环境受限或想加快下载速度,可以设置代理。
(1)区分 Windows 系统代理与终端代理
Windows 设置中的系统代理,与当前终端的 http_proxy / https_proxy 环境变量不是一回事;应用是否采用它们取决于自身实现。只想影响当前 PowerShell 及其子进程时,例如:
$env:http_proxy = "http://127.0.0.1:7890"
$env:https_proxy = "http://127.0.0.1:7890"
端口按代理软件实际的 HTTP / mixed 监听端口修改。这不会自动设置所有 Windows 服务,也不等于 WSL 已获得可用代理地址。
(2)在 WSL 中连接 Windows 代理
WSL 2 的 NAT 模式下,Linux 中的 127.0.0.1 通常指向 WSL 自己。先在 WSL 中查询默认网关,再测试 Windows 代理是否在该地址可访问:
PROXY_HOST=$(ip -4 route show default | awk 'NR==1 {print $3}')
PROXY_PORT=7890
printf 'Windows proxy host: %s\n' "$PROXY_HOST"
确认地址非空、端口正确,并且 Windows 代理允许来自该虚拟网络的连接,再设置:
export http_proxy="http://${PROXY_HOST}:${PROXY_PORT}"
export https_proxy="$http_proxy"
curl --proxy "$http_proxy" --connect-timeout 10 -I https://example.com
镜像网络模式可以通过 127.0.0.1 访问 Windows 服务;支持 autoProxy 的环境也可按微软说明继承 Windows HTTP 代理信息。应先确认网络模式,不能将同一地址写法套给所有 WSL 2 环境。HTTPS 目标使用 HTTP 代理时,代理 URL 仍可为 http://。
完整排查可参见WSL 2 通过 Windows v2rayN 代理上网。
(3)APT 单次代理
确认上面的 HTTP 代理可用后,可以只为一次 APT 操作指定:
sudo apt -o Acquire::http::Proxy="$http_proxy" -o Acquire::https::Proxy="$http_proxy" update
需要长期配置时再编辑 /etc/apt/apt.conf.d/99proxy,使用已经验证的实际地址;NAT 网关地址变化后要同步调整。不要把未验证的 127.0.0.1 固定写入所有实例。
5.4 多实例安装(同一版本多个副本)
WSL 允许你导入同一 Linux 发行版的多个副本,便于隔离不同任务。操作步骤如下:
- 导出已有实例
假设已安装Ubuntu-20.04,用以下命令导出为.tar文件:wsl --export Ubuntu-20.04 D:\wsl-backups\ubuntu-20.04.tar - 导入为新实例
用新名称(例如Ubuntu-Dev)创建副本:wsl --import Ubuntu-Dev D:\WSL\Ubuntu-Dev D:\wsl-backups\ubuntu-20.04.tar --version 2 - 启动新实例
使用下面命令启动新导入的实例:wsl -d Ubuntu-Dev
这样你就可以在同一台机器上同时运行多个独立的 Linux 环境。
6. 常用命令与管理技巧
- 查看已安装发行版及版本:
wsl -l -v - 启动指定发行版:
$Distro = "Ubuntu-22.04" wsl -d $Distro - 设置默认发行版(直接运行 wsl 时启动的系统):
$Distro = "Ubuntu-22.04" wsl --set-default $Distro - 切换 WSL 版本:
$Distro = "Ubuntu-22.04" wsl --set-version $Distro 2 - 更新 WSL 内核:
wsl --update - 关闭所有运行中的 WSL 实例:先保存工作,它会终止所有发行版中的进程,也可能影响依赖 WSL 的应用:
wsl --shutdown - 注销某个发行版:
wsl --unregister会永久删除该实例的文件系统,与停止运行不同。先导出并验证备份,再核对目标名称:
wsl --unregister 发行版名称
导出前确保备份目录存在且目标文件名未被占用,先停止相关写入或正常停机以保证数据一致性;导入目录应专用于新实例。先验证新副本能启动、数据完整,再考虑处理旧实例。
评论将在接近此处时加载,也可点击立即加载。