当前位置: 首页 > news >正文

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)]

  • 点击 程序
    在这里插入图片描述

  • 点击 启用或关闭 Windows 功能
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w09ilgXY-1720955353800)(https://i-blog.csdnimg.cn/direct/2b88335627674149a5c8ca8e79daeb73.png)]

  • 下滑找到 适用于 Linux 的 Windows 子系统虚拟机平台,如果未勾选的,勾选上,点击确定(会提示重启电脑,点击重启即可)
    在这里插入图片描述

1.3 设置版本号,更新 WSL

打开终端输入:(管理员模式下

  1. 将 WSL2 设为默认版本:这样我们使用 Linux 系统时,默认是使用 WSL2 去运行 Linux 系统。

    wsl --set-default-version 2
    
  2. 更新 WSL

    wsl --update
    

【验证】输入指令:

wsl -v

在这里插入图片描述

出现上面信息说明 WSL2 安装成功。

那么只需要下载你需要的 Linux 系统 即可直接使用


2. 下载 Linux 发行版

需要注意的一点是:安装的 Linux 系统应该是 适用于 WSL 的 Linux 系统,因此如果你是从各大 Linux系统下载网站进行下载的话,需要注意这一点。

微软也给我们提供了几种下载方式:

下面我以 Ubuntu-22.04 为例


  1. Microsoft Stote
  • 进入微软商店,搜索 ubuntu-22.04
    在这里插入图片描述

现在就可以使用下载好的 ubuntu 了:

  • 打开 ubuntu

    开始菜单搜索 ubuntu 打开 或者 像下面这样 打开终端新建一个 ubuntu 终端

    在这里插入图片描述

首次进入需要创建新用户:

  • 设置用户

    • 在下面位置输入用户名
      在这里插入图片描述

    • 输入密码

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

    在这里插入图片描述

出现此说明成功了:

在这里插入图片描述


  1. 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)

  • 终端输入指令 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 对工作的影响 🚀(一&#xf…...

AI基于大模型语言存在的网络安全风险

目的: 随着大语言模型(LLM)各领域的广泛应用,我们迫切需要了解其中潜在的风险和威胁,及时进行有效的防御。 申明: AI技术的普及正当的使用大模型技术带来的便利,切勿使用与非法用途&#xff…...

探索Perl语言:入门学习与实战指南

文章目录 探索Perl语言:入门学习与实战指南一、Perl语言概述二、Perl的安装与配置安装PerlWindowsmacOSLinux 配置Perl 三、基本语法与数据类型标量变量数组哈希 四、控制结构条件语句循环语句 五、子程序与模块子程序模块 六、文件操作与正则表达式文件读取与写入正…...

dp or 数学问题

看一下数据量&#xff0c;只有一千&#xff0c;说明这个不是数学问题 #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版本之后就出现了很大变化&#xff0c;由于kibana版本需要需elasticsearch进行版本对象&#xff0c;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文件的正确拼写示例&#xff1a;读取Excel文件并过滤包含特定值的行详细解释 读取Excel文件并确保列为字符串类型 正确的方法是使用 pd.read_excel 函数&#xff0c;并指定 dtype 或…...

FPGA CFGBVS 管脚接法

说明 新设计了1个KU040 FPGA板子&#xff0c;回来之后接上JTAG FPGA不识别。做如下检查&#xff1a; 1、电源测试点均正常&#xff1b; 2、查看贴片是否有漏焊&#xff0c;检查无异常&#xff0c;设计上NC的才NC&#xff1b; 3、反复检查JTAG接线是否异常&#xff0c;贴片是…...

快速排序及归并排序的实现与排序的稳定性

目录 快速排序 一. 快速排序递归的实现方法 1. 左右指针法 步骤思路 为什么要让end先走&#xff1f; 2. 挖坑法 步骤思路 3. 前后指针法 步骤思路 二. 快速排序的时间和空间复杂度 1. 时间复杂度 2. 空间复杂度 三. 快速排序的优化方法 1. 三数取中优化 2. 小区…...

【系统架构设计】数据库系统(一)

数据库系统&#xff08;一&#xff09; 数据库模式与范式数据库的结构与模式数据模型关系代数数据的规范化反规范化 数据库设计事务管理备份与恢复分布式数据库系统数据仓库数据挖掘NoSQL大数据 数据库模式与范式 数据库的结构与模式 数据库技术中采用分级的方法将数据库的结…...

泛微e-cology WorkflowServiceXml SQL注入漏洞(POC)

漏洞描述&#xff1a; 泛微 e-cology 是泛微公司开发的协同管理应用平台。泛微 e-cology v10.64.1的/services/接口默认对内网暴露&#xff0c;用于服务调用&#xff0c;未经身份认证的攻击者可向 /services/WorkflowServiceXml 接口发送恶意的SOAP请求进行SQL注入&#xff0c;…...

<Rust><GUI>rust语言GUI库tauri体验:前、后端结合创建一个窗口并修改其样式

前言 本文是rust语言下的GUI库&#xff1a;tauri来创建一个窗口的简单演示&#xff0c;主要说明一下&#xff0c;使用tauri这个库如何创建GUI以及如何添加部件、如何编写逻辑、如何修改风格等&#xff0c;所以&#xff0c;这也是一个专栏&#xff0c;将包括tauri库的多个方面。…...

OBD诊断(ISO15031) 09服务

文章目录 功能简介ISO 9141-2、ISO 14230-4和SAE J1850的诊断服务定义1、请求车辆信息请求消息&#xff08;读取支持的INFOTYPE&#xff09;2、请求车辆信息响应消息(报告支持INFOTYPE)3、请求车辆信息请求消息&#xff08;读取INFOTYPE值&#xff09;4、请求车辆信息响应消息&…...

客户端与服务端之间的通信连接

目录 那什么是Socket? 什么是ServerSocket? 代码展示&#xff1a; 代码解析&#xff1a; 补充&#xff1a; 输入流&#xff08;InputStream&#xff09;&#xff1a; 输出流&#xff08;OutputStream&#xff09;&#xff1a; BufferedReader 是如何提高读取效率的&a…...

Font Awesome 图表图标

Font Awesome 图表图标 Font Awesome 是一个广泛使用的图标库&#xff0c;它提供了大量的图标&#xff0c;可以轻松地用于网页设计和开发中。在本文中&#xff0c;我们将重点介绍 Font Awesome 中的图表图标&#xff0c;探讨它们的特点、使用方法&#xff0c;并展示一些实际的…...

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的流处理库&#xff0c;它可以用来处理流式数据&#xff0c;进行流式计算和转换操作。 下面将介绍如何在Spring Cloud中使用Kafka Streams实…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...