在 Windows 上运行 Linux:WSL2 完整指南(一)

系列文章目录

在 Windows 上运行 Linux:WSL2 完整指南(一)🚪
在 Windows 上运行 Linux:WSL2 完整指南(二)


文章目录

  • 系列文章目录
  • 前言
  • 一、什么是 WSL?
    • 1.1 WSL 的主要特性
    • 1.2 WSL 的版本
  • 二、WSL2 与传统虚拟机的比较
    • 实现方式
    • 性能
    • 资源利用
    • 使用体验
    • 场景适用
  • 三、WSL2 安装和配置
    • 3.1 启用 WSL 功能
    • 3.2 启用虚拟机平台功能
    • 3.3 安装WSL2
    • 3.4 安装Linux分发版
    • 3.5 检查 WSL 版本
  • 四、常见问题及解决方法
    • 问题一 0x8007019e
  • 总结


前言

WSL(Windows Subsystem for Linux)是微软推出的一种在 Windows 操作系统上运行 Linux 的解决方案。WSL2 是 WSL 的第二个版本,通过虚拟化技术使 Linux 内核直接运行在轻量级虚拟机中,从而提高了性能和兼容性。本文将介绍 WSL2 的特点、与传统虚拟机的比较,并详细讲解如何在 Windows 上安装和配置 WSL2。
在这里插入图片描述


一、什么是 WSL?

WSL,全称为 Windows Subsystem for Linux,是微软为 Windows 10 和 Windows 11 操作系统引入的一项功能。WSL 允许用户在 Windows 上运行 Linux 操作系统及其相关的命令行工具和应用程序,而无需使用虚拟机或双重启动配置。

1.1 WSL 的主要特性

  • 直接运行 Linux 二进制文件:WSL 可以直接运行 ELF 格式的 Linux 二进制文件,这意味着你可以在 Windows 中运行各种 Linux 命令行工具和应用程序。
  • 与 Windows 无缝集成:WSL 允许 Linux 和 Windows 应用程序并排运行,用户可以在 Windows 的命令提示符或 PowerShell 中调用 Linux 工具,也可以在 Linux 的 Bash shell 中访问 Windows 文件。
  • 文件系统互操作性:用户可以在 WSL 中访问 Windows 文件系统(通过 /mnt/c 等路径),也可以从 Windows 访问 WSL 的 Linux 文件系统。
  • 开发者友好:WSL 提供了一个理想的环境来开发和测试跨平台的应用程序,尤其是那些需要在 Linux 环境中运行的应用程序。

1.2 WSL 的版本

WSL 目前有两个主要版本:

  • WSL 1:使用兼容层将 Linux 系统调用翻译为 Windows 系统调用。与 Windows 系统集成得很好,启动速度快,适合运行轻量级的 Linux 工具和脚本。由于没有完整的 Linux 内核,某些复杂的 Linux 应用和服务可能无法正常运行。
  • WSL 2:使用真正的 Linux 内核在轻量级虚拟机中运行 Linux 发行版。提供了更高的兼容性和性能,几乎可以运行所有的 Linux 应用程序。启动速度略慢于 WSL 1,但整体性能更好,尤其是文件系统操作速度显著提升。

二、WSL2 与传统虚拟机的比较

WSL2(Windows Subsystem for Linux 2)和传统的虚拟机(VM)都是在 Windows 上运行 Linux 环境的方式,但它们在实现方式、性能、资源利用和使用体验等方面存在一些重要的区别。

实现方式

  • WSL2:使用轻量级虚拟化,集成度高。
  • 虚拟机:运行完整操作系统,需要分配专门的硬件资源。

性能

  • WSL2:启动速度快,资源开销小,文件系统性能显著提升。
  • 虚拟机:启动速度相对较慢,资源开销大,但性能较稳定。

资源利用

  • WSL2:动态分配资源,根据需要调整。
  • 虚拟机:需要预先分配固定的内存和 CPU 资源。

使用体验

  • WSL2:安装配置简单,适合开发、测试和轻量级服务器任务。
  • 虚拟机:提供完整独立操作系统体验,适合需要高隔离性和多操作系统测试的场景。

场景适用

  • WSL2:开发和测试需要 Linux 环境的应用程序。需要与 Windows 应用程序和文件系统频繁交互的任务。学习和使用 Linux 命令行工具。
  • 虚拟机:运行需要高度隔离的独立操作系统实例。测试和开发跨多个操作系统版本和配置。需要完整虚拟化支持的任务,如复杂的网络配置和操作系统内核开发。

