2022年9月微软官方发布声明,wsl 已经支持 systemd。运行 WSL 2 需要 Windows 10 系统版本 2004+(内部版本 19041+)。或者 Windows 11 系统。微软官方文档:安装 WSL 条件
目录
Toggle在 bios 中开启虚拟化(不同机器方法不同自行百度)
CPU 是 Intel(英特尔)的话,虚拟化技术即 VT(Virtualization Technology);CPU 是 AMD 的话,虚拟化技术即 SVM(Secure Virtual Machine mode)。
虚拟化技术能够令单个 CPU 模拟多个 CPU 并行,将一台电脑分成了多个独立的电脑,每台“虚拟”的电脑上都可以按照需要进行模拟。一台电脑上就可以运行多个操作系统,并且可以在相互独立的“虚拟电脑”内运行而互不影响。
华硕主板+ Intel(英特尔)CPU 开启虚拟化:进入 bios 主界面后,选择Advanced Mode(F7),然后选择Advanced设置,并找到Intel(VMX)Virtuallzation Technology设置项,将默认的 Disable,改成Enabled启用,表示开启 VT 虚拟化。

在 windows 上查看:任务管理器- 性能- CPU –虚拟化:已开启
在 Windows 功能面板中,启用“虚拟机平台”和“WSL子系统”可选组件
在 Windows 中,打开控制面板->卸载程序->启用或关闭 Windows 功能
勾选上“适用于 Linux 的 Windows 子系统”、勾选上“虚拟机平台”(virtual machine platform)。windows 会自动安装组件,然后重启电脑即可。
注意:只需要勾选“适用于 Linux 的 Windows 子系统”、“虚拟机平台”,这两个组件。新版本中显示的是英文virtual machine platform(虚拟机平台)。不需要勾选“hyper-v”组件,也不需要勾选“windows 虚拟机监控程序平台”。


升级 WSL 2 为最新版本
在Microsoft Store 中获取最新版本的 WSL。

安装完毕,然后打开命令行工具:Windows Powershell(管理员),查看 wsl 版本:
# 查看 wsl 版本`wsl --status# 显示如下:`WSL 2
# 查看 wsl 版本`wsl --version # 显示如下: WSL 版本: 2.5.9.0 内核版本: 6.6.87.2-1 WSLg 版本: 1.0.66 MSRDC 版本: 1.2.6074 Direct3D 版本: 1.611.1-81528511 DXCore 版本: 10.0.26100.1-240331-1435.ge-release Windows: 10.0.26100.46522022年9月微软官方发布声明,wsl 已经支持 systemd。
安装 centOS
在Microsoft Store 中查看 GNU/Linux 分发版。里面没有 CentOS-WSL,需要从 github.com 中寻找。地址:CentOS for WSL,这里有适合 wsl2 的centOS9和 centOS8。
Centos Stream 是 Centos 8 之后一个滚动发布的 Linux 分发版。在 2021 年年底,Centos 8 将会停止维护,届时 Centos Stream 将作为 RHEL 的上游分支进行持续更新。在红帽开源开发模式中,红帽在发布红帽企业 Linux 新版本前,会先在 CentOS Stream 上开发红帽企业 Linux 源代码,使 CentOS Stream 成为红帽企业 Linux 未来版本的预览。
第一步:下载最新版:CentOS 9-stream。然后解压 zip 文件。其中包含有两个文件。一个是能安装在 wsl2 上的centOs,一个是根目录系统文件。

第二步:把文件解压到,其他盘,专门用来做 centOS 的系统的位置,其中能搭建开发环境,以及开发程序。例如:E:\wsl\centOS 
第三步:在CentOS安装文件上,用鼠标右键点击,以管理员的身份运行。然等待安装完毕。再然后按回车键。看到多出来一个文件:ext4.vhdx,它式虚拟硬盘。centOS系统文件以及开发安装的文件,都会储存在它里面。

安装 Window Terminal 终端
Window Terminal(Windows终端)集成了Windows上的 PowerShell、cmd、Windows Linux子系统(WSL)三大环境。用来输入 wsl 命令,非常合适。
打开Microsoft Store,搜索 Window Terminal,然后点“获取”。然后等待下载安装。


点击【开始】菜单,拖动【Windows Terminal】图标到桌面,可得到一个桌面快捷方式。还可以把它【固定到任务栏】,便于经常使用。

