WSL2 的安装与运行 Linux 系统
前言
适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,允许开发人员在 Windows 系统上直接安装并使用 Linux 发行版。不用进行任何修改,也无需承担传统虚拟机或双启动设置的开销。
可以将 WSL 看作也是一个虚拟机,但是它更为便利。
比如
- 你可以直接在 Windows 终端打开 Linux 终端,不需要像传统虚拟机那样:先运行虚拟机,进行一些配置,才能打开 Linux 系统
- 可以直接利用 Linux 访问 Windows 系统的文件,不需要设置共享文件
- … …
下面开始安装:
只需要 启用 WSL2,然后就可以直接安装 Linux发行版 进行使用
1. 开启 WSL2 功能
1.1 安装 WSL2 的系统版本要求
- win10 系统:
- x64:版本 1903 或更高版本,内部版本为 18362.1049 或更高版本。
- ARM64:版本 2004 或更高版本,内部版本为 19041 或更高版本。
- win11 系统:都可以
【扩展】如何查看系统版本号:
- 快捷键 win + R 打开终端 (cmd,powershell 等都行)
- 输入 winver 指令

1.2 开启所需的 Windows 功能
以下演示为 windows11 系统
- 打开控制面板
- win + R 打开终端
- 输入指令:control
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rUqbJb70-1720955353798)(https://i-blog.csdnimg.cn/direct/3908c5233c6442e89c27c39be6c2bdf2.png)]](https://i-blog.csdnimg.cn/direct/0faa987c323f4c7996337c91e7951562.png)
-
点击 程序

-
点击 启用或关闭 Windows 功能
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w09ilgXY-1720955353800)(https://i-blog.csdnimg.cn/direct/2b88335627674149a5c8ca8e79daeb73.png)]](https://i-blog.csdnimg.cn/direct/7c7728312b264f738f804a99327c1cfa.png)
-
下滑找到 适用于 Linux 的 Windows 子系统 与 虚拟机平台,如果未勾选的,勾选上,点击确定(会提示重启电脑,点击重启即可)

1.3 设置版本号,更新 WSL
打开终端输入:(管理员模式下)
-
将 WSL2 设为默认版本:这样我们使用 Linux 系统时,默认是使用 WSL2 去运行 Linux 系统。
wsl --set-default-version 2 -
更新 WSL
wsl --update
【验证】输入指令:
wsl -v

出现上面信息说明 WSL2 安装成功。
那么只需要下载你需要的 Linux 系统 即可直接使用
2. 下载 Linux 发行版
需要注意的一点是:安装的 Linux 系统应该是 适用于 WSL 的 Linux 系统,因此如果你是从各大 Linux系统下载网站进行下载的话,需要注意这一点。
微软也给我们提供了几种下载方式:
下面我以 Ubuntu-22.04 为例
- Microsoft Stote
- 进入微软商店,搜索 ubuntu-22.04

现在就可以使用下载好的 ubuntu 了:
-
打开 ubuntu
开始菜单搜索 ubuntu 打开 或者 像下面这样 打开终端新建一个 ubuntu 终端

首次进入需要创建新用户:
-
设置用户
-
在下面位置输入用户名

-
输入密码
注意:输入密码时并不会显示你的输入,你只需要按键盘输入你想要设置的密码然后按 enter 键即可

-
出现此说明成功了:

- wsl 指令下载
下面的指令可能有的电脑由于版本较低无法执行,如果无法执行那么你使用 微软商店 下载即可
可通过 “wsl -l -o” 查看所有可选的 linux 发行版:

如果执行这一指令报错:无法解析服务器地址,那么也是建议你使用 微软商店 下载。
你仍然想使用的话,这里有一个可行的解决方案:
下载 dev-sidecar 软件(这是 github 上的一个开源软件,主要目的是解决一些网站访问慢的问题),项目地址:【https://github.com/docmirror/dev-sidecar】
- wsl --install 指令
安装 WSL 和 Linux 的默认 Ubuntu 发行版
可以在指令后面指定想要安装的 linux 发行版:
以 ubuntu-24.04 为例,输入指令等待安装即可

同理第一运行后也会要求创建用户,按之前说的步骤做即可。
3. 通过 WSL指令 使用 Linux
你可以按之前说的方法直接运行所下载的 linux 发行版。
下面说说通过 wsl 指令运行 linux
3.1 运行 linux
-
查看当前已安装的 linux 发行版:
“wsl -l -v” 或者 “wsl -l”

- Ubuntu-22.04 前面有个 *,说明它是 WSL 的默认运行版本。那么当你在终端输入指令 wsl 时,默认打开的是 ubuntu-22.04

- state:表示系统是否在运行
- version:表示该系统使用的 WSL 的版本 (目前 WSL 有两个版本:WSL2 与 WSL1)

- Ubuntu-22.04 前面有个 *,说明它是 WSL 的默认运行版本。那么当你在终端输入指令 wsl 时,默认打开的是 ubuntu-22.04
-
终端输入指令 wsl 即可运行默认 linux 版本
- 如果你需要更改默认运行的 linux 版本,那么需要执行指令:wsl --set-default [发行版名称]
比如 wsl --set-default Ubuntu-24.04
- 如果你想运行特定版本的 linux,那么执行:wsl --d [发行版名称] --u [用户名]
如果在第一次运行 linux 时创建了用户 (假如叫 blr),那么该 linux 会有两个用户:root、blr,其中 WSL 默认使用的用户为 blr (新创建的用户)。
你也可以通过指令 [发行版名称] config --default-user [用户名] 修改默认用户
比如:ubuntu-22.04 config --default-user root
运行后即可使用 Linux,那么如何使用 Linux 就不属于本文的范畴了。
4. 导入与导出 linux 发行版
所安装的 linux 发行版,它会占用一定的存储空间,WSL 默认将它所占用的空间设置在 C 盘。随着它的使用,可能导致 C 盘存储空间逐渐不足,那么可以通过将 Linux 导出到其他盘以减轻 C 盘的压力。
WSL 属于系统功能,我看到一些教程说可以将 WSL 移动到其他盘,这一做法是否正确未知,我在官方文档中也未看见相关说明(也可能是我粗心没发现)。
【注】如果下面的指令显示权限不够,请使用管理员模式打开终端。
-
关闭运行的 linux
wsl --shutdown
-
导出 linux 发行版
wsl --export [发行版名称] [导出文件的路径]
比如我将 ubuntu-22.04 导出到 “E:\ubuntu”,那么执行
wsl --export ubuntu-22.04 E:\ubuntu\ubuntu-22.04.tar

-
注销(卸载)原来的 ubuntu-22.04
wsl --unregister [发行版名称]
因为第一次安装时,WSL 保存了 ubuntu-22.04 的一些相关配置信息,因此需要注销原来的 ubuntu

-
利用之前导出的文件,导入 ubuntu-22.04 到新位置
wsl --import [发行版名称] [导入的路径] [导出文件的路径]
比如利用之前导出的文件 “E:\ubuntu\ubuntu-22.04.tar" 来导入新的发行版:ubuntu-22.04,导入到 “E:\ubuntu\ubuntu-22.04”

此时导出的文件 ubuntu-22.04.tar 就可以删除了。(是导出的文件,不是导入的文件)
需要注意这时 WSL 之前保存的一些配置信息就没了,比如以此教程安装的两个 ubuntu 系统为例:
- 现在默认打开的发行版不再是 ubuntu-22.04,你可自行设置
- 打开 ubuntu-22.04 默认用户不是之前创建的 blr 用户,而是 root 用户
由于现在 ubuntu-22.04 为导入的发行版,那么如果要修改默认用户的话需要更改 /etc/wsl.conf 文件
-
运行 ubuntu-22.04

-
执行指令:
echo -e "[user]\ndefault=用户名" >> /etc/wsl.conf用户名换为你想要的用户名(必须已经存在)
比如我将默认用户改为 blr:

-
将终端关闭重启即可
最后
本文基于微软官方文档,如果有错误,欢迎指正。
如果你在安装过程中出现错误,可以参见官方文档【常见问题】。
想要了解更多 WSL 指令见:【WSL 基本指令】
如果你觉得 ubuntu 的终端不好看,想给它进行美化,可参见:【终端美化:zsh + oh-my-zsh】
相关文章:
WSL2 的安装与运行 Linux 系统
前言 适用于 Linux 的 Windows 子系统 (WSL) 是 Windows 的一项功能,允许开发人员在 Windows 系统上直接安装并使用 Linux 发行版。不用进行任何修改,也无需承担传统虚拟机或双启动设置的开销。 可以将 WSL 看作也是一个虚拟机,但是它更为便…...
业务终端动态分配IP-DHCP技术、DHCP中继技术
一、为什么需要DHCP? 1、许多设备(主机、无线WiFi终端等)需要动态地址的分配; 2、人工手工配置任务繁琐、容易出错,比如:IP地址冲突; 3、网络规模扩大、复杂度提高,网络配置越来越复杂,计算机的位置变化和数量超过可分配IP地址的数量,造成IP地址变法频繁以及IP地址…...
新一代大语言模型 GPT-5 对工作与生活的影响及应对策略
文章目录 📒一、引言 📒二、GPT-5 的发展背景 🚀(一)GPT-4 的表现与特点 🚀(二)GPT-5 的预期进步 📒三、GPT-5 对工作的影响 🚀(一…...
AI基于大模型语言存在的网络安全风险
目的: 随着大语言模型(LLM)各领域的广泛应用,我们迫切需要了解其中潜在的风险和威胁,及时进行有效的防御。 申明: AI技术的普及正当的使用大模型技术带来的便利,切勿使用与非法用途ÿ…...
探索Perl语言:入门学习与实战指南
文章目录 探索Perl语言:入门学习与实战指南一、Perl语言概述二、Perl的安装与配置安装PerlWindowsmacOSLinux 配置Perl 三、基本语法与数据类型标量变量数组哈希 四、控制结构条件语句循环语句 五、子程序与模块子程序模块 六、文件操作与正则表达式文件读取与写入正…...
dp or 数学问题
看一下数据量,只有一千,说明这个不是数学问题 #include<bits/stdc.h> using namespace std;#define int long long const int mo 100000007; int n, s, a, b; const int N 1005;// 2 -3 // 1 3 5 2 -1 // 1 -2 -5 -3 -1 int dp[N][N]; int fun…...
kibana连接elasticsearch(版本8.11.3)
前言 elasticsearch在8版本之后就出现了很大变化,由于kibana版本需要需elasticsearch进行版本对象,kibana连接方式也出现了很大变化。我在这里记录下自己的踩坑记录。 服务部署 本文中的服务都是在docker环境中部署的。其中elasticsearch版本和kibana版…...
基于python的图像去水印
1 代码 import cv2 import numpy as npdef remove_watermark(image_path, output_path):# 读取图片image cv2.imread(image_path)# 转换为灰度图gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用中值滤波去除噪声median_filtered cv2.medianBlur(gray, 5)# 计算图像的梯…...
Linux下Supervisor的安装与配置
软件工程中,守护进程是非常行之有效的方案。能够让我们的一些指令在崩溃之后可以自我重新启动,从而保障业务上的持续使用。 这里就从0开始教大家安装Supervisor。 一,下载安装 安装有好多种方法,直接下载安装包安装,或者yum安装或者pip安装都可以。这次我们选择的是pip…...
使用Pandas读取Excel文件将特定列转成str格式方法汇总
文章目录 读取Excel文件并确保列为字符串类型使用 dtype 参数使用 converters 参数 读取Excel文件的正确拼写示例:读取Excel文件并过滤包含特定值的行详细解释 读取Excel文件并确保列为字符串类型 正确的方法是使用 pd.read_excel 函数,并指定 dtype 或…...
FPGA CFGBVS 管脚接法
说明 新设计了1个KU040 FPGA板子,回来之后接上JTAG FPGA不识别。做如下检查: 1、电源测试点均正常; 2、查看贴片是否有漏焊,检查无异常,设计上NC的才NC; 3、反复检查JTAG接线是否异常,贴片是…...
快速排序及归并排序的实现与排序的稳定性
目录 快速排序 一. 快速排序递归的实现方法 1. 左右指针法 步骤思路 为什么要让end先走? 2. 挖坑法 步骤思路 3. 前后指针法 步骤思路 二. 快速排序的时间和空间复杂度 1. 时间复杂度 2. 空间复杂度 三. 快速排序的优化方法 1. 三数取中优化 2. 小区…...
【系统架构设计】数据库系统(一)
数据库系统(一) 数据库模式与范式数据库的结构与模式数据模型关系代数数据的规范化反规范化 数据库设计事务管理备份与恢复分布式数据库系统数据仓库数据挖掘NoSQL大数据 数据库模式与范式 数据库的结构与模式 数据库技术中采用分级的方法将数据库的结…...
泛微e-cology WorkflowServiceXml SQL注入漏洞(POC)
漏洞描述: 泛微 e-cology 是泛微公司开发的协同管理应用平台。泛微 e-cology v10.64.1的/services/接口默认对内网暴露,用于服务调用,未经身份认证的攻击者可向 /services/WorkflowServiceXml 接口发送恶意的SOAP请求进行SQL注入,…...
<Rust><GUI>rust语言GUI库tauri体验:前、后端结合创建一个窗口并修改其样式
前言 本文是rust语言下的GUI库:tauri来创建一个窗口的简单演示,主要说明一下,使用tauri这个库如何创建GUI以及如何添加部件、如何编写逻辑、如何修改风格等,所以,这也是一个专栏,将包括tauri库的多个方面。…...
OBD诊断(ISO15031) 09服务
文章目录 功能简介ISO 9141-2、ISO 14230-4和SAE J1850的诊断服务定义1、请求车辆信息请求消息(读取支持的INFOTYPE)2、请求车辆信息响应消息(报告支持INFOTYPE)3、请求车辆信息请求消息(读取INFOTYPE值)4、请求车辆信息响应消息&…...
客户端与服务端之间的通信连接
目录 那什么是Socket? 什么是ServerSocket? 代码展示: 代码解析: 补充: 输入流(InputStream): 输出流(OutputStream): BufferedReader 是如何提高读取效率的&a…...
Font Awesome 图表图标
Font Awesome 图表图标 Font Awesome 是一个广泛使用的图标库,它提供了大量的图标,可以轻松地用于网页设计和开发中。在本文中,我们将重点介绍 Font Awesome 中的图表图标,探讨它们的特点、使用方法,并展示一些实际的…...
React Native 自定义 Hook 获取组件位置和大小
在 React Native 中自定义 Hook useLayout 获取 View、Pressable 等组件的位置和大小的信息 import {useState, useCallback} from react import {LayoutChangeEvent, LayoutRectangle} from react-nativeexport function useLayout() {const [layout, setLayout] useState&l…...
如何在SpringCloud中使用Kafka Streams实现实时数据处理
使用Kafka Streams在Spring Cloud中实现实时数据处理可以帮助我们构建可扩展、高性能的实时数据处理应用。Kafka Streams是一个基于Kafka的流处理库,它可以用来处理流式数据,进行流式计算和转换操作。 下面将介绍如何在Spring Cloud中使用Kafka Streams实…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
