由于使用 Vmware 时,有时需要频繁的切换 VPN,结果出现了一些网络问题,因此折腾一下 WSL。
准备
阅读本文默认系统为 Windows 专业版用户,因为家庭版无法开启 Hyper-V(听说可以自行安装,浪子没试过,只要是 windows 电脑拿回来我就给重装专业版了😉)。
配置时的环境和目标:
- Windows 11
- Git Bash
- Arch/Debian 子系统
- WSL2
Git Bash 是浪子在 Windows 下喜欢使用的,Windows 基本全部替换为了这个,Git 相关篇中已经介绍过。如果少侠使用的 Windows 10 以上系统,推荐使用 Powershell 代替 CMD。
话说 CMD 这种东西现在真的还有开发喜欢嘛?
官网教程
Follow me
开启使用 WSL 必需的服务
首先,按下 Windows 徽标键,输入 “启用或关闭 Windows 功能”,勾选 Hyper-V 和 适用于 Linux 的 Windows 子系统,点击确定,然后进行重启。
更新 WSL 内核
下载 wsl 更新补丁 安装后打开自己的终端执行以下命令:
# 更新 wsl 版本
wsl --update
# 查看版本
wsl --version
# 配置 wsl2 为默认版本
wsl --set-default-version 2
如果输出如下内容表示安装成功:
WSL 版本: 2.6.1.0
内核版本: 6.6.87.2-1
WSLg 版本: 1.0.66
MSRDC 版本: 1.2.6353
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26100.1-240331-1435.ge-release
Windows: 10.0.26200.7019
WSL 基本命令
# 查找支持的 Linux 分发版系统
wsl -l -o
# 安装支持的分发版 Linux 系统
# --name 安装的 Linux 名称,后续进入该系统时使此名称
# --location 安装到指定的目录
wsl --install -d [Linux-name] --name [name] --location [path]
# 进入系统时直接到家目录
wsl -d [name] --cd ~
# 以指定用户进入 linux 系统
wsl -d [linux-name] -u [user]
# 关闭所有的 linux 子系统
wsl --shutdown
# 设置默认启动的 linux 发行版,
# 设置完成后可以直接在 bash 中使用 wsl 进行默认的发行版
wsl -s [linux-name]
# 更新 wsl
wsl --update
# 查看 wsl 版本以及默认分发版本
wsl --status
# wsl 版本信息
wsl --version
# 查看安装的 linux 发行版列表、各自的运行状态以及 wsl 版本
wsl -l -v
#这个命就不推荐使用了
# 设置默认的 wsl 版本,Version 替换为 1 or 2
wsl --set-default-version [Version]
# 命令可用于从 WSL 2 降级到 WSL 1,或将以前安装的 Linux 发行版从 WSL 1 更新到 WSL 2。
wsl --set-version [linux-name] [Version]
安装 Arch Linux
借助 ArchWSL 项目进行,官方文档:https://wsldl-pg.github.io/ArchW-docs/locale/zh-CN/How-to-Setup/
如何更新:https://github.com/yuk7/ArchWSL/issues/23
Note
2025.10.30 补充
ArchLinux 官方也提供了 wsl 镜像,可以直接使用,但是需要注意官方版只支持 WSL2。
注意:本文依旧基于开源的ArchWSL项目讲解。
设置 root 用户密码
passwd root
passwd
配置中文环境
编辑 vim /etc/locale.gen 文件,把 zh_CN.UTF-8 UTF-8 这一行取消注释。然后执行以下命令:
# 安装中文字体
sudo pacman -S wqy-microhei
locale-gen
echo "LANG=zh_CN.UTF-8" | sudo tee /etc/locale.conf
source /etc/locale.conf
locale
参考 Arch Wiki
中文字体是需要安装的。
使用 pacman
使用 ArchWSL 时,默认情况下,pacman 是不能直接使用的,需要做一些修改。编辑 /etc/pacman.d/mirrorlist,在文件的最顶端添加:
Server = https://mirrors.bfsu.edu.cn/archlinux/$repo/os/$arch
执行以下命令:
sudo pacman-key --init
sudo pacman-key --populate
sudo pacman -Sy archlinux-keyring
sudo pacman -Su
参考:https://wsldl-pg.github.io/ArchW-docs/How-to-Setup/#initialize-keyring
官方版本不需要此配置。
禁用 cgroup v1
编辑 ~/.wslconfig 文件(不存在就新建),加入以下内容,重启 wsl 子系统。
[wsl2]
kernelCommandLine = cgroup_no_v1=all
.wslconfig用于在 WSL 2 上运行的所有已安装发行版中配置全局设置。wsl.conf用于为在 WSL 1 或 WSL 2 上运行的每个 Linux 发行版按各个发行版配置本地设置。
安装一些工具
首先创建一个普通用户备用
# 安装一个文本编辑工具
pacman -S neovim
# 创建一个常规用户
useradd -m [username]
# 设置用户密码
passwd [usernma]
# 修改 sudoers 文件
nvim /etc/sudoers
编辑 sudoers 文件:nvim /etc/sudoers 找到以下内容行,将其取消注释,保存退出
%wheel ALL=(ALL:ALL) ALL
安装其它工具
sudo pacman -S --needed base-devel
# 切换用户
su - [username]
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
# 退出当前用户,切换为 root 用户
exit
# 安装 podman,oci 运行时选择 crun
paru -S podman
安装 Debian
Debain 的安装就很简单了,少侠完全可以自行安装自己喜欢的 Linux 分发版。
# 查询 Windows 支持安装的 Linux 子系统
wsl -l -o
# 安装指定的系统(如果是旧版本可能需要 -d 选项指定子系统)
# --name 指定安装的 Linux 子系统名称
# --location 指定安装的目录
wsl --install Debian --name [name] --location /d/xxx/wsl
# 安装完成后启动 linux 子系统
wsl -d [name] --cd ~
如果不是使用的 Git Bash,
/d/xxx/wsl路径可能需要替换为D:\xxx\wsl。
安装后配置
镜像源问题请自行百度
# 设置 root 用户密码
sudo passwd root
# 更新系统
sudo apt update && sudo apt upgrade
# 安装一些工具
sudo apt intall -y neovim wget curl ssh iproute2 git
使用 systemd 管理系统服务
浪子当时安装 (小声 bb: 还是 Arch 好用!) 的 Debian 同时存在 systemd 和 sysVinit 初始化程序,但默认使用的 sysVinit,这里把它给替换为 systemd。关于这两个服务在 Linux 入门篇有说明,这里不再赘述。
首先使用以下命令查看系统使用的服务管理工具:
ps -p 1 -o comm=
执行上面的命令后若打印的是 init,就按照下面的操作:
- 编辑文件
/etc/wsl.conf,如果没有该文件,新建文件并加入以下内容保存 - 重启 Linux 子系统。
[boot]
systemd=true
# 默认登录用户
[user]
default=root
如果解决不了,请先升级 wsl 后再次尝试:wsl –update。
附:一些错误
无法解析服务器的名称或地址
wsl -l -o
无法解析服务器的名称或地址
或者以下错误:
无法从“https://raw.githubusercontent.com/microsoft/WSL/master/distributions/DistributionInfo.json”中提取列表分发。无法解析服务器的名称或地址
Error code: Wsl/WININET_E_NAME_NOT_RESOLVED
解决办法:DNS 污染的问题,使用魔法或者一些代理工具吧,修改 HOSTS 文件也可以。
安装启动时 WslRegisterDistribution failed with error
WslRegisterDistribution failed with error: 0x800701bc
Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel
Press any key to continue...
解决办法:下载安装新的 wsl 内核,下载链接在上面,就是那个更新补丁!
docker/podman 运行容器时报错
Error: netavark: unable to append rule '-d 10.88.0.0/16 -j ACCEPT' to table 'nat': code: 4, msg: iptables v1.8.9 (nf_tables): RULE_APPEND failed (No such file or directory): rule in chain NETAVARK-1D8721804F16F
解决办法:
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
参考:https://github.com/microsoft/WSL/issues/6655

说些什么吧!