登录 CentOS
方式一:使用Window Terminal终端,来登录管理 centOS 非常方便。

在Window Terminal终端中,查看。
查看已经安装的全部 wsl 子系统wsl --list查看正在运行的 wsl 子系统 wsl -s关机:wsl --shutdown
方式二:鼠标右击CentOS.exe,并“以管理员身份运行”,即成功登录系统了。

开启 systemd 支持
若要刚安装发行版 centOS,启用 systemd,需要设置:/etc/wsl.conf。登录刚安装 centOS,执行命令:
echo -e "[boot]\nsystemd=true" | tee -a /etc/wsl.conf
此命令会创建/etc/wsl.conf文件,并且写入设置:
[boot] systemd=true # 或者手工写入 vi /etc/wsl.conf
然后,关闭 WSL 分发版 centOS,再重启 WSL 实例。在Window Terminal终端中,执行命令:
停止关闭 centOS 分发版 wsl --shutdown 查看在运行的分发版 wsl --list --running
检测 systemd 支持
然后重新登陆 centOS,判断 wsl 是否已启用 systemd,可通过以下命令查看:
ps --no-headers -o comm 1
如果命令返回的是 init 说明 systemd 未启用,如果是 systemd 那么你的 systemd 已启用成功了。
查看已启用的 systemd service
systemctl list-unit-files --type=service
安装软件包
| cat /etc/os-release | 适用于所有使用systemd的Linux发行版 包括但不限于Ubuntu、Debian、Fedora、CentOS、OpenCloudOS等。 |
| uname -r uname -a | 适用于所有的 linux,包括Redhat、SuSE、Debian、Centos等 |
| lsb_release -a | 此命令适用于所有的 Linux 分发版,包括 RedHat、SUSE、Debian…等分发版。 在默认情况下,Linux 中是不带 lsb_release 命令的,安装命令 dnf -y install redhat-lsb。LSB是Linux Standard Base的缩写,用来显示 LSB 和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v 参数。 |
| cat /etc/redhat-release cat /etc/centos-release | 适用于 RedHat、CentOS |
| cat /proc/version | 当前 centos 版本与 redhat 对应的版本的命令 |
安装工具包
cd /tmp dnf -y install vim dnf -y install wget dnf -y install zip unzip dnf -y install tree
安装 epel-release 源
查看本地源文件
ls -l /etc/yum.repos.d 显示如下: -rw-r--r-- 1 root root 4229 Mar 3 02:30 centos-addons.repo -rw-r--r-- 1 root root 2588 Mar 3 02:30 centos.repo
epel-release源是由 Fedora 社区打造,为 RHEL 及衍生分发版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL之后,就相当于添加了一个第三方源。官方的 rpm repository 提供的 rpm 包也不够丰富,很多时候需要自己编译那太辛苦了,而 EPEL 恰恰可以解决这两方面的问题。
dnf -y install epel-release
再次,查看本地源文件
ls -l /etc/yum.repos.d 显示如下: -rw-r--r-- 1 root root 4229 Mar 3 02:30 centos-addons.repo -rw-r--r-- 1 root root 2588 Mar 3 02:30 centos.repo -rw-r--r-- 1 root root 1519 Dec 2 2021 epel-next.repo -rw-r--r-- 1 root root 1621 Dec 2 2021 epel-next-testing.repo -rw-r--r-- 1 root root 1453 Dec 2 2021 epel.repo -rw-r--r-- 1 root root 1552 Dec 2 2021 epel-testing.repo
安装 packages-microsoft-prod 源
packages-microsoft-prod源是软件包库,是 Microsoft 构建并支持适用于 Linux 系统的各种软件产品,并使它们可通过标准 APT 和 YUM 程序包存储库提供。适用于 Linux 分发版和 Linux 包版本的自动配置存储库。packages-microsoft-prod
cd /tmp wget -c https://packages.microsoft.com/config/rhel/9.0/packages-microsoft-prod.rpm rpm -ivh packages-microsoft-prod.rpm # 清理缓存 dnf clean all # 更新源 dnf makecache
再次,查看本地源文件
ls -l /etc/yum.repos.d 显示如下: -rw-r--r-- 1 root root 4229 Mar 3 02:30 centos-addons.repo -rw-r--r-- 1 root root 2588 Mar 3 02:30 centos.repo -rw-r--r-- 1 root root 1519 Dec 2 2021 epel-next.repo -rw-r--r-- 1 root root 1621 Dec 2 2021 epel-next-testing.repo -rw-r--r-- 1 root root 1453 Dec 2 2021 epel.repo -rw-r--r-- 1 root root 1552 Dec 2 2021 epel-testing.repo -rw-r--r-- 1 root root 206 May 3 11:55 microsoft-prod.repo
升级 CentOS 软件包
只升级所有软件包,不升级操作系统,不升级系统内核。
cd /tmp dnf -y upgrade
卸载 centOS 系统
在某些情况下,需要卸载 wsl 分发系统 centOS 的时候,有两种办法:
方式一:使用Window Terminal终端命令注销来卸载:
停止全部分发版系统 wsl --shutdown 查看正在运行的分发版系统 wsl --list --running 查看已经安装上的全部分发版系统 wsl --list 注销分发版系统 centOS wsl --unregister CentOS9-stream 查看已经安装上的全部分发版系统 wsl --list
虚拟硬盘文件ext4.vhdx,会被清除掉,卸载完成。

