WSL 安装及配置
- 直接安装 WSL2 在非 C 盘
- 启用 WSL 功能
- 前提条件
- 设置默认安装 WSL2
- 安装在非 C 盘
- 图形界面
-
- 配置 WSL2 使用 Windows 网络代理
直接安装 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 的 Intel GPU 驱动程序
- 适用于 WSL 的 AMD GPU 驱动程序
- 适用于 WSL 的 NVIDIA GPU 驱动程序
更新 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
hostip=$(cat /etc/resolv.conf | grep nameserver | awk '{ print $2 }')
wslip=$(hostname -I | awk '{print $1}')
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网络代理 。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)