WSL 安装及配置
直接安装 WSL2 在非 C 盘
参考 WSL 的手动安装步骤
启用 WSL 功能
首先需要启用 WSL 相关的 windows 功能,win+R 输入 appwiz.cpl 回车 -> 启用或关闭 Windows 功能,然后启用下列三个功能:

前提条件
win11 是默认支持 WSL2 的,如果是 win10 请参考 检查运行 WSL2 的要求
设置默认安装 WSL2
为了安装 WSL2,需要先安装 WSL2 的内核更新包:适用于 x64 计算机的 WSL2 Linux 内核更新包。
下载这个 .msi 文件之后,双击安装可能会因为权限问题导致安装失败,参考 安装程序出现2502、2503错误解决方法:
- 打开“命令提示符(管理员)”
- 在“命令提示符(管理员)”中输入"msiexec /package " +“你将要安装的程序的完整路径及程序名”(注意空格)
- 然后按回车键,安装程序就会自动启动
此外,你可能还需要使用命令将 WSL2 设置为默认版本:
wsl --set-default-version 2
但 win11 似乎默认就是安装 wsl2 ,我没有手动设置,直接安装的。
安装在非 C 盘
至此,所有的准备工作都OK了,从官网页面可以下载想要安装的 Linux 发行版:下载发行版

以我下载的 Ubuntu 22.04 LTS 为例,把下载后得到的 .appx 文件放到 D 盘目录下,然后修改后缀名为 zip ,即 Ubuntu2204-220620.appx -> Ubuntu2204-220620.zip
然后把它解压,得到一个文件夹,如果文件夹中有 ubuntu****.exe ,那就可以了;但是 22.04 版本解压后应该是有若干个 appx ,这时候根据自己的平台把 Ubuntu_2204.0.10.0_x64.appx 或 Ubuntu_2204.0.10.0_ARM64.appx 修改后缀为 zip,然后再一次解压,这一次就可以得到 .exe 了。
双击 ubuntu2204.exe 开始安装,如果出现错误,那么大概率是没有更新 WSL2 的内核,回到前面一节 “设置默认安装 WSL2” 更新内核。
安装时根据向导进行相应的设置即可。不过注意在设置用户名时只能设置小写字母、数字和下划线(不能使用大写字母),如果不符合要求是无法选择 [done] 的。
至此我们已经安装好了 WSL2,在 CMD 中使用命令可以检查我们安装的版本:
wsl -l -v
图形界面
win11 开始原生支持 WSL 的图形界面,参考 在适用于 Linux 的 Windows 子系统上运行 Linux GUI 应用
先决条件
- 需要Windows 11内部版本 22000 或更高版本才能访问此功能。
- 安装与以下系统匹配的驱动程序。:
更新 WSL 以支持 GUI
由于我们已经安装好了 WSL,因此通过 powershell 更新即可:
- 管理员身份运行 PowerShell
- 更新 WSL:
wsl --update - 重启 WSL :
wsl --shutdown
然后就可以安装并运行 GUI 程序了,比如:
sudo apt install gedit -y
gedit ~/.bashrc
配置 WSL2 使用 Windows 网络代理
通过下面脚本可以便捷实现网络代理的设置:./proxyrc.sh set 设置代理,./proxyrc.sh unset 取消代理(以这种方式设置代理只是临时的,重新进入 WSL 需要再一次设置)。
#!/bin/sh
# 获取 windows 主机 IP
hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
wslip=$(hostname -I | awk '{print $1}')
# 代理端口一般是 7890,注意自己去代理软件确认
port="7890"
PROXY_HTTP="http://${hostip}:${port}"
set_proxy(){
export http_proxy="${PROXY_HTTP}"
export HTTP_PROXY="${PROXY_HTTP}"
export https_proxy="${PROXY_HTTP}"
export HTTPS_proxy="${PROXY_HTTP}"
export ALL_PROXY="${PROXY_SOCKS5}"
export all_proxy=${PROXY_SOCKS5}
}
unset_proxy(){
unset http_proxy
unset HTTP_PROXY
unset https_proxy
unset HTTPS_PROXY
unset ALL_PROXY
unset all_proxy
}
test_setting(){
echo "Host ip:" ${hostip}
echo "WSL ip:" ${wslip}
echo "Current proxy:" $https_proxy
}
if [ "$1" = "set" ]
then
set_proxy
elif [ "$1" = "unset" ]
then
unset_proxy
elif [ "$1" = "test" ]
then
test_setting
else
echo "Unsupported arguments."
fi
因为 windows 防火墙的原因,如上设置代理后依然无法使用,因此还需要在 windows 防火墙中设置一个入站规则,参考 wsl2配置使用windows网络代理 。
本文详细介绍如何在Windows系统上安装WSL2,并配置非C盘安装、图形界面及网络代理,适合希望在Windows环境中高效利用Linux环境的用户。
2244

被折叠的 条评论
为什么被折叠?