总结:WSL2 提供了在 Windows 上运行 Linux 的轻量级解决方案,具有快速启动、低资源占用和与 Windows 紧密集成的优势。虚拟机则提供了更高的隔离性和灵活性,适合需要运行多个独立操作系统实例的场景。选择哪种方式取决于具体的需求和应用场景。


三、WSL2 安装和配置

3.1 启用 WSL 功能

打开 PowerShell(以管理员身份运行),输入以下命令启用 WSL 功能:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

在这里插入图片描述

3.2 启用虚拟机平台功能

继续在 PowerShell 中输入以下命令以启用虚拟机平台:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

在这里插入图片描述

3.3 安装WSL2

重启计算机后,自动下载并安装最新的WSL2安装包,输入以下命令将WSL2设置为默认版本:

wsl --set-default-version 2

在这里插入图片描述

3.4 安装Linux分发版

在Microsoft Store中搜索ubuntu,下载完成后打开并按照提示进行设置(如创建用户名和密码)
在这里插入图片描述
运行子系统正常情况如下:
在这里插入图片描述

3.5 检查 WSL 版本

输入完用户名后出现以下界面则安装成功
在这里插入图片描述
在cmd命令行中使用以下命令来检查你安装的Linux发行版是否在使用WSL2

wsl -l -v

在这里插入图片描述


四、常见问题及解决方法

问题一 0x8007019e

描述:Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x8007019e Error: 0x8007019e ??????? Linux ? Windows ???? Press any key to continue...

这个错误通常是由于系统未启用必要的功能或未正确配置所导致的。

方法一:需要确保Windows已经启用WSL功能。以下是启用WSL的步骤:

  1. 打开“控制面板”,选择“程序”,然后点击“启用或关闭Windows功能”。
  2. 在弹出的窗口中,找到“适用于Linux的Windows子系统”,勾选该选项,然后点击“确定”。
  3. 重启电脑以应用更改。

在这里插入图片描述
方法二:win+x,以管理员方式打开 PowerShell ,输入以下命令,重启过后即可安装成功

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

在这里插入图片描述


还有问题二问题三留待下一篇博客解决,字数有限…

总结

通过上述步骤,你可以在 Windows 上成功安装和配置 WSL2,体验在 Windows 上运行 Linux 的便利性。WSL2 提供了高效的开发环境,适合需要在两者之间切换工作的开发者。希望本文能帮助你顺利使用 WSL2。希望这篇博客对你有所帮助,如果有任何疑问或需要进一步的信息,欢迎随时讨论🌹

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

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

相关文章

[WUSTCTF2020]level4题解 入土为安的第三天

二叉树 Practice my Data Structure code..... Typing....Struct.....char....*left....*right............emmmmm...OK! Traversal! Traversal type 1:2f0t02T{hcsiI_SwA__r7Ee} Traversal type 2:20f0Th{2tsIS_icArE}e7__w Traversal type 3: //type3(&x[22]); No w…

Schematics,一个牛逼的python库用于数据验证和转换的库

