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】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/799462.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Contact Form联系表单自动发送邮件(超级简单)

前几天发现了aoksend推出的这个联系表单的组件,非常好用,只有一个php文件,把php文件放到网站主目录里面。然后去aoksend注册和配置好域名和发信邮箱,可以得到发送密钥:app_key,然后配置好邮件模板&#xff…

线程安全(二)synchronized 的底层实现原理、锁升级、对象的内存结构

目录 一、基础使用1.1 不加锁的代码实现1.2 加锁的代码实现二、实现原理2.1 synchronized 简介2.2 对象监控器(Monitor)2.3 加锁过程第一步:判断 Owner 指向第二步:进入 EntryList 阻塞第三步:主动进入 WaitSet 等待三、锁升级3.1 对象的内存结构3.2 Mark Word 对象头3.3 …

全方位指南,电子期刊制作入门到精通

在这个数字化时代,电子期刊作为一种新兴的媒体形式,以其方便快捷、互动性强、传播范围广等特点,受到越来越多人的青睐。那么,如何制作出一本既专业又有吸引力的电子期刊呢? 一、选择合适的制作软件 首先,选…

Docker 使用基础(7)—Dockerfile

​ 🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:秒針を噛む—ずっと真夜中でいいのに。 0:34━━━━━━️💟──────── 4:20 🔄 ◀️ ⏸…

Pod网络、Service网络、网络插件Calico、网络插件Flannel(2024-07-12)

一、Pod网络 在K8S集群里,多个节点上的Pod相互通信,要通过网络插件来完成,比如Calico网络插件。 使用kubeadm初始化K8S集群时,有指定一个参数 --pod-networkcidr10.18.0.0/16 它用来定义Pod的网段。而我们在配置Calico的时候&…

视频号矩阵系统源码,实现AI自动生成文案和自动回复私信评论,支持多个短视频平台

在当今短视频蓬勃发展的时代,视频号矩阵系统源码成为了自媒体人争相探索的宝藏。这一强大的技术工具不仅能帮助我们高效管理多个短视频平台,更能通过AI智能生成文案和自动回复私信评论,为自媒体运营带来前所未有的便利与效率。 一、视频号矩…

【排序算法】—— 归并排序

归并排序时间复杂度O(NlongN),空间复杂度O(N),是一种稳定的排序,其次可以用来做外排序算法,即对磁盘(文件)上的数据进行排序。 目录 一、有序数组排序 二、排序思路 三、递归实现 四、非递归实现 一、有序数组排序 要理解归…

unity3d脚本使用start,updata,awake

最近学了一下unity,脚本编写用的c#,虽说没学过c#但是勉强根据教学还能写点代码。 在这里我来记录一下在我学习过程中感觉最重要的东西 消息函数: 在我们创建一个脚本文件的时候,我们首先可以看到两个默认给你写出来的函数。 这两…

昇思25天学习打卡营第21天|应用实践之GAN图像生成

基本介绍 今日要实践的模型是GAN,用于图像生成。使用的MNIST手写数字数据集,共有70000张手写数字图片,包含60000张训练样本和10000张测试样本,数字图片为二进制文件,图片大小为28*28,单通道,图片…

Redislnsight-v2远程连接redis

redis安装内容添加: Linux 下使用Docker安装redis-CSDN博客 点击添加 添加ip地址,密码,端口号 创建完成 点击查看内容:

CAN总线学习

can主要用于汽车、航空等控制行业,是一种串行异步通信方式,因为其相较于其他通信方式抗干扰能力更强,更加稳定。原因在于CAN不像其他通信方式那样,以高电平代表1,以低电平代表0,而是通过电压差来表示逻辑10…

ESP32CAM人工智能教学13

ESP32CAM人工智能教学13 openCV 安装 小智发现openCV是一款非常出色的机器视觉软件,可以配合ESP32Cam的摄像头,开发出许许多多的人工智能应用情境。 下载视频服务驱动库 OpenCV是开源的计算机视觉驱动库,可以应用于机器人的图形处理、机器学…

JDK,JRE,JVM三者之间的关系

Java程序不是直接在操作系统之上运行,而是运行在JVM(java虚拟机)之上。 Java源代码(.java文件)经编译器编译成字节码(.class文件),JVM本质上就是一个负责解释执行Java字节码的程序。…

旷野之间20 - Google 研究的推测 RAG

为什么选择 RAG 新兴能力 直到最近,人们发现 LLM 具有新兴能力,即在与用户或任务交互过程中出现的意外功能。 这些功能的示例包括: 解决问题: LLM 可以利用其语言理解和推理能力,为未经过明确培训的任务提供富有洞…

Unity UGUI Image Maskable

在Unity的UGUI系统中,Maskable属性用于控制UI元素是否受到父级遮罩组件的影响。以下是关于这个属性的详细说明和如何使用: Maskable属性 Maskable属性: 当你在GameObject上添加一个Image组件(比如UI面板或按钮)时&…

网络请求优化:如何让你的API飞起来

网络请求优化:如何让你的API飞起来 亲爱的开发者朋友们,你是否曾经遇到过这样的场景:用户疯狂点击刷新按钮,你的服务器却像老年人散步一样慢吞吞地响应。或者,你的应用像个贪吃蛇,疯狂吞噬用户的流量包。如果你对这些情况再熟悉不过,那么恭喜你,你正需要…

Redis分布式锁-Redisson可重入锁原理的个人见解。

记录Redisson可重入锁的个人见解。 文章目录 前言一、什么叫做锁的重入?二、Redisson可重入锁原理 前言 ⁣⁣⁣⁣ ⁣⁣⁣⁣ 之前在写项目的时候,注意到Redisson可重入锁的一个问题,随即在网上搜索其对应的资料,下面就记录一下个…

AI发展下的伦理挑战,应当如何应对?

引言 人工智能(AI)技术的迅猛发展给我们带来了前所未有的便利和创新,但也伴随着一系列复杂的伦理挑战。从侵犯数据隐私到制造“信息茧房”,AI的应用在许多方面都引发了伦理和社会问题。随着AI技术逐渐渗透到社会各个领域&#xf…

C双指针元素去重

需求 在尾部插⼊、删除元素是⽐较⾼效的&#xff0c;时间复杂度 是 O(1)&#xff0c;但是如果在中间或者开头插⼊、删除元素&#xff0c;就会涉及数据的搬移&#xff0c;时间复杂度为 O(N)&#xff0c;效率较低。 代码 #include <stdio.h>// 相邻元素去重 int remove…

3d复制的模型怎么渲染不出来?----模大狮模型网

在展览3D模型设计领域&#xff0c;技术的进步和创新使得模型的复杂性和精细度有了显著提升。然而&#xff0c;有时设计师们在尝试渲染复杂的3D复制模型时&#xff0c;却面临着无法正确呈现的问题。模大狮将探讨这一现象的可能原因&#xff0c;并提供相应的解决方案和建议&#…