WSL2 全指南:MSI 安装、镜像导入与基础配置
在 Windows 上使用 Linux 时,双系统需要反复重启切换,传统虚拟机(VMware/VirtualBox)又占用整机内存、图形界面开销大,日常命令行工作显得笨重。日常只想要一个干净的 Linux 终端跑命令、编译、部署脚本时,需要一条更轻的路径。
WSL(Windows Subsystem for Linux,适用于 Linux 的 Windows 子系统) 是微软提供的一层兼容层,让你直接在 Windows 内运行原生 Linux 发行版,无需重启、无需桌面虚拟机。WSL 2 在真实 Linux 内核上运行发行版,兼容性和性能已接近裸机。
WSL 2 的核心优势:
- 免重启:Windows 与 Linux 并存,一个终端窗口随时进出。
- 低开销:按需启动、按需回收内存,闲置时几乎不占资源。
- 真实内核:WSL 2 基于完整 Linux 内核,支持 Docker、systemd、绝大多数 Linux 软件。
- 文件互通:Windows 盘挂载到
/mnt/c,也能从 Windows 侧直接访问 Linux 文件。 - GUI 支持:WSLg 可直接运行图形程序(Windows 11)。
本文将以 Ubuntu 26.04 LTS 为例,从环境要求、MSI 安装、镜像导入、用户与 sudo 设置、APT 换源(传统格式与 DEB822 格式)、Locale 中文显示到关闭终端响铃与故障排除,带你完成一套完整的 WSL 2 环境搭建。
目录
- 1. 环境要求与前置准备
- 2. 安装 WSL:MSI 离线安装
- 3. 导入 Ubuntu 26.04 镜像
- 4. 基础设置:创建普通用户与 sudo
- 5. APT 换源:传统格式与 DEB822 格式
- 6. Locale 配置:支持中文显示
- 7. 关闭终端响铃
- 8. 故障排除
- 9. 总结
- 10. 参考资料
1. 环境要求与前置准备
1.1 系统版本要求
WSL 2 对 Windows 版本有最低要求。按 Win + R 输入 winver 检查版本:
| 系统 | 要求 |
|---|---|
| Windows 10 | 版本 1903 或更高,内部版本(Build)≥ 18362 |
| Windows 11 | 所有版本均支持 |
提示:WSL 的 systemd 启动(Docker、
systemctl等依赖)仅在 Windows 11 与 Windows Server 2022 上可用,Windows 10 无法使用 systemd 启动。
1.2 开启硬件虚拟化
WSL 2 基于虚拟化技术运行,需要在主板 BIOS/UEFI 中启用虚拟化:
- 打开「任务管理器」→「性能」→「CPU」。
- 查看右下角「虚拟化」是否显示 已启用。
- 若未启用,重启进入 BIOS/UEFI,将
Intel VT-x(Intel)或AMD-V(AMD)设为Enabled。
1.3 启用 Windows 功能
方法 A:图形界面
按 Win + S 搜索并打开「启用或关闭 Windows 功能」,勾选以下两项:
- 适用于 Linux 的 Windows 子系统(Windows Subsystem for Linux)
- 虚拟机平台(Virtual Machine Platform)
点击确定并重启电脑。
方法 B:命令行(管理员权限)
以管理员身份运行 PowerShell,执行:
# 启用 WSL(/all 同时启用所有必要子功能,/norestart 不在本次命令后立即重启)
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart执行完毕后手动重启电脑。
2. 安装 WSL:MSI 离线安装
2.1 下载 MSI 安装包
访问 WSL GitHub Releases,下载最新的 .msi 安装包。以下载 WSL 2.7.11(2026-07-24 发布)为例:
https://github.com/microsoft/WSL/releases/download/2.7.11/wsl.2.7.11.0.x64.msi
不同架构的包名区别:
| 安装包 | 适用架构 | 说明 |
|---|---|---|
wsl.2.7.11.0.x64.msi | Intel/AMD 64 位 | 绝大多数 PC 使用 |
wsl.2.7.11.0.arm64.msi | ARM64(如骁龙 PC) | ARM 设备使用 |
Microsoft.WSL_*.msixbundle | x64 + ARM64 双架构 | 商店格式,含两个架构 |
2.2 安装并重启
双击 .msi 安装,安装完成后需要重启电脑。重启后验证安装:
wsl --version # 输出 WSL 内核版本与 Windows 版本信息若输出版本号(如 WSL 版本: 2.7.11.0),说明安装成功。若提示 wsl: command not found,说明未安装或需要重启后再试。
2.3 设置 WSL 2 为默认版本
# 让之后新安装/导入的发行版默认使用 WSL 2(而非旧的 WSL 1)
wsl --set-default-version 2提示:也可用
wsl --install(无参数)走在线安装流程。本指南使用 MSI 离线安装,适合网络受限或需要固定版本的环境。
3. 导入 Ubuntu 26.04 镜像
3.1 下载镜像
Ubuntu 官方为 WSL 提供专用的 .wsl 镜像文件。国内网络建议使用清华镜像源下载,目录为 ubuntu-releases/:
https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/26.04/ubuntu-26.04-wsl-amd64.wsl
其中 26.04 是版本号,Ubuntu 26.04 LTS 代号为 Resolute Raccoon,发布于 2026-04-23。若版本更新,可在 镜像目录 中查看最新版本。
3.2 校验镜像完整性(可选但建议)
下载同目录下的 SHA256SUMS,用 PowerShell 计算哈希并比对:
# 计算下载文件的 SHA256 哈希
Get-FileHash -Path "$env:USERPROFILE\Downloads\ubuntu-26.04-wsl-amd64.wsl" -Algorithm SHA256以 ubuntu-26.04-wsl-amd64.wsl 为例,正确哈希为:
96c7f5fb28a7fe28245331f9bfbe4375f18dd29a4850116ad3c4f60f6700c55c
若本地计算的哈希与官方一致,说明文件完整未被篡改。
3.3 导入发行版
方法 A(推荐):wsl --install --from-file
.wsl 是 WSL 的原生镜像格式,--from-file 会保留镜像自带的发行版元数据(如默认用户):
# --from-file 指定 .wsl 镜像;--name 指定发行版名;--location 指定安装位置
wsl --install --from-file C:\Users\59507\Downloads\ubuntu-26.04-wsl-amd64.wsl --name ubuntu-26.04 --location C:\linux\ubuntu-26.04方法 B:wsl --import
传统方式,把 .wsl(本质是 tar 包)作为 rootfs 导入:
# --import 后依次为发行版名、安装目录、镜像文件路径
wsl --import ubuntu-26.04 C:\linux\ubuntu-26.04 C:\Users\59507\Downloads\ubuntu-26.04-wsl-amd64.wsl提示:两种方式都能导入成功。
--import只提取 rootfs,不会带入镜像元数据,因此导入后默认以root用户进入(这正是后续需要手动创建普通用户的原因)。推荐优先使用--from-file。
3.4 查看与进入
# 查看已安装的发行版列表(带版本号)
wsl --list --verbose
# 按名称进入指定发行版
wsl -d ubuntu-26.04
# 不指定名称时,进入默认发行版
wslwsl --list --verbose 输出示例:
NAME STATE VERSION
* ubuntu-26.04 Stopped 2
* 表示默认发行版,VERSION 为 2 表示运行在 WSL 2 上。进入后即可在 Linux shell 中操作。
4. 基础设置:创建普通用户与 sudo
4.1 创建普通用户
通过 --import 导入的 rootfs 默认以 root 进入。日常使用建议创建普通用户并配置 sudo:
# -m 创建主目录;-s /bin/bash 指定登录 shell;-G sudo 将用户加入 sudo 管理组
useradd -m -s /bin/bash -G sudo ubuntu
# 为用户设置密码
passwd ubuntu提示:Ubuntu/Debian 的管理员组名为
sudo,而 RHEL/CentOS 系名为wheel。写脚本时注意发行版差异。
4.2 配置免密 sudo
免密 sudo 适合个人开发机,减少频繁输密码的打扰。建议写入 /etc/sudoers.d/ 而非直接改 /etc/sudoers:
# 使用 visudo 的 -f 参数编辑独立文件,保存时会自动做语法校验
sudo visudo -f /etc/sudoers.d/ubuntu写入内容:
ubuntu ALL=(ALL) NOPASSWD: ALL
警告:
NOPASSWD会让该用户无需密码即可执行任意 root 命令,显著降低系统边界。仅限个人可信环境使用;多用户或生产环境应使用密码验证或按命令白名单放行。
4.3 设置默认登录用户
通过 Windows 侧命令直接设置发行版的默认登录用户:
wsl --manage ubuntu-26.04 --set-default-user ubuntu5. APT 换源:传统格式与 DEB822 格式
Ubuntu 的 APT 源有两种配置文件格式。24.04 及之后的版本默认使用 DEB822 格式,这与老用户熟悉的传统格式不同,下面重点说明两者的区别和换源时的注意点。
5.1 两种格式对比
| 维度 | 传统格式(one-line) | DEB822 格式 |
|---|---|---|
| 文件路径 | /etc/apt/sources.list、/etc/apt/sources.list.d/*.list | /etc/apt/sources.list.d/*.sources |
| 语法 | 每行一个源,用空格分隔字段 | 类 INI 的段落式,键: 值 分行书写 |
| 一个文件多源 | 多行 | 多个 Types: deb 段落 |
| 引入版本 | 古老格式 | Ubuntu 22.04 支持,24.04 起默认 |
| 签名配置 | 由发行版自动处理(或 [signed-by=...]) | 显式声明 Signed-By: |
传统格式示例(每行一个源):
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
5.2 DEB822 字段说明
/etc/apt/sources.list.d/ubuntu.sources 是 26.04 默认的源文件,核心字段如下:
| 字段 | 含义 |
|---|---|
Types: | 源类型,deb 表示二进制包,deb-src 表示源码包 |
URIs: | 镜像地址,可写多行多个地址 |
Suites: | 套件名,即发行版代号加后缀(如 resolute、resolute-updates) |
Components: | 组件,main、universe、restricted、multiverse |
Signed-By: | 签名密钥路径,用于校验包完整性 |
Ubuntu 26.04 的代号为 resolute,因此套件为 resolute、resolute-updates、resolute-backports,安全更新套件为 resolute-security。
5.3 一键换为清华源
默认 /etc/apt/sources.list 全是注释,只需处理 ubuntu.sources 一份文件:先备份,再用清华源整体重写:
# 1. 备份现有源文件(用于还原官方源)
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
# 2. 用清华源整体重写 ubuntu.sources
sudo tee /etc/apt/sources.list.d/ubuntu.sources > /dev/null << 'EOF'
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
Suites: resolute resolute-updates resolute-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
Suites: resolute-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
EOF
# 3. 刷新包索引
sudo apt update提示:不同发行版代号对应不同套件(24.04 为
noble),换版本时改Suites行。清华镜像帮助页见 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/。
5.4 验证与还原
# 确认只命中清华源(archive.ubuntu 条目数应为 0)
apt-get indextargets --no-release-info | grep -c "mirrors.tuna" # 清华源条目数
apt-get indextargets --no-release-info | grep -c "archive.ubuntu" # 官方源条目数需要还原官方源时,用备份反向覆盖:
sudo cp /etc/apt/sources.list.d/ubuntu.sources.bak /etc/apt/sources.list.d/ubuntu.sources6. Locale 配置:支持中文显示
导入镜像后,终端默认无法正确显示中文文件名,ls 输出形如:
$ mkdir 测试
$ ls
''$'\346\265\213\350\257\225'
原因:系统默认 locale 为 C.UTF-8,没有启用 UTF-8 中文 locale,中文只能以转义字节显示。
6.1 最小化方案:不装语言包
无需安装 language-pack-* 语言包,只需生成并启用单个 zh_CN.UTF-8 locale:
# 在 /etc/locale.gen 中启用 zh_CN.UTF-8(取消该行注释;若文件里没有这一行则手动追加)
sudo sed -i 's/^# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen
# 生成 locale 文件(必须加 sudo,否则无写权限报 Permission denied)
sudo locale-gen
# 将系统默认 locale 设为 zh_CN.UTF-8(自动写入 /etc/default/locale,无需手动编辑)
sudo update-locale LANG=zh_CN.UTF-8提示:
locale-gen需 root 权限;update-locale是系统级命令,自动修改/etc/default/locale,无需手动编辑配置文件,也不涉及个人 shell 启动文件。
6.2 重启 WSL 生效
当前会话的 locale 不会自动刷新,需完全重启 WSL(在 Windows PowerShell 中执行):
wsl --shutdown重新进入发行版后验证:
locale # LANG 应显示为 zh_CN.UTF-8
ls # 中文文件名正常显示提示:重启前临时验证可执行
export LANG=zh_CN.UTF-8,但该设置只对当前会话有效,重启后失效。
7. 关闭终端响铃
WSL 里的终端响铃来自多个层面,需要逐层关闭。下面只给出正确做法。响铃配置均作用于各自的新会话(新开的 shell / Vim / 终端窗口),无需重启 WSL。
7.1 关闭 Readline 响铃(Tab 补全、命令提示等)
Readline 的响铃由 bell-style 选项控制,正确入口是配置文件 .inputrc:
# 当前用户
echo "\$include /etc/inputrc" >> ~/.inputrc
echo "set bell-style none" >> ~/.inputrc
# 全局生效(影响所有用户)
sudo bash -c 'echo "set bell-style none" >> /etc/inputrc'注意:新建
~/.inputrc会完全取代默认 Readline 配置,因此首行用$include /etc/inputrc保留系统默认行为,避免丢失其他 Readline 特性(如历史搜索)。
7.2 关闭 Bash 自身的响铃
# 当前用户
echo "bind 'set bell-style none'" >> ~/.bashrc
# 全局生效(影响所有用户)
echo "bind 'set bell-style none'" | sudo tee -a /etc/profile.d/no-bell.sh7.3 关闭 Vim 响铃
sudo bash -c "cat >> /etc/vim/vimrc << 'EOF'
set belloff=all
set vb t_vb=
EOF"set belloff=all 关闭 Vim 内部所有响铃;set vb t_vb= 使用可视提示(闪烁)代替响铃。
7.4 关闭 Windows Terminal 的响铃
WSL 终端(如 Windows Terminal)自身也有响铃行为。在 Windows Terminal 的设置中,将对应配置文件的 bellStyle 设为 none(或改为 visual 用视觉提示)。若使用其他终端模拟器,查找其声音/响铃相关设置关闭即可。
7.5 验证
# 查看当前 Readline 的 bell-style 生效值
bind -v | grep bell输出 set bell-style none 即表示 Readline 层已关闭。
提示:修改
.inputrc后,新开的 shell 自动生效;若要在当前 shell 立即生效,执行bind -f ~/.inputrc。
8. 故障排除
8.1 启动报错 0x80370102
错误提示:
WslRegisterDistribution failed with error: 0x80370102
原因:主板 BIOS 未开启硬件虚拟化,或 Hyper-V 相关功能冲突。
解决:
- 重启进入 BIOS/UEFI,开启
Intel VT-x/AMD-V。 - 确认第 1 节的 Windows 功能均已启用。
- 以管理员身份运行
bcdedit /set hypervisorlaunchtype auto后重启。
8.2 apt-get update 缓慢或同时命中多个源
原因:手动往 /etc/apt/sources.list 写入的源与 ubuntu.sources 同时生效(默认 sources.list 全是注释,双源只发生在手动写入时,见 5.4 节)。
解决:用 apt-get indextargets 确认后,只保留一份源配置,再执行 sudo apt update。
8.3 修改 .wslconfig 后不生效
原因:WSL 后台虚拟机仍在运行,配置在启动时读取一次,改动未重新加载。
解决:先确认没有发行版在运行,再完全关停:
# 查看是否仍有发行版在运行
wsl --list --running
# 完全关停所有 WSL 2 实例(约需 8 秒)
wsl --shutdown等约 8 秒后重新进入发行版,配置即生效。
8.4 WSL 内执行 reboot 不起作用
原因:WSL 没有传统意义上的重启流程,reboot 不会按预期重启发行版。
解决:从 Windows 侧终止并重启发行版:
# 终止指定发行版(区别于关闭所有实例的 --shutdown)
wsl --terminate ubuntu-26.04重新 wsl 进入即完成「重启」。
8.5 每次运行 WSL 命令都提示 localhost 代理未镜像
错误提示(示例):
检测到 localhost 代理配置,但未镜像到 WSL。
原因:WSL 默认的 NAT 网络模式下,Windows 上配置的 localhost HTTP 代理不会自动传递到 WSL 内部。
解决:在 Windows 侧 .wslconfig 中开启自动代理,或改用镜像网络模式:
[wsl2]
autoProxy=true # 让 WSL 使用 Windows 的 HTTP 代理信息
networkingMode=mirrored
修改后执行 wsl --shutdown 再进入生效。
8.6 WSL 1 升级到 WSL 2
# 将指定发行版从 WSL 1 升级到 WSL 2(VERSION 列变为 2)
wsl --set-version <发行版名> 29. 总结
WSL 2 是一款运行在 Windows 上的轻量虚拟化方案,通过基于真实内核的 WSL 2 虚拟机与按需启动机制,解决了双系统重启切换与桌面虚拟机资源开销大的问题。配合 wsl --install/MSI 安装、--from-file 导入镜像、APT 换源与 Locale 配置,可以快速搭建一个接近原生、可长期使用的 Linux 开发环境。
掌握 WSL 2 后,你可以:
- 在 Windows 中随时进入 Ubuntu 终端,免重启即可运行 Linux 命令、执行编译、运行脚本。
- 用
wsl --from-file或wsl --import管理多个发行版镜像,互不干扰。 - 用
sudo update-locale启用zh_CN.UTF-8,让终端正常显示中文文件名。 - 在 DEB822 与传统两种 APT 源格式之间正确切换,避免双源踩坑。
建议先按本文完成环境搭建,再逐步探索 systemd 服务管理、Docker(WSL 2 后端)与 WSLg 图形应用,结合镜像网络与代理配置进一步提升使用体验。