WSL 副环境搭建完整流程
一、前置验证
1.1 硬件虚拟化检查
systeminfo | Select-String "Hyper-V"
预期输出:
Hyper-V 要求: 已检测到虚拟机监控程序。将不显示 Hyper-V 所需的功能。
1.3 确认现有 WSL 状态
wsl --list --verbose
二、启用 Windows 功能(如已启用则跳过)
警告
以下命令需要管理员权限。如果现有 WSL 已正常运行,说明功能已启用,可直接跳到第三步。
2.1 检查功能是否已启用
dism /online /get-features /format:table | Select-String "VirtualMachinePlatform|Microsoft-Windows-Subsystem-Linux|HypervisorPlatform"
如果三项都是「已启用」,跳到第三步。
2.2 启用功能
逐条执行,每条会提示需要重启:
dism /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
dism /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism /online /enable-feature /featurename:HypervisorPlatform /all /norestart
2.3 重启
执行完成上述,重启电脑
三、设置 WSL2 默认版本
wsl --set-default-version 2
# 验证 WSL 版本
wsl --version
四、安装 Ubuntu
4.1 查看可用发行版
wsl --list --online
4.2 安装 Ubuntu
wsl --install -d Ubuntu --no-launch
如果下载超时(错误码 0x80072f78),用手动下载方式:
Invoke-WebRequest -Uri "https://aka.ms/wslubuntu" -OutFile "E:\WSL\ubuntu.appx" -UseBasicParsing
Add-AppxPackage -Path "E:\WSL\ubuntu.appx"
Remove-Item "E:\WSL\ubuntu.appx" -Force
4.3 验证安装
wsl --list --verbose
五、首次进入 Ubuntu(设置用户)
wsl -d Ubuntu
按提示设置用户名和密码,然后退出:
exit
# 或
Ctrl+D 快捷键
六、迁移到 E 盘
6.1 关闭 WSL
wsl --shutdown
6.2 创建目标目录
New-Item -Path "E:\WSL\Ubuntu" -ItemType Directory -Force
6.3 导出 Ubuntu
wsl --export Ubuntu "E:\WSL\ubuntu-export.tar"
6.4 注销原有 Ubuntu
wsl --unregister Ubuntu
6.5 导入到 E 盘
wsl --import Ubuntu "E:\WSL\Ubuntu" "E:\WSL\ubuntu-export.tar" --version 2
6.6 清理导出文件
Remove-Item "E:\WSL\ubuntu-export.tar" -Force
6.7 设置默认用户
警告
导入后默认用户变为 root,需要重置。将 <用户名> 替换为你首次进入时设置的用户名:
wsl -d Ubuntu-24.04 -u root -e bash -c "echo -e '[user]\ndefault=wave' >> /etc/wsl.conf"
wsl --terminate Ubuntu-24.04
wsl -d Ubuntu-24.04 -- whoami
七、验证
wsl --list --verbose
预期输出:
NAME STATE VERSION
* Ubuntu Running 2
Debian Stopped 2
Get-ChildItem "E:\WSL\Ubuntu"
预期:看到 ext4.vhdx 文件。
wsl -d Ubuntu -- cat /etc/os-release
预期:显示 Ubuntu 版本信息。
八、使用与删除
日常使用
wsl -d Ubuntu
删除副环境(不影响 Debian)
wsl --shutdown
wsl --unregister Ubuntu
Remove-Item "E:\WSL\Ubuntu" -Recurse -Force
< Back to blog list