WSL
安装
wsl --install
这会默认安装 Ubuntu
,可以参照官网介绍(https://learn.microsoft.com/zh-cn/windows/wsl/install#change-the-default-linux-distribution-installed)安装其他发行版
安装完成后重启电脑,在开始菜单中打开 Ubuntu
,打开后根据提示输入用户名和密码创建默认管理员用户。
第一次进入窗口可能会提示如下信息(如果没遇到这个信息可以跳过这一步):
The WSL optional component is not enabled. Please enable it and try again.
See https://aka.ms/wslinstall for details.
Error: 0x8007007e
Press any key to continue...
打开控制面板 ===> 程序 ===> 启用或关闭windows 功能,
系统为64位的 需要勾选 适用于 Linux
的 windows
子系统 、Hyper-v
系统为32位的 需要勾选 适用于 Linux
的 windows
子系统 、虚拟机平台
完成上面设置之后重启电脑即可
升级命令包
WSL
默认的软件源列表(/etc/apt/sources.list
)可能未更新,导致无法找到最新版本的软件包。
许多工具(如 mininet
、wireshark
)位于 Ubuntu
的 Universe
或 Multiverse
仓库中,但 WSL
默认可能未启用这些仓库。启用 Universe
/Multiverse
仓库:
sudo apt update && sudo apt upgrade
sudo add-apt-repository universe
sudo add-apt-repository multiverse
配置命令行 zsh
理想当中的命令行:
- 好看(配色、字体可以自由设定);
- 支持 UTF-8 字符的输入与显示;
- 支持常见的 *NIX 命令行工具(cat、grep、awk 等);
- 自动补全、语法高亮、历史记录;
- 完善的复制粘贴支持;
- 互操作性(共享文件系统、网络栈,可调用 Win32 程序);
- 支持常用的脚本语言(PHP、Python、Node.js 等);
- 包管理器,以及其他各种常用软件的支持;
- 快速呼出(快捷键、右键菜单入口)。
安装 zsh:
sudo apt install zsh
设置 zsh 为默认命令行:
chsh -s $(which zsh)
运行后需要输入密码,之后重启终端即可看到设置生效了,也可以通过 echo $SHELL
命令查看当前命令行是否是 /bin/zsh
zsh 配置 Proxy(不在国内可以跳过)
注意:它仅仅只用来配置 zsh,安装了 oh-my-zsh 后就会失效,因为
~/.zshrc
会被覆盖。
如果遇到:「wsl: 检测到 localhost
代理配置,但未镜像到 WSL。
NAT 模式下的 WSL 不支持 localhost
代理。」,
可以在 C:\Users\[username]
目录下创建 .wslconfig
文件,写入:
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
然后在 PowerShell 中用 wsl --shutdown
命令关闭 WSL
,再重启终端。
WSL2
的网络是连接自 Windows
的一个单独网络,所以无法直接使用到 Windows
中开启的代理,但是可以通过设置代理为 Windows IP
+ 代理端口号实现
首先在代理软件中开启「允许来至局域网的连接」
「本机 sockets
端口」对应的端口号也就是 Windows
代理的端口号,而一般我们在 Clash
中使用的 http
端口号,则为 sockets
端口 + 1。
假设我们用到的是 9090
.
Windows IP
地址是可能变化的,可以利用上面提到的 WSL
网络连接自 Windows
这一点,从 /etc/resolv.conf
文件中自动获取
之后通过 code ~/.zshrc
或 vim ~/.zshrc
在 zsh 配置中添加:
host_ip=$(cat /etc/resolv.conf | grep "nameserver" | cut -f 2 -d " ")
proxy_port=10809
alias proxy="all_proxy=http://$host_ip:$proxy_port"
运行
source ~/.zshrc
让配置生效,之后运行:
curl www.google.com # 失败
proxy curl www.google.com # 成功
你可以看到,当我们在 curl
请求命令前增加 proxy
,这就意味着我们使用了 windows
代理进行了访问。随后的 oh-my-zsh
的安装就说明了这一点。
如果还是无法正常使用代理,可能是因为防火墙的原因,可以在 Windows 命令行中以管理员身份执行:
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow
防火墙设置如果遇到:「New-NetFirewallRule : The specified interface was not found on the system.」,需要将命令中的 vEthernet (WSL)
替换为「Windows Defender 防火墙属性 -> 公用配置文件 -> 受保护的网络连接-自定义」中实际的 vEthernet-WSL
名称
配置 oh-my-zsh
运行命令安装 oh-my-zsh
proxy curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
随后安装:
- zsh-syntax-highlighting:提供语法高亮功能
- zsh-autosuggestions:根据历史命令提供建议
运行:
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
随后在 ~/.zshrc
中,修改主题和插件:
plugins=(
git
sudo
z
zsh-autosuggestions
zsh-syntax-highlighting)
ZSH_THEME="agnoster"