方式二:使用Window Terminal终端,先停止分发版系统,然后切换到安装目录下E:\wsl\centOS,运行如下命令:
停止全部分发版系统 wsl --shutdown e: cd wsl/centOS ./CentOS9-stream.exe clean
虚拟硬盘文件ext4.vhdx,会被清除掉,卸载完成。

windown 10 与 wsl 中 centOS 文件互传
windown 10 上的磁盘空间都直接挂在到 centOS 上。
方法一
打开 WSL子系统 centoOS 的 shell 终端,对于 wsl 来说, windows 是挂载/mnt,目录下。列出来本机电脑上的所有磁盘空间。
cd /mnt ls -l

列出来本机电脑上的 E 磁盘空间上的所有文件夹以及文件。
cd /mnt/e ls -l

把 windown 上的文件复制到 centOS
把windown 10上的E盘上 wwww 文件夹下 lanmper,全部复制到 centOS 上的 www 目录下
cp -r /mnt/e/www/lanmper /usr/www/

方法二
在windows上打开资源管理器,输入\\wsl$,然后按回车键。就可以看到所有的子系统。

用鼠标点击wsl的子系统,就能进入centOS的目录,点击任何目录,都能进入 
方法三
打开 WSL子系统 centoOS 的shell终端,输入:
explorer.exe
会打开 window 下目录。即可在资源管理器界面中浏览 WSL 系统的目录数据。
配置WSL2实现与宿主机的网络互通
前言
WSL1 是基于代理的虚拟化技术,它通过将 Linux 系统调用转换为 Windows 系统调用来实现与 Windows 内核的交互。WSL2 则使用了真正的虚拟机技术,它在 Windows主机 上运行一个轻量级的 Linux 内核。
WSL2 无法访问 Windows 的 localhost 网络是由 WSL2 的网络架构所致。WSL2 使用了一个虚拟网络适配器来与 Windows 主机进行通信,这导致 WSL2 无法直接访问 Windows 的 localhost 网络。因此,以往的 WSL2 在访问 Windows 网络时需要将其当作 LAN 的另一个设备,而 Windows 宿主则可以把 WSL 当作本机设备。这导致了很多问题,尤其是梯子方面的。
WSL2 2.0 引入的镜像网络可以解决 localhost 访问问题。启用镜像网络后,WSL2 和 Windows 主机将使用相同的网络,并且可以通过 localhost 访问本机系统上的服务。这意味着你可以在 WSL2 中访问本机系统上运行的应用程序,以及通过本机系统访问在 WSL2 中运行的应用程序。
配置
在Windows的资源管理器的地址栏输入: %UserProfile% ,即可打开当前用户的主目录,创建文件: .wslconfig
[wsl2]
memory=4GB # 分配给 WSL 2 的内存大小
processors=2 # 分配给 WSL 2 的 CPU 核心数
localhostForwarding=true # 是否启用 localhost 转发
[experimental]
autoMemoryReclaim=gradual # 开启自动回收内存,可在 gradual, dropcache, disabled 之间选择
networkingMode=mirrored # 开启镜像网络
dnsTunneling=true # 开启 DNS Tunneling
firewall=true # 开启 Windows 防火墙
autoProxy=true # 开启自动同步代理
sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间
重启WSL
管理员身份运行PowerShell:
- 停止WSL:
wsl --shutdown - 启动WSL:
wsl之后就可以在 wsl 中使用 localhost 的方式来访问宿主机上的服务了。curl http://localhost
其他命令
- 在WSL中查看宿主机的IP:
cat /etc/resolv.conf,输出中 nameserver 后面的地址即是宿主机的IP地址。
WSL2网络模式详解
镜像网络模式(Mirrored Mode)
- # 镜像网络特点:
- – WSL和Windows共享网络栈
- – 使用相同的IP地址
- – 可以通过localhost互相访问 – 防火墙规则统一管理
防火墙问题:是的,Windows防火墙会拦截WSL中启动的服务。你需要手动添加防火墙规则:
# 以管理员身份运行PowerShell,添加防火墙规则New-NetFirewallRule -DisplayName "WSL Service Port" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow
默认网络模式(NAT模式)
如果不使用镜像网络,WSL2默认是NAT模式:
- # NAT模式特点:
- – WSL有独立的虚拟网络(通常是172.x.x.x)
- – Windows作为网关(通常是172.x.x.1)
- – WSL可以访问外部网络,但外部不能直接访问WSL
- – 需要端口转发才能从Windows访问WSL服务
网络模式对比
| 特性 | 镜像模式 | NAT模式(默认) |
|---|---|---|
| IP地址 | 与Windows相同 | 独立的172.x.x.x |
| 本地访问 | localhost直接访问 | 需要端口转发 |
| 防火墙 | 统一管理,需要配置规则 | WSL内部独立 |
| 外部访问 | 直接可达 | 需要复杂配置 |
验证当前网络模式
# 检查WSL实际使用的网络模式
cat /proc/sys/net/ipv4/conf/all/forwarding
# 如果是镜像模式,值为0;NAT模式为1
服务访问测试(镜像模式)
在WSL中启动服务后测试:
# 在WSL中启动服务(比如8080端口)

