个人学习工作记录

0%

WSL2 个人学习笔记

归纳总结一些自己在使用 WSL2 时,遇到的坑(持续更新…)

关于 Remote-WSL 的权限问题

目前 Remote-WSL 还不能支持直接使用 sudo 命令来打开文件,目前最好的办法还是通过设置文件权限来使 VSCode 打开高权限的文件。

1
sudo chmod -R 777 FILES/

如果实在不放心,还是使用终端 sudo + Vim 之类的工具吧。

关于网络代理

由于 WSL 新的架构,使得 WSL2 不能使用本地代理 127.0.0.1 来进行设置代理。
这时候需要使用以下方法来寻找代理 IP。

直接在 WSL 中运行:

1
ipconfig.exe | grep -n4 WSL  | tail -n 1 | awk -F":" '{ print $2 }'  | sed 's/^[ \r\n\t]*//;s/[ \r\n\t]*$//'

返回的结果便是我们 win 主机的 IP。

如果以上办法失效,则采用以下手动的办法:

1
2
3
4
5
6
7
8
9
10
ifconfig -a
--------------------------------------------------------------------------------
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.28.144.10 netmask 255.255.240.0 broadcast 172.28.159.255
inet6 fe80::215:5dff:feed:a3b9 prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:ed:a3:b9 txqueuelen 1000 (Ethernet)
RX packets 62632 bytes 56514789 (56.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28017 bytes 32116039 (32.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

其中 inet 172.28.144.10 字段后部便是我们 WSL2 的 IP,那么我们便可将代理地址设置为 172.28.144.1

以 Git 设置代理为例

在以前的 WSL 中,我们设置代理的方法是:

1
git config --global http.proxy http://127.0.0.1:1080

而现在,在 WSL2 中,应该设置为:

1
git config --global http.proxy http://172.28.144.1:1080

此处为举例,具体的协议、地址、端口以个人为准。

关于 Hyper-V

由于我之前装的有 MUMU 模拟器,MUMU 模拟器是需要关闭 Hyper-V 的,这与 WSL2 的要求相冲突。并且我使用的是 MUMU 模拟器官方一键关闭 Hyper-V 的脚本进行关闭的,但是官方并没有给出开启的办法,所以此处记录一下。

打开编辑查看官方脚本就能看见,使用 Dism 工具关闭了相关服务,所以打开很简单,只需要在 Powershell(管理员模式)运行下列内容:

1
2
3
4
5
6
7
dism /Online /Enable-Feature:microsoft-hyper-v-all /NoRestart
dism /Online /Enable-Feature:IsolatedUserMode /NoRestart
dism /Online /Enable-Feature:Microsoft-Hyper-V-Hypervisor /NoRestart
dism /Online /Enable-Feature:Microsoft-Hyper-V-Online /NoRestart
dism /Online /Enable-Feature:HypervisorPlatform /NoRestart
bcdedit /set hypervisorlaunchtype auto
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V

之后提示是否重启,按 y 重新启动即可。