上个月升级了Windows 10 2004 版本,发现 WSL 2竟然和 VMWare Workstation 共存了,所以索性把 WSL 也升级到第二代了。
以下命令都是在 CentOS 8 中测试过的。

使用 systemctl 的办法

一代的时候就使用不了systemctl,没想到二代还是一样。

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

幸好,有大佬开发的 Docker 内可用的 systemcl 可以用于 WSL2。

安装 python2

sudo dnf install python2 -y
sudo ln -s /usr/bin/python2 /usr/bin/python

安装替代版 systemctl

sudo mv /usr/bin/systemctl /usr/bin/systemctl.old
curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py >temp
sudo mv temp /usr/bin/systemctl
sudo chmod +x /usr/bin/systemctl

配置自启动

首先 Win + R 输入 shell:startup 打开启动文件夹。

新建一个 VBS 脚本用于启动 WSL。脚本内容

Set ws = WScript.CreateObject("WScript.Shell")        
ws.run "wsl -d CentOS -u root /etc/init.wsl",vbhide

CentOS 是 WSL 实例的名字, root 是用户名。
具体实例名字查看请在 CMD 中执行 wsl -l s-v
最后新增 /etc/init.wsl 脚本。

touch /etc/init.wsl
chmod /etc/init.wsl

init.wsl 内容为启动时需要执行的命令
比如:

# /bin/sh
systemctl start mysqld

设置X11 配置 修改 DNS

修改 ~/.bashrc ,加入如下内容

# Read host ip
export WSL_HOST=`tail -1 /etc/resolv.conf | cut -d' ' -f2`
#export WSL_HOST=127.0.1.1
export DISPLAY=${WSL_HOST}:0
export NO_AT_BRIDGE=1
sed -i '/wsl.host/d' /etc/hosts
echo "${WSL_HOST} wsl.host" >> /etc/hosts

# Change DNS
sed -i '/nameserver/d' /etc/resolv.conf
echo 'nameserver 223.5.5.5' >> /etc/resolv.conf
echo 'nameserver 223.5.6.6' >> /etc/resolv.conf

重新打开 WSL 以后就可以看见 DNS 被修改了

同时可以使用 wsl.host 访问电脑了的服务了比如 CLASH

export HTTP_PROXY=http://wsl.host:7890

当然不要忘记开启允许 LAN 访问

开启 chmod

vi /etc/wsl.conf

[automount]
options = "metadata"

最后

WSL2 性能提升好大啊,毕竟是真虚拟机

搬瓦工年付$187机房套餐补货了,电信联通优化,512M内存/500G流量/1G带宽,建站稳定,优惠码:BWH1ZBPVK,【点击购买】!
搬瓦工年付$28CN2高速线路,512M内存/500G流量/1G带宽,电信联通优化,延迟低,速度快,建站稳定,优惠码同上,【点击购买】!
Last modification:June 18th, 2020 at 10:26 am
If you think my article is useful to you, please feel free to appreciate