#检查是否被占用
netstat -ano | findstr :3306
#在windows中放行8080端口
New-NetFirewallRule -DisplayName “WSL_Docker_8080” -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
# 在WSL中测试
curl http://localhost:8080
# 在Windows中测试
curl http://localhost:8080


nat模式:
需要配置代理:~/.bashrc

# Proxy Configuration for Clash for Windows
export http_proxy=”http://192.168.1.11:7890″
export https_proxy=”http://192.168.1.11:7890″
export no_proxy=”localhost,127.0.0.1″
export HTTP_PROXY=”http://192.168.1.11:7890″
export HTTPS_PROXY=”http://192.168.1.11:7890″
export NO_PROXY=”localhost,127.0.0.1″
配置docker desktop
首先安装docker desktop+汉化包:
将汉化包放在C:\Program Files\Docker\Docker\frontend\resources中

打开wsl集成选项
在 WSL 中安装 Docker CLI
# 添加 Docker 官方仓库 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#替换yum源地址 sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# 只安装 Docker CLI(不要安装完整的 Docker Engine) sudo dnf install docker-ce-cli重启wsl

工作原理:
- Docker Desktop 在 Windows 端运行 Docker 守护进程
- WSL 中的 Linux 系统通过 Docker CLI 连接到 Windows 端的 Docker
- 这样你就可以在 WSL 中直接使用
docker命令了
安装nvm–nodejs
#nodejs可以使用nvm安装
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install 21
nvm use 21
#以上为使用nvm安装node21
# 验证版本
node --version 安装claude并配置
npm install -g @anthropic-ai/claude-code
claude –version
curl -O “https://cdn.bigmodel.cn/install/claude_code_env.sh” && bash ./claude_code_env.sh
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "your_zhipu_api_key",
"ANTHROPIC_BASE_URL": "https://open.bigmodel.cn/api/anthropic",
"API_TIMEOUT_MS": "3000000",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1
}
}安装智谱清言claude mcp:
claude mcp add -s user -t http web-reader https://open.bigmodel.cn/api/mcp/web_reader/mcp --header "Authorization: Bearer API_KEY"
claude mcp add -s user -t http web-search-prime https://open.bigmodel.cn/api/mcp/web_search_prime/mcp --header "Authorization: Bearer API_KEY"
claude mcp add -s user zai-mcp-server --env Z_AI_API_KEY=API_KEY -- npx -y "@z_ai/mcp-server"
