Windows下搭建WSL Linux开发环境
1. 前言
WSL(Windows Subsyetem for Linux,适用于 Linux 的 Windows 子系统),是 Microsoft 公司于 2016 年在 Windows 10 平台发布的一项新功能,其使得用户可以在 Windows 操作系统上运行 ELF 格式的 Linux 可执行文件。
WSL 目前已发布两代产品:WSL 1 和 WSL 2。WSL 1 实现了 Linux 兼容层,将 Linux 系统调用转换为 Windows NT 系统调用;而 WSL 2 则利用 Windows 的 Hyper-V 功能,通过虚拟化技术直接运行 Linux 虚拟机,更接近原生 Linux 操作系统体验。
2. 前提条件
您必须运行 Windows 10 版本 2004 及更高版本(Build 19041 及更高版本)或 Windows 11 才能使用以下命令。如果您使用的是早期版本,请参阅手动安装页面。
3. 开启 WSL 特性和虚拟机特性
以管理员身份打开 powershell, 开启 WSL 特性, 启动虚拟机
在安装 WSL 之前,首先运行以下命令来确认是否已启用“适用于 Linux 的 Windows 子系统”:
命令输出
State : Disabled
表示未启用
1 |
|
开启 WSL 特性,
1 |
|
开启虚拟机特性
1 | PS C:\Windows\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart |
开启新特性后需要重启电脑
4. 安装 Linux 内核更新包
下载并安装 Linux 内核更新包
如果处理器是 x64 架构的选择: Linux 内核更新包 x64
如果处理器是 ARM 架构,Linux 内核更新包 arm64
下载后双击安装, 安装包有五百多兆, 安装需要一些时间.
将 WSL2 设置为默认的 WSL
1 |
|
5. 安装 Ubuntu
打开 Windows store
搜索 Unbuntu 点击安装(Get)
安装完成后点击打开, 如果你关闭了 windows store 界面, 也可以在开始菜单搜索 ubuntu 并打开.
首次打开需要进行初始化, 初始化需要一些时间, 等待初始化完成.
初始化完成后需要设置用户名密码;
设置完用户名密码, 就可以使用 Ubuntu 了.
至此 Ubuntu 安装就算安装完成了. 我也准备了一些关于使用 linux 的文章, 内容包括安装各类开发软件, 数据库等等方面, 有兴趣的同学可以访问鹏叔的技术博客 - linux 专题.
6. 使用 WSL 管理虚拟机
WSL 的底层技术实际是 Micrsoft hyper-v, 一款虚拟机管理软件, 类似 wmware 和 virtualbox, 和 linux 平台的 kvm.
wsl 就是管理虚拟机的命令行工具(command line interface).
在 Powershell 下面还可以对 Linux 进行一些管理工作, 例如生成快照, 恢复快照, 启动虚拟机, 关闭虚拟机.
以普通用户身份打开 Powershell
1 |
|
7. 安装 WSLg(可选)
Windows Subsystem for Linux GUI 是在 WSL 中使用 Linux 图形界面程序的一种方式,可以在 WSL 中任意使用 Linux 的图形界面程序。
WSLg 需要电脑已经安装了 WSL 2 内核组件。
查看本机的显卡品牌:
按 Ctrl+alt+delete,打开任务管理器,进入“性能”,查看“GPU”,记住右上角显示的 GPU 厂家。支持该功能的显卡厂商必须是 Intel、AMD 和 NVIDIA 中的一个。
安装虚拟显卡驱动
进入 https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-apps#prerequisites,安装适合自己的 GPU 的虚拟显卡驱动,并重启电脑。
更新 wsl 内核版本
使用管理员 / Administrator 身份或 Administrator 用户打开 cmd 或 powershell,运行:
1
wsl --update
如果有更新,等待更新完成,然后运行:
1
wsl --shutdown
将 WSL 2 关机以重启
检查是否安装成功
打开自己的 WSL 2,任意寻找一款 GUI 程序(例如 gedit),观察是否能够启动成功(每次开机初次启动可能会有较长的冷启动时间,需要耐心等待)。
以 gedit 为例,执行:
1
2
3> sudo apt update -y
> sudo apt install -y gedit
> gedit
8. troubleshooting
问题 1: WslRegisterDistribution failed with error: 0x80370102
出现这个问题的原因是没有开启 windows 虚拟机特性, 开启虚拟机特性并重启即可解决问题.
1
2# 开启虚拟机特性
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart问题 2: 执行命令
wsl --list --online
时报错”无法解析服务器的名称或地址”原因: 这个问题是由于安装包地址被墙了的缘故,最终的解决方案,具体原因参考wsl.exe –list –online 报错:无法解析服务器的名称或地址
解决办法:
可以到https://ipaddress.com这个网站上找到 raw.githubusercontent.com 对应的 ip 地址, 在你电脑上 ping 查到的地址 -t,看哪个地址能连接上.例如: 185.199.108.133 可以 ping 通, 接下来设置本地解析.
修改 C:\Windows\System32\Drivers\etc\hosts, 在在 hosts 中增加:
1
185.199.108.133 raw.githubusercontent.com
问题 3: 当再次进入 linux 时出现”适用于 Linux 的 Windows 子系统实例已终止”
解决办法: 重启 LxssManager 服务;
管理员模式打开终端,输入1
2
3
4
5
6#停止LxssManager服务
net stop LxssManager
#启动LxssManager服务
net start LxssManager
9. 关联阅读
cygwin install and configuration
10. 参考文档
How to install Linux on Windows with WSL
Windows下搭建WSL Linux开发环境