目录 什么是Schematics? 为什么使用Schematics? 安装Schematics 定义模式 验证数据 自定义验证 转换数据 结语 什么是Schematics? 在Python的世界中,Schematics是一个用于数据验证和转换的库。它通过定义数据结构的模式(…

Windows搭建RTMP视频流服务器

参考了一篇文章,见文末。 博客中nginx下载地址失效,附上一个有效的地址: Index of /download/ 另外,在搭建过程中,遇到的问题总结如下: 1 两个压缩包下载解压并重命名后,需要 将nginx-rtmp…

轻松搞定GIS场景编辑,这款免费工具你一定要试试

如果你正苦恼于如何搞定GIS场景编辑,不妨来试试这款免费可视化工具——山海鲸可视化。经过本人测试,这款软件在GIS场景编辑上完全可以做到“零代码”操作,即使没有任何编程技能也可以在三维GIS世界中如鱼得水。现在,让我们一起来看…

美团收银Android一面凉经(2024)

美团收银Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《美团收银Android一面凉经(2024)》。 应聘岗位: 美团餐饮PaaS平台Android开发工程师…

Docker 基本管理及部署

目录 1.Docker概述 1.1 Docker是什么? 1.2 Docker的宗旨 1.3 容器的优点 1.4 Docker与虚拟机的区别 1.5 容器在内核中支持的两种技术 1.6 namespace的六大类型 2.Docker核心概念 2.1 镜像 2.2 容器 2.3 仓库 3.安装Docker 3.1 查看 docker 版本信息 4.…

【嵌入式DIY实例-ESP8266篇】-LCD ST7789显示DS1307 RTC时间数据

LCD ST7789显示DS1307 RTC时间数据 文章目录 LCD ST7789显示DS1307 RTC时间数据1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 板和 DS1307 RTC 集成电路构建简单的实时时钟和日历 (RTCC),其中时间和日期打印在 ST7789 TFT 显示模块上。 ST7789 TFT 模块包…

C# 基于共享内存实现跨进程队列

C# 进程通信系列 第一章 共享内存 第二章 共享队列(本章) 文章目录 C# 进程通信系列前言一、实现原理1、用到的主要对象2、创建共享内存3、头部信息4、入队5、出队6、释放资源 二、完整代码三、使用示例1、传输byte[]数据2、传输字符串3、传输对象 总结…

持续集成03--Jenkins的安装与配置

前言 在持续集成/持续部署(CI/CD)的实践中,Jenkins作为一个开源的自动化服务器,扮演着至关重要的角色。本篇“持续集成03--Jenkins的安装配置”将带您走进Jenkins的世界,深入了解如何在Linux环境中安装并配置Jenkins。…

window下安装go环境

一、go官网下载安装包 官网地址如下:https://golang.google.cn/dl/ 选择对应系统的安装包,这里是window系统,可以选择zip包,下载完解压就可以使用 二、配置环境变量 这里的截图配置以win11为例 我的文件解压目录是 D:\Software…

web自动化测试selenium的基本使用

目录 初始化浏览器并打开网页 定位网页元素 定位的方法 模拟键盘操作 模拟鼠标操作 xpath方法 xpath结点 路径表达式 轴 selenium是一个很流行的自动化测试的库,主要用于模拟浏览器的运行,是web应用测试的工具。 在使用selenium时,…

C++基础篇(2)

目录 前言 1.缺省参数 2.函数重载 2.1函数重载的基本规则 ​编辑2.2注意事项 2.3 重载解析(Overload Resolution)--补充内容 3.引用 3.1引用的概念和定义 3.2引用的特性 3.3引用的使用 3.4const引用 4.指针和引用的关系 结束语 前言 上节小编…

16_Shell好用工具:sed

16_Shell好用工具:sed 零、语法解析 sed [选项参数] [模式匹配/sed命令] 文件 命令说明aadd,新增iinsert,新增cchange,修改ssubstitute,替换ddelete,删除pprint, 打印 通常与 -n 连用 一、增(…

【JavaScript】聊一聊js中的浅拷贝与深拷贝与手写实现

前言 什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型: 基本数据类型(6种)String、Number、Object、Boolean、null、undefined、symbol&#xff…

数据结构——线性表(C语言实现)

写在前面: 在前面C语言的结构体学习中,我提及了链表的操作, 学习数据结构我认为还是需要对C语言的数组、函数、指针、结构体有一定的了解,不然对于结构体的代码可能很难理解,特别是一些书籍上面用的还是伪代码&#xf…

Day07-员工管理-上传下载

1.员工管理-导出excel 导出员工接口返回的是二进制axios配置responseType为blob接收二进制流文件为Blob格式按装file-saver包,实现下载Blob文件npm install add file-saver导出员工excel的接口 (src/api/employee.js) export function exportEmployee(){return req…

普通人还有必要学习 Python 之类的编程语言吗?

在开始前分享一些编程的资料需要的同学评论888即可拿走 是我根据网友给的问题精心整理的对于编程的重要性,这里就不详谈了。 未来,我们和机器的交流会越来越多,编程可以简单看作是和机器对话并分发给机器任务。机器不仅越来越强大&#xff0…

芯课堂 | Synwit_UI_Creator(ugui)平台之PC端界面设计篇

​今天小编给大家介绍的是华芯微特面向小尺寸TFT-LCD屏驱市场量身打造的Synwit_UI_Creator(ugui)自研开发套件。 UI_Creator(ugui)开发套件分为上位机和下位机,以下如无特指,上位机即为PC端设计器/仿真器&…

【香橙派AiPro】基于VGG16的火灾检测模型预测

目录 引言开发板介绍开发板使用准备工作工具文档 拨码开关镜像烧录连接开发板下载MobaXterm网线-SSH连接开发板设置WIFI连接WIFI-SSH连接开发板确定开发板IP方法 Vnc可视化WindowsiPad 开发工具安装 散热风扇基于VGG16的火灾检测模型预测数据集准备目录结构代码操作 安装宝塔最…

RISC-V在线反汇编工具

RISC-V在线反汇编工具: https://luplab.gitlab.io/rvcodecjs/#q34179073&abifalse&isaAUTO 不过,似乎,只支持RV32I、RV64I、RV128I指令集: