wsl2设置代理

wsl2设置代理:

主机 IP 保存在 /etc/resolv.conf 中

最简单的方法:新建一个.proxy文件,内容为

1
2
export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
export all_proxy="socks5://${hostip}:7890"

/etc/resolv.conf中有主机的ip地址。

然后使用的时候:

1
source .proxy

稍微复杂点:在.zshrc 或者是 .bashrc中添加

1
2
3
export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
alias setss='export https_proxy="http://${hostip}:7890";export http_proxy="http://${hostip}:7890";export all_proxy="socks5://${hostip}:7890";'
alias unsetss='unset all_proxy'

在终端输入setss即可使用代理,输入unsetss可取消代理


如果wsl连接不到主机,需要放开 vEthernet (WSL) 这张网卡的防火墙,以及让Clash 等代理软件能通过防火墙。


默认用户

wsl2设置默认用户登录:

1
arch config --default-user root 

安装ohmyzsh

1
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

打开.zshrc,找到ZSH_THEME="robbyrussell",把‘’里的改成自己喜欢的图像,比如我喜欢的lambda

卸载oh-my-zsh:

1
uninstall_oh_my_zsh

安装yay

我WSL2 用的是别人打包好的Arch 。默认的是pacman 的软件管理器,但是如果想从aur中下载软件的话,还是得用上yay。

1
2
3
4
sudo pacman -S git go base-devel
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

而这样运行会遇到go: github.com/Jguer/aur@v1.0.0: Get "https://proxy.golang.org/github.com/%21jguer/aur/@v/v1.0.0.mod": dial tcp 142.251.43.17:443: i/o timeout

的问题,网上搜索出来的解决方案是给Go 配置goproxy。

1
2
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

而在终端输入这些后,goproxy是改过来了,但是makepkg -si依旧失败。
而输入:

1
2
export GO111MODULE=on
export GOPROXY=https://goproxy.cn

则可以继续安装yay了。

WSL迁移

关闭正在运行的WSL

1
wsl -t <DistributionName>

比如Arch,则为:

1
wsl -t Arch

以下皆用Arch代表

1
wsl --export Arch D:\arch.tar

表示将Arch导出到D:\arch.tar

wsl --import <DistributionName> <InstallLocation> <FileName>

表示将导出的wsl文件导入到中。

1
wsl --import Arch D:/Arch/ D:/arch.tar

表示将导出的D:\arch.tar,导入到D:/Arch/文件夹中。

等待几分钟后,即可继续使用Arch-wsl了。此时可以在D:/Arch/文件夹中看到D:\Arch\ext4.vhdx文件了。