一、环境准备与安装
1. 升级 PowerShell
WSL 的诸多新特性(尤其是 --from-file 离线安装)需要 PowerShell 7.x+ 支持。Windows 自带的 5.1 版本在 WSL 集成上已显老旧,建议直接从 GitHub Release 跟进最新版。
Releases · PowerShell/PowerShell
PowerShell-7.6.1-win-x64.msi
2. WSL 预览版更新
Ubuntu 26.04 目前处于 Daily / Beta 阶段,需要 WSL 预览版才能正确识别其 systemd 引导和较新的 syscall 需求。老玩家应该明白,WSL2 内核版本直接决定了对新发行版的兼容性。待 4月23日正式版镜像上线后,以下步骤同样适用。
# 可选操作
wsl --update --pre-release
3. 宿主机 .wslconfig 配置
这是 WSL2 近期最重要的全局配置。networkingMode=mirrored 彻底解决了早期 NAT 模式下端口转发、局域网互通的痛点——宿主机与 WSL2 共享网络命名空间,不再需要繁琐的 netsh interface portproxy。autoMemoryReclaim 则是针对 Vmmem 内存泄漏问题的缓解方案。
cd $HOME
# 设置网络模式和GUI模式
notepad .wslconfig
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
[wsl2]
guiApplications=false
4. Ubuntu 26.04 安装镜像
Ubuntu 26.04 代号 “Resolute Raccoon”(坚毅浣熊)。目前 Daily / Beta 构建已可用;正式版将于 北京时间 2026年4月23日傍晚至4月24日凌晨 陆续上架。届时可将下文链接替换为正式版地址。
Daily(2026-04-20):https://cdimage.ubuntu.com/ubuntu-wsl/daily-live/current/resolute-wsl-amd64.wsl
Beta(2026-03-25):https://releases.ubuntu.com/26.04/ubuntu-26.04-beta-wsl-amd64.wsl
正式版:https://releases.ubuntu.com/26.04/ubuntu-26.04-wsl-amd64.wsl
5. WSL-UI方式安装(可选)
第三方 WSL 管理前端,对多发行版图形化管理比较直观。用命令行 更直接,但图形化工具在导入/导出虚拟磁盘时确实方便。
Running Ubuntu 26.04 on WSL: A Bleeding Edge Guide | WSL UI
6. 命令行安装
--install --from-file 是 WSL 2.4+ 引入的离线安装方式,绕过了 Microsoft Store 的同步延迟和版本锁定。scoop 作为 Windows 包管理器,比手动下载更符合 Unix 玩家的肌肉记忆 。
# 运行powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
iwr -useb get.scoop.sh | iex
scoop install curl
curl.exe -LO https://cdimage.ubuntu.com/ubuntu-wsl/daily-live/current/resolute-wsl-amd64.wsl
wsl --install --from-file .\resolute-wsl-amd64.wsl --name Ubuntu-26.04
二、系统基础配置
1. 用户与权限
WSL 默认以 root 登录,但现代 Ubuntu 全面依赖 systemd user session,长期用 root 会导致不少图形应用和 dbus 服务异常。wsl.conf 中的 [user] 段决定发行版启动时的默认 UID。
# 添加用户
adduser honestqiao
# 设置sudo权限
usermod -aG sudo honestqiao
# 设置默认用户
cat > /etc/wsl.conf <<'EOF'
[user]
default=honestqiao
[boot]
systemd=true
[network]
generateResolvConf=true
[interop]
enabled=true
appendWindowsPath=true
EOF
# 切换用户
su honestqiao
# 设置用户sudo直接进入
echo "`whoami` ALL=(ALL) NOPASSWD:ALL" | sudo tee "/etc/sudoers.d/dont-prompt-$USER-for-sudo-password"
2. APT 加速
apt-fast 本质是对 apt-get 的 wrapper,底层调用 aria2c 做多线程分段下载。对于国内网络环境,建议后续再替换为清华/中科大源。
sudo add-apt-repository ppa:apt-fast/stable
sudo apt-get update
sudo apt-get install apt-fast
# 选择apt-get、Yes
sudo apt-fast update -y
sudo apt-fast upgrade -y
3. 本地中文支持
保证 locale 正确即可。终端字体 渲染最终取决于 Windows 侧的终端模拟器(Windows Terminal / WezTerm / Alacritty),WSL 内部只需提供正确的字符集环境。
sudo apt-fast install -y locales
sudo locale-gen zh_CN.UTF-8
sudo update-locale LANG=zh_CN.UTF-8
4. 时区设置
容器/虚拟机时区同步老生常谈。顺手安装 ca-certificates,避免后续 curl/git 出现证书验证问题。
# 设置时区
sudo apt-fast install -y tzdata ca-certificates
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5. SSH 服务
端口设为 2222 是因为 Windows 10/11 如果启用了 OpenSSH Server,22 端口会直接冲突。ListenAddress 0.0.0.0 配合 mirrored 网络模式后,局域网 IP 的 2222 会直接透传,无需额外端口转发。
# 安装ssh服务
sudo apt-fast install -y openssh-server
# 设置端口和证书登录
sudo nano /etc/ssh/sshd_config
Port 2222
ListenAddress 0.0.0.0
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
PermitRootLogin no
# 重启ssh
sudo systemctl daemon-reload
sudo systemctl stop ssh
sudo systemctl start ssh
sudo systemctl status ssh
6. SSH 公钥部署
WSL2 实例重建后 IP 可能变化,建议通过 Windows 侧的 %USERPROFILE%\.ssh\config 配置 Host 别名,使用 localhost:2222 或固定 WSL 主机名连接。
# wsl内查看地址
ip addr show
# wsl内生成honestqia的秘钥
ssh-keygen -t rsa
# 拷贝主机或者其他电脑的公钥到wsl,以便无证书登录
nano ~/.ssh/authorized_keys
7. 防火墙与远程连接
WSL2 在 mirrored 模式下,流量对 Windows Defender Firewall 是可见的,必须显式放行。老玩家都懂,防火墙规则不清,排障排到怀疑人生。
# 宿主机防火墙设置
New-NetFirewallRule -DisplayName "WSL SSH" -Direction Inbound -LocalPort 2222 -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "WSL2 SSH" -Direction Inbound -LocalPort 2232 -Protocol TCP -Action Allow
# 远程ssh登录
ssh honestqiao@wsl-ip -p 2222
8. 基础工具安装
fastfetch 已替代停止维护的 neofetch,btop 替代 htop。Ubuntu 26.04 默认工具链已升级至 gcc-15。
sudo apt-fast install -y curl wget git fastfetch btop
sudo apt-fast install -y build-essential unzip zip vim net-tools software-properties-common apt-transport-https
三、图形桌面部署
1. 中文字体
WSL2 没有真正的帧缓冲,字体渲染完全依赖 RDP 客户端的本地回显。安装字体是为了避免 GTK/Qt 应用出现 tofu(豆腐块)。
sudo apt-fast install -y language-pack-zh-hans language-pack-zh-hans-base
sudo apt-fast install -y fonts-droid-fallback fonts-wqy-zenhei fonts-wqy-microhei
2. 重启 WSL 实例
修改系统级配置(systemd、网络)后必须冷重启,简单 exit 只会关闭交互式 shell。
# 终止运行
wsl -t Ubuntu-26.04
# 启动运行
wsl -d Ubuntu-26.04
#设置默认
wsl -s Ubuntu-26.04
3. XFCE4 桌面
选择 XFCE 而非 GNOME/KDE 的原因很务实——WSL2 没有真正的 GPU 直通(WSLg 只支持单个应用窗口转发),完整桌面会话通过软件渲染运行,重桌面会导致 Vmmem 内存和 CPU 爆炸。XFCE 是经典 X11 会话,与 xrdp 兼容性最好。
# 安装轻量级桌面 XFCE
sudo apt-fast install -y xfce4 xfce4-goodies -y
4. XRDP 服务
端口 3390 避开 Windows RDP 的 3389。xorgxrdp 提供 Xorg 驱动,比纯 VNC 后端性能更好。有趣的是,WSL2 没有 systemd-logind 的 seat 管理问题,xrdp 在 WSL 下反而比物理机更稳定。
# 安装xrdp
sudo apt-fast install -y xrdp xorgxrdp -y
# 启动xrdp
sudo sed -i 's/^port=3389/port=3390/' /etc/xrdp/xrdp.ini
sudo systemctl start xrdp
sudo systemctl enable xrdp
sudo systemctl status xrdp
5. X会话启动脚本
~/.xsession 是 xrdp-sesman 启动用户会话时读取的入口。startxfce4 必须注入到 /etc/xrdp/startwm.sh,因为该脚本默认尝试启动发行版的默认桌面会话(可能是 GNOME 或 generic Xsession)。
# 当前用户
echo "xfce4-session" > ~/.xsession
# 系统启动脚本
sudo nano /etc/xrdp/startwm.sh
# 在文件的最后两行之前(即 test -x /etc/X11/Xsession && exec /etc/X11/Xsession 之前),添加以下行:
startxfce4
# 重启xrdp
sudo systemctl restart xrdp
6. 连接 XRDP
Windows 远程桌面(mstsc)直接访问 wsl-ip:3390。若使用 mirrored 网络模式,连接 localhost:3390 亦可。建议客户端开启 “持久位图缓存” 以提升响应。
用Windows远程桌面访问 wsl-ip:3390。连接成功后,即可进入完整的 Xfce 桌面环境。首次登录建议顺手验证一下系统状态:
查看桌面环境信息:点击菜单栏「帮助」→「关于 Xfce」,或直接在终端执行 xfce4-about。
查看系统信息:打开终端,运行 fastfetch,可一览内核版本、WSL 发行版、内存占用、CPU 负载等关键信息,确认 26.04 的各项新特性已正确加载。

四、写在最后
磁盘 I/O:WSL2 的 9P 文件系统性能在 /mnt/c 跨系统访问时依然拉胯,大型编译任务建议放在 WSL 的 ext4 虚拟磁盘内(~/ 或 /home)。
备份与迁移:wsl --export Ubuntu-26.04 /path/to/backup.tar 是发行版级快照,比传统虚拟机导出更高效,重建时 --import 即可。
内核选择:如果涉及 eBPF、自定义内核模块,需要参考 Microsoft 的 WSL2-Linux-Kernel 源码自行编译替换。