1.Install
省略...
2.Config
官方参考链接:https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config
2.1 启用 systemd
若要启用 systemd需版本 0.67.6+ 的 WSL 才能启用系统化wsl --version检查 WSL 版本,请使用sudo管理员权限在文本编辑器中打开文件wsl.conf,并将以下行添加到/etc/wsl.conf(这个文件原本是没有,就是创建新的):
[boot]
systemd=true
[network]
generateResolvConf = false
[user]
# 启动的默认用户,设为root吧,不然以后命令都要加sudo有点麻烦
default = root
然后,需要使用 PowerShell 关闭 WSL 分发 wsl.exe --shutdown 版来重启 WSL 实例。 分发重启后,系统应运行。 可以使用以下命令进行确认: systemctl list-unit-files --type=service这将显示服务的状态。
2.2 WSL2 设置桥接模式(或固定IP)
2.2.1 前提条件
①至少 Windows 11 22H2
②安装hyper-v
2.2.2 hyper-v 新建交换机
![](https://img-blog.csdnimg.cn/img_convert/5f355086c440424fbcd7fdc803d49784.png)
创建完可能会没网,自己在网络设置里把inet4 勾上保存就ok了。
2.2.3 查看现有交换机
管理员身份打开powershell,执行命令get-VMSwitch查看交换机。
2.2.2创建完就会出现下面的结果。
PS C:\Windows\system32> get-VMSwitch
Name SwitchType NetAdapterInterfaceDescription
---- ---------- ------------------------------
WSL External Realtek Gaming GbE Family Controller
Default Switch Internal
2.2.4 wsl2启动配置
参考链接:https://zhuanlan.zhihu.com/p/593263088
在用户目录 %USERPROFILE% 下面创建一个配置文件 .wslconfig,按照如下配置方法设置网络:
[wsl2]
networkingMode=bridged # 桥接模式
vmSwitch=WSL # 这个地方填的就是2.2.3查看的Name,也就是2.2.2创建的hyper-v交换机。
ipv6=true # 启用 IPv6
2.2.5 重启wsl
最后重启wsl,桥接模式就配置好了,可以重启电脑,看IP还变不变。
wsl --shutdown #关闭
ws #启动
2.3 重置root密码
1、以管理员身份打开 PowerShell ;
2、输入命令 wsl.exe --user root ;
3、命令 passwd root 修改 root 用户密码。
4.常见报错
4.1 Redirecting to /bin/systemctl start sshd.service
Redirecting to /bin/systemctl start sshd.service
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
解决办法:
①上面的2.1 启用 systemd(推荐)
②手动启用
参考链接:https://blog.csdn.net/weixin_37887116/article/details/114332019
mkdir -p /var/run/sshd
/usr/sbin/sshd -D &
若报错:
Unable to load host key: /etc/ssh/ssh_host_rsa_key
Unable to load host key: /etc/ssh/ssh_host_ecdsa_key
Unable to load host key: /etc/ssh/ssh_host_ed25519_key
sshd: no hostkeys available -- exiting.
则输入:
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
/usr/sbin/sshd -D & # 此时应该不会报错
最后查看ssh状态:
netstat -apn | grep ssh