WSL 安装
WSL 安装(以 Win 10 为例)
- 前提条件
- 需要加入 Windows 预览体验计划并安装 Windows 10 的预览版(OS 版本 20262 或更高版本)
- 需使用管理员权限打开命令窗口
- 执行
wsl --install命令将执行以下操作: - 启用可选的 WSL 和虚拟机平台组件
- 下载并安装最新 Linux 内核
- 将 WSL 2 设置为默认值
- 下载并安装 Linux 分发版(可能需要重启)
wsl --install -d <Distribution Name>指定安装的发行版本wsl --list --online查看可用发行版本
手动安装 WSL(不推荐)
- WSL2 需要 Win10 的特定版本以上
- Windows 键 + R 调出运行,输入
winver确定来检查 Windows 版本
- 以管理员身份打开 PowerShell 并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart- 启用“适用于 Linux 的 Windows 子系统”可选功能
- 只是安装 WSL 1 的话后续步骤可以都不管
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart- 启用“虚拟机平台”可选功能
- 重新启动计算机,以完成 WSL 安装
- 根据架构下载并安装 Linux 内核更新
- 设置 WSL 默认版本
wsl --set-default-version 2
- Microsoft Store 安装所选 Linux 分发版
ms-windows-store://collection?CollectionId=LinuxDistros- 在文件路径里输入即可打开 Microsoft Store
- 或者命令行下载
Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile Ubuntu.appx -UseBasicParsingcurl.exe -LR -o ubuntu-2004.Appx https://aka.ms/wslubuntu2204- curl 工具需要另外安装
- 查看当前 WSL 安装
wsl --list --verbose
通过 .wslconfig 文件全局配置 wsl2
- 也可以打开
C:\Program Files\WSL\wslsettings\wslsettings.exe调用 WSL 图形设置页面
.wslconfig 文件位置
- 需要先创建对应文件
touch C:\Users\%USERNAME%\.wslconfig
C:\Users\%USERNAME%\.wslconfig
配置 .wslconfig 文件
- 以下配置均需要 Win 11 系统支持
启用镜像模式网络(与本地代理软件不兼容)
- 将 WSL 更改为一个全新的网络架构,其目标是将 Windows 上的网络接口“镜像”到 Linux,以添加新的网络功能并提高兼容性
- 目前启用此模式的好处如下
- IPv6 支持
- 使用本地主机地址
127.0.0.1从 Linux 内部连接到 Windows 服务器。不支持 IPv6 本地主机地址::1 - 改进了 VPN 的网络兼容性
- 多播支持
- 直接从局域网 (LAN) 连接到 WSL
- 如果搭配 mihomo 等代理软件可能会出现网络配置初始化异常,此时请回退 nat 模式
自动代理
DNS 隧道
- 让 WSL 使用虚拟化功能从 WSL 内部应答 DNS 请求,而不是通过网络数据包请求
整体配置如下
- mirrored 模式如果搭配 mihomo 等代理软件可能会出现网络配置初始化异常,此时请回退 nat 模式
修改后需要关闭后重启 WSL
wsl --list --running
wsl --terminate <name>- 关闭特定 WSL 容器
wsl --shutdown- 关闭全部
WSL 网络初始化异常,回退到 VirtioProxy 模式,修复网络问题
- 参考资料
zhuanlan.zhihu.com
zhuanlan.zhihu.com
- 根本原因是Hyper-V的虚拟交换机组件有问题
- 先尝试管理员启动 Powershell 执行启用虚拟交换机组件看是否能恢复
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
- 需要 WSL 系统已经开启 systemd 支持,用于后续 wsl-vpnkit 的自动启动
- 参考下面的对应章节
- 需要添加 wsl-vpnkit,获取最新版
在 wsl-vpnkit 对应路径打开 powershell,导入 wsl-vpnkit 到 WSL 容器
wsl --import wsl-vpnkit --version 2 $env:USERPROFILE\wsl-vpnkit wsl-vpnkit.tar.gz- 导入为
wsl-vpnkit容器
wsl.exe -d wsl-vpnkit --cd /app wsl-vpnkit- 启动
wsl-vpnkit容器
此时再启动默认的 WSL Ubuntu 容器,测试网络是否正常
wsl ping 1.1.1.1
wsl ping www.baidu.com- dns 解析正常
配置 WSL Ubuntu 容器自动启动 wsl-vpnkit
wsl -d Ubuntu
cp /mnt/e/wsl-vpnkit.tar.gz /opt/vpnkit/wsl-vpnkit.tar.gz- 可以不用下载直接复制本地文件
- 不要删除 wsl-vpnkit 容器,wsl-vpnkit 服务依赖于 wsl-vpnkit 容器
wsl --list --verbose
WSL 容器开启 systemd 支持
wsl.config 文件位置
/etc/wsl.conf- 容器内部
\\wsl$\<distro-name>\etc\wsl.conf- windows 通过网络文件夹直接访问
配置 wsl.config 文件
开启 systemd 支持
wsl.config 样例文件
修改后需要重启 wsl
wsl --shutdown
wsl --list --running
确认是否开启
wsl -d <distro-name> -e /bin/shsystemctl list-unit-files --type=service
WSL 系统配置 DNS
参考资料
- 或者直接配置
.wslconfig文件启用dnsTunneling=true
配置 wsl.config 文件
禁止自动生成 hosts 文件和 resolv.conf 文件
取消现有的 resolv.conf 符号链接并创建新的 resolv.conf
sudo unlink /etc/resolv.conf
sudo vim /etc/resolv.conf
sudo chattr -f +i /etc/resolv.conf- 禁止修改,否则重启后还是会变更
systemctl status systemd-resolved
- Author:白鸟3
- URL:https://blog.kun2peng.top/operation/windows_wsl_configure
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
