WSL2从零开始搭建网站开发环境系列01:安装wsl2
自动安装:https://docs.microsoft.com/zh-cn/windows/wsl/install
手工安装:https://docs.microsoft.com/zh-cn/windows/wsl/install-manual (我使用这个)
安装ubuntu
先看下有哪些分发,
Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。
安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows
PS C:\Users\MOREFINE> wsl --list --online
以下是可安装的有效分发的列表。
使用 'wsl.exe --install <Distro>' 安装。
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS # 我准备安装这个
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.5 openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed openSUSE Tumbleweed
从上面选择一个适合自己的Linux系统
前提:确保github可以正常访问
PS C:\Users\MOREFINE>wsl --install -d Ubuntu-20.04
# 系统用户名:xishui
# 密码:yizhong
记得在启用或关闭windows功能
中,开启Hyper-V
WSL2上网配置(静态ip,配置dns)
配置WSL2
- 微软官方文档:https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config
- 全局配置:https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config#wslconfig
- 发行版配置:https://learn.microsoft.com/zh-cn/windows/wsl/wsl-config#wslconf
下面我只设置了发行版(Ubuntu 20.04)配置,wsl2启动时,会读取配置文件/etc/wsl.conf
,默认没有,可以 sudo vi /etc/wsl.conf
新建,内容如下:
[network]
# 设置虚拟主机的名称,默认的不好看
hostname = verygood
# 取消自动生成resolv.conf文件,这个是关键点
generateResolvConf = false
[user]
# 启动的默认用户,设为root吧,不然以后命令都要加sudo有点麻烦
default = root
[boot]
systemd=true
退出ubuntu回到dos环境下,wsl --shutdown 关闭wsl后再重新进入 ,变成
root@verygood:~#
设置静态ip
由于每次wls重新启动,ip地址都会改变,下面将计划将windows和ubuntu中的ip固定
- windows:172.21.0.1
- ubuntu: 172.21.0.2
思路:
- ubuntu中读取ip,
ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | head -n 1
– 删除上面读取的ip,ip addr del xxx
– 添加新的ip:172.21.0.2
- windows中删除现有ip,添加新的ip
新建批处理文件
新建批处理文件(文件名任意) wsl2_2023-10-23.bat
,格式为ansi,内容如下
@echo on
REM 第一步:先关闭虚拟子系统
wsl --shutdown
REM 第二步:ubuntu删除ip,Ubuntu-20.04是我安装的分发,wsl --list查看自己的
wsl -d Ubuntu-20.04 -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0
REM 第三步:Ubuntu中添加指定的ip,为WSL网卡添加一个IP 172.21.0.2 进行通讯, Win 侧可以通过 172.21.0.2 访问 Linux 侧
wsl -d Ubuntu-20.04 -u root ip addr add 172.21.0.2/24 broadcast 172.21.0.255 dev eth0
wsl -d Ubuntu-20.04 -u root ip route add 0.0.0.0/0 via 172.21.0.1 dev eth0
REM 第四步:windows删除原来的ip,添加新的ip,首先找到 vEthernet (WSL) 这个网络适配器,然后将其所有已有的 IP 地址删除,然后为其添加 172.21.0.1/24 的 IP 地址。
powershell -c "Get-NetAdapter -includehidden 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False; New-NetIPAddress -IPAddress 172.21.0.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'; Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False; New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 172.21.0.0/24;"
REM 第五步:启动对应Linux系统,我这里是使用windows terminal
wt -p Ubuntu-20.04
然后以管理员身份运行该批处理文件。
开机自启动
开机自启动未设置成功,待完善
- wsl2_2023-10-23.bat 文件放在任意位置,在桌面生成快捷方式
- 快捷方式以管理员身份运行,手工双击快捷方式就可以
【没效果】批处理或快捷方式放在 shell:startup 和 shell:common startup命令打开的目录下,显示开机已运行,但实际没效果,改用任务计划程序也不行
配置DNS
先删除 /etc/resolv.conf
# 修改属性可写
root@verygood:/mnt/c/Users/Admin# sudo chattr -i /etc/resolv.conf
root@verygood:/mnt/c/Users/Admin# rm -f /etc/resolv.conf
修改 /etc/resolv.conf
root@verygood:/mnt/c/Users/Admin# echo "nameserver 172.21.0.1" > /etc/resolv.conf
root@verygood:/mnt/c/Users/Admin# echo "nameserver 114.114.114.114" >> /etc/resolv.conf
修改属性只读
root@verygood:/mnt/c/Users/Admin# sudo chattr -f +i /etc/resolv.conf
目录映射(软链接)
根据自己实际情况将window中指定目录映射到ubuntu中
sudo ln -s /mnt/e/各大网盘同步盘/阿里云盘/19936926974/网站开发/www-1-clients /www1
sudo ln -s /mnt/e/各大网盘同步盘/阿里云盘/19936926974/网站开发/www-2-in_progress /www2
sudo ln -s /mnt/e/各大网盘同步盘/阿里云盘/19936926974/网站开发/www-3-study /www3
填坑
原因:与Raidrive冲突,我使用 Raidrive
和 Alist
挂载网盘到本地,会报错:\wsl.localhost无法打开,会弹出“没有使用网络资源的权限,请与管理员联系"。
解决:暂时没有好的解决办法,改为在资源管理器地址栏里输入: \\wsl$
进入ubuntu