wsl2安装这里不介绍了,自己搜索下。安装完成之后就可以去“Microsoft store”下载自己需要的linux版本, 有ubuntu,openSUSE等,我这里介绍的是以OracleLinux9为例。
1. 在虚拟子系统中新建/etc/wsl.conf文件
执行vi /etc/wsl.conf 命令创建以文件内容:
[network]
# 设置虚拟主机的名称,默认的不好看
hostname = OracleLinux9
# 取消自动生成resolv.conf文件,这个是关键点
generateResolvConf = false
[user]
# 启动的默认用户,设为root吧,不然以后命令都要加sudo有点麻烦
default = root
如果当前不是root用户,命令前加上sudo,下面的命令同样注意下。
2. 重置resolv.conf文件
执行命令:
rm /etc/resolv.conf
刚开始这是一个链接文件
然后新建一个文件,执行 vi /etc/resolv.conf 命令,加入以下内容:
nameserver 114.114.114.114
nameserver 180.76.76.76
表面上看起成功了,你在windows终端中执行命令:
wsl --shutdown
关闭全部的虚拟系统,然后再手工开启虚拟系统后,发现resolv.conf消失了。
看到网上的另一种方法:
vi ~/.bashrc
编辑上面的文件,加入以下内容:
echo "nameserver 114.114.114.114
nameserver 180.76.76.76" > /etc/resolv.conf
保存后,再重启;执行ping lu.com 命令就成功了
3. 编写固定IP的启动虚拟系统的脚本
随便在windows的目录下,用记事本创建一个.bat文件,内容如下:
@echo on
REM 先关闭虚拟子系统
wsl --shutdown
REM 把这里理解为一个开机启动脚本就行
wsl -d OracleLinux_9 -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0
wsl -d OracleLinux_9 -u root ip addr add 192.168.60.2/24 broadcast 192.168.60.255 dev eth0
wsl -d OracleLinux_9 -u root ip route add 0.0.0.0/0 via 192.168.60.1 dev eth0
powershell -c "Get-NetAdapter 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False; New-NetIPAddress -IPAddress 192.168.60.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'; Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False; New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 192.168.60.0/24;"
REM 启动对应Linux系统,我这里是使用windows terminal
wt -p OracleLinux_9
注意事项
192.168.60.2为你的子系统IP地址,你可以把它改为你其它地址,只要最后一个数字要大于1即可,比如:192.168.60.8;或都把192.168.60网段全部替换为192.168.80也行。
OracleLinux_9 替换为你的子系统名称,可以通过wsl -l 命令来查看,如下图:
保存好你的bat文件,鼠标右键“以管理员身份运行”,就可以进入你的虚拟子系统了,执行ip addr命令查看你的IP地址,发现已经固定。
参考文章:
微软官网
张子庭博客