WSL2 安装配置
自从把老旧的 MBP 处理掉后一直都在 Linux 上写代码,但是最近觉得 Windows/Ubuntu 双系统之间来回切换太麻烦了,同时在虚拟机中运行 Linux 又有些慢,所以想尝试一下 WSL2。
主要记录一下 WSL2 相关的安装与配置,Linux 相关的如镜像、各种环境设置就省略了。
安装
作为一个有点 “精神怪癖” 的人,我基本不把任何软件装在 C 盘,而 WSL2 的默认安装虽然很方便,但是会把系统装在 C:\Users\<name>\AppData\Packages\xxx.UbuntuonWindows.xxx 下(Windows 糟糕的路径设置真让人痛苦),因此我选择使用手动安装。
启用 WSL:以管理员身份运行 PowerShell,并输入以下命令
1
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
启用虚拟机功能:以管理员身份运行 PowerShell,并运行以下命令后重启计算机
1
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
下载安装 Linux 内核更新包
将 WSL2 设置为默认版本
1
wsl --set-default-version 2
下载适用于 WSL 的发行版,各个发行版的链接微软官方手册有说明,这里我使用 Ubuntu 20.04
下载得到的 Linux 发行版都是以
.appx格式结尾。首先把文件移动到你想要的位置,如F:\WSL2\,之后将该文件重命名为.zip并解压。解压后你能找到一个名为xxx_x64.appx的文件,再次重命名为.zip并解压。解压之后能找到名为ubuntu.exe的文件,双击安装后根据提示设置用户名和密码即可完成。
WSL2 2.0 解决网络问题
Win11 23H2 之后,WSL2 2.0 版本带来了一些更新:
- 支持自动回收内存
- 支持自动释放 WSL2 虚拟硬盘空间
- 支持和 Windows 使用相同的网络(镜像网络)
- 支持 DNS Tunneling
- 支持同步 Windows 代理
- 支持 Windows 防火墙
- 支持 Multicast
所需要做的配置为:在 C:\Users\<UserName>\ 目录下创建 .wslconfig 文件,并写入内容:
1 | # Settings apply across all Linux distros running on WSL 2 |
WSL2 内设置代理
我是选择使用 proxychains-ng 而不是设置 export http_proxy... 之类的方式。
首先是 Windows 在 WSL2 中的 IP 是动态变化的,要获得该 IP 地址可以通过以下命令
1
cat /etc/resolv.conf | grep nameserver | awk '{print $2}'
安装 proxychains-ng:
sudo apt install proxychains4创建配置文件
1
2
3
4mkdir ~/.proxychains
sudo cp /etc/proxychains4.conf ~/.proxychains/proxychains.conf
sudo chown $(whoami) ~/.proxychains/proxychains.conf
sudo chgrp $(whoami) ~/.proxychains/proxychains.conf确保运行在 Windows 上的代理软件允许局域网访问,同时记录
socks5的端口,准备下一步使用在
~/.proxychains下创建proxy.sh文件,记得填写上一步得到的端口号1
2
3
4
5
6
7
8
# Get the IP of Windows
WIN_IP=$(< /etc/resolv.conf grep "nameserver" | awk '{print $2}')
# Delete the old configuration of socks5
sed -i '/socks5/d' ~/.proxychains/proxychains.conf
# Add new configuration of socks5
sed -i '$a socks5 '"${WIN_IP}"' <port>' ~/.proxychains/proxychains.conf修改
.zshrc或.bash_profile文件,添加以下内容1
2# proxychains-ng settings for WSL2
source ~/.proxychains/proxy.sh测试
1
proxychains curl -I https://www.google.com
其他
- 拷贝 Windows 中的文件到 WSL2:Windows 中的硬盘挂载在
/mnt/下,直接使用cp命令即可。