WSL踩坑与解决

安装WSL

  1. Powershell用管理员方式打开,然后运行以下命令
  • 启用适用于 Linux 的 Windows 子系统功能(也可以到服务里面打开)
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  • 启用虚拟机功能
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. 重启系统,然后Powershell管理员方式运行下面命令
  • 设置默认用WSL2,而不是WSL1(更新一下,现在默认的是2了,这个不用设置)
wsl -s 2
  1. 更新适用于 x64 计算机的最新 WSL2 Linux 内核更新包,旧的内核包是安装Linux发行版会出问题的
wsl --update
  1. 更新最新内核包完成后,既可以用命令行的方式安装,也可以到微软商店查找然后安装分发版,命令行方式如下
  • Powershell里使用以下命令,查看可以用于安装的分发版
wsl -l -o
  • 安装自己喜欢的版本
wsl --install -d 分发版的名字(例如Ubuntu-20.04)
  1. 安装完成后,自己输入用户名密码就进入子系统了(默认用户,可以用--user 用户名选择登录用户,忘记密码时可以用--user root进去,然后改密码,--cd 可以决定进入分发版后的用户主目录,例如--cd ~),
wsl -d Ubuntu-20.04

wsl2子系统的一些配置(非常有用)

  1. 为该虚拟机网卡添加防火墙规则,解决与宿主机网络不通问题,在windows系统的PowerShell管理员模式下输入如下命令。
# 这个是入站规则(-InterfaceAlias 后面设置的是具体的网卡的名字,不同机器可能不一样)
New-NetFirewallRule -DisplayName "WSLInbound" -Direction Inbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow
# 这个是出站规则(-InterfaceAlias 后面设置的是具体的网卡的名字,不同机器可能不一样)
New-NetFirewallRule -DisplayName "WSLOutbound" -Direction Outbound  -InterfaceAlias "vEthernet (WSL)"  -Action Allow
  1. 替换wsl2镜像源并升级软件包,命令步骤如下
# 切换root用户
sudo su
# 修改镜像源
将/etc/apt/sources.list中类似这样的
deb http://archive.ubuntu.com/ubuntu/ focal main restricted
其中的url换成阿里的
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted
# 更新包管理器的存储库索引
apt update
# 升级安装包并自动解决依赖关系
apt full-upgrade

下面的这个第三步wsl2已经改了,其ip不是用dhcp的方式了,现在就是static的方式,官方改了一下,非常的nice,这样就不用配置启动脚本了
3. 在子系统内设置一个脚本,把wsl2的dhcp地址对应一个域名(我这里是ubuntu20),然后每当启动wsl2的时候把这个对应的关系写入windows的hosts文件,让自己的windows程序可以hosts文件中的对应关系得到wsl2的dhcp出来的ip。以后自己想要连接子系统的程序,只用填域名就行。命令步骤如下

# 暂时借用root权限
sudo su
# 编辑/etc/profile
vim /etc/profile

再profile后面加上这三条命令

# 获得子系统ip
ipaddr=$(ifconfig eth0 | grep 'inet ' | awk '{print $2}')
# 删除之前配置的DNS解析信息
sed -i '/ubuntu20/d' /mnt/c/Windows/System32/drivers/etc/hosts
# 追加最新的DNS解析信息
echo "$ipaddr ubuntu20" >> /mnt/c/Windows/System32/drivers/etc/hosts

然后修改hosts文件的权限

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容