鹏叔(https://www.pengtech.net)

导航

使用Windows搭建WSL Linux开发环境

前言

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 操作系统体验。

前提条件

您必须运行 Windows 10 版本 2004 及更高版本(Build 19041 及更高版本)或 Windows 11 才能使用以下命令。如果您使用的是早期版本,请参阅手动安装页面

开启WSL特性和虚拟机特性

以管理员身份打开powershell, 开启WSL特性, 启动虚拟机

在安装WSL之前,首先运行以下命令来确认是否已启用“适用于 Linux 的 Windows 子系统”:

State : Disabled 表示未启用


PS C:\Windows\system32> Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux


FeatureName      : Microsoft-Windows-Subsystem-Linux
DisplayName      : 适用于 Linux 的 Windows 子系统
Description      : 提供服务和环境以在 Windows 上运行本机用户模式 Linux shell 和工具。
RestartRequired  : Possible
State            : Disabled
CustomProperties :
                   ServerComponent\Description : 提供服务和环境以在 Windows 上运行本机用户模式 Linux shell 和工具。
                   ServerComponent\DisplayName : 适用于 Linux 的 Windows 子系统
                   ServerComponent\Id : 1033
                   ServerComponent\Type : Feature
                   ServerComponent\UniqueName : Microsoft-Windows-Subsystem-Linux
                   ServerComponent\Deploys\Update\Name : Microsoft-Windows-Subsystem-Linux

开启WSL特性,


PS C:\Windows\system32>dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

部署映像服务和管理工具
版本: 10.0.22000.653

映像版本: 10.0.22000.2295

启用一个或多个功能
[==========================100.0%==========================]
操作成功完成。

开启虚拟机特性

PS C:\Windows\system32> dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

部署映像服务和管理工具
版本: 10.0.22000.653

映像版本: 10.0.22000.2295

启用一个或多个功能
[==========================100.0%==========================]
操作成功完成。

开启后重启电脑

安装Linux内核更新包

下载并安装Linux内核更新包

如果处理器是x64架构的选择: Linux内核更新包x64

如果处理器是 ARM 架构,Linux内核更新包arm64

下载后双击安装, 安装包有五百多兆, 安装需要一些时间.

将WSL2设置为默认的WSL


wsl --set-default-version 2

安装Ubuntu

打开Windows store

搜索Unbuntu点击安装(Get)

安装完成后点击打开, 如果你关闭了windows store界面, 也可以在开始菜单搜索ubuntu并打开.

首次打开需要进行初始化, 初始化需要一些时间, 等待初始化完成.

初始化完成后需要设置用户名密码;

设置完用户名密码, 就可以使用Ubuntu了.

使用WSL和Ubuntu

在Powershell下面还可以对Linux进行一些管理工作, 例如生成快照, 恢复快照, 启动虚拟机, 关闭虚拟机.

以普通用户身份打开Powershell


# 查看当前已安装的linux子系统以及状态
wsl --list --verbose

# 查看可安装的Linux版本
wsl --list --online

# wsl镜像导出
wsl --export <发行版名称> <导出的文件名>
# 例如
wsl --export ubuntu c:\tmp\ubuntu.tar

# 镜像导入
# 语法
wsl --import <发行版名称> <安装位置> <tar 文件名>
# 例如
wsl --import ubuntu-copy c:\users\yourname\ubuntu c:\tmp\ubuntu.tar

# 安装不同的linux发行版
wsl --install -d Debian

# 关闭linux子系统, 以ubuntu为例
wsl --terminate ubuntu

# 运行特定的 Linux 发行版,请将 <Distribution Name> 替换为目标发行版的名称
wsl --distribution <Distribution Name> --user <User Name>

# 注销(卸载)当前安装的Linux的Windows子系统, 以ubuntu为例
wsl --unregister Ubuntu

# 终止所有 WSL 实例和 WSL 2 轻量级实用工具虚拟机
wsl --shutdown

# 查找 Linux 发行版的 .vhdx文件和磁盘路径
# 若要查找 Linux 分发版的 .vhdx 文件和目录路径,请打开 PowerShell 并使用以下命令,将 <distribution-name> 替换为实际的Linux发行版名称:
(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq <distribution-name> }).GetValue("BasePath") + "\ext4.vhdx"


安装 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,运行:

    wsl --update
    

    如果有更新,等待更新完成,然后运行:

    wsl --shutdown
    

    将 WSL 2 关机以重启

  • 检查是否安装成功

打开自己的 WSL 2,任意寻找一款 GUI 程序(例如 gedit),观察是否能够启动成功(每次开机初次启动可能会有较长的冷启动时间,需要耐心等待)。

以 gedit 为例,执行:

> sudo apt update -y
> sudo apt install -y gedit
> gedit

troubleshooting

问题1: WslRegisterDistribution failed with error: 0x80370102

出现这个问题的原因是没有开启windows虚拟机特性, 开启虚拟机特性并重启即可解决问题.

# 开启虚拟机特性
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中增加:

185.199.108.133 raw.githubusercontent.com

问题3: 当再次进入linux时出现"适用于 Linux 的 Windows 子系统实例已终止"

解决办法: 重启LxssManager服务;
管理员模式打开终端,输入

#停止LxssManager服务
net stop LxssManager  
 
#启动LxssManager服务
net start LxssManager  

后记

本文原文位于鹏叔的技术博客空间 - 使用Windows搭建WSL Linux开发环境, 要获取最近更新以及反馈问题请访问原文.

参考文档

使用Windows构建高效的Linux开发环境

solve 0X80370102

How to install Linux on Windows with WSL

Manual installation steps for older versions of WSL

WSL 安装与使用

WSL 2 的安装过程(以及介绍)

posted on 2023-08-31 08:27  eagle.supper  阅读(131)  评论(0编辑  收藏  举报