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

news2024/9/21 12:33:26

系列文章目录

在 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。希望这篇博客对你有所帮助,如果有任何疑问或需要进一步的信息,欢迎随时讨论🌹

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32智能工业自动化监控系统教程

目录 引言环境准备智能工业自动化监控系统基础代码实现:实现智能工业自动化监控系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:工业自动化与管理问题解决方案与优化收尾与总结 1. 引言 智能…

【unity笔记】十、Obi绳索插件使用

一. 创建绳索 1.1 新建蓝图 在Assets中右键选择创建->Obi->Rope Blueprint,其属性如图所示 1.2 Obi solver 在场景下创建一个obi solver对象,在该对象下再创建Obi Rope对象。 随后将蓝图拖到Obi Rope对象下的Obi Rope组件,即可看到…

【Web服务与Web应用开发】【C#】VS2019 创建ASP.NET Web应用程序,以使用WCF服务

目录 0.简介 1.环境 2.知识点 3.详细过程 1)创建空项目 2)添加Web表单 3)使用Web表单的GUI设计 4)添加服务引用 5)在Web的button函数中调用服务,获取PI值 6)测试 0.简介 本文属于一个…

环境配置|PyCharm——Pycharm本地项目打包上传到Github仓库的操作步骤

一、Pycharm端的设置操作 通过Ctrl+Alt+S快捷组合键的方式,打开设置,导航到版本控制一栏中的Git,在Git可执行文件路径中,输入Git.exe。 按照下图顺序,依次点击,完成测试。输出如图标④的结果,即可完成测试。 输出下图结果,配置Git成功,如本地未安装Git,需自行安装。

设计模式9-工厂模式(Factory Method)

[TOC](工厂模式(Factory Method)) 写在前面 对象创建模式 通过对象超级模式绕开。动态内存分配(new),来避免对象创建过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定,它是结构抽象之后的第一步工作。 典型模式&…

新版本安卓更换下载源解决gradle时间太久问题

老版本android studio 解决方法如下 : android studio gradle:build model执行时间太久 最近又做到安卓的任务了,下载的安卓studio最新版 这个版本的android studio 不能用上面那种老版本的方法了,需要更新方法 新版本需要跟换两个地方 gradle/wrapper/gradle-wrapper.proper…

JAVA 异步编程(异步,线程,线程池)一

目录 1.概念 1.1 线程和进程的区别 1.2 线程的五种状态 1.3 单线程,多线程,线程池 1.4 异步与多线程的概念 2. 实现异步的方式 2.1 方式1 裸线程(Thread) 2.1 方式2 线程池(Executor) 2.1.1 源码分析 2.1.2 线程池创建…

三丰云评测:免费虚拟主机与免费云服务器体验

今天我来为大家分享一下我对三丰云的评测。作为一家知名的云服务提供商,三丰云一直以来备受用户好评。他们提供免费虚拟主机和免费云服务器服务,深受网站建设者和开发者的喜爱。 首先谈谈免费虚拟主机服务。三丰云的免费虚拟主机方案性价比非常高&#x…

代码随想录算法训练营第33天|LeetCode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

1. LeetCode 509. 斐波那契数 题目链接:https://leetcode.cn/problems/fibonacci-number/ 文章链接:https://programmercarl.com/0509.斐波那契数.html 视频链接:https://www.bilibili.com/video/BV1f5411K7mo 思路: 动态规划步骤…

django-ckeditor富文本编辑器

一.安装django-ckeditor 1.安装 pip install django-ckeditor2.注册应用 INSTALLED_APPS [...ckeditor, ]3.配置model from ckeditor.fields import RichTextFieldcontent RichTextField()4.在项目中manage.py文件下重新执行迁移,生成迁移文件 py…

jvm优化

1.jvm组成 什么是jvm,java是跨平台语言,对不同的平台(windos,linux),有不同的jvm版本。jvm屏蔽了平台的不同,提供了统一的运行环境,让java代码无需考虑平台的差异。 jdk包含jre包含…

ValueError和KeyError: ‘bluegrass’的问题解决

项目场景: 项目相关背景: 问题描述 遇到的问题1: KeyError: ‘bluegrass’ 不能识别某标签 遇到的问题2: xml etree.fromstring(xml_str) ValueError: Unicode strings with encoding declaration are not supported. Please …

K8S POD控制器:从基础到高级实战技巧

一、引言 在当今的云计算时代,Kubernetes(K8s)已成为最受欢迎的容器编排工具,它的核心组成部分之一——K8s POD控制器,扮演着至关重要的角色。这篇文章旨在深入探讨K8s POD控制器的内部工作原理、不同类型及其应用场景…

【数据结构】树和二叉树及堆的深入理解

【数据结构】树和二叉树及堆的深入理解 🔥个人主页:大白的编程日记 🔥专栏:数据结构 文章目录 【数据结构】树和二叉树及堆的深入理解前言一.树1.1 树的概念1.2 树的相关概念1.3 树的表示1.4 树的应用 二.二叉树2.1 二叉树概念及…

clion中建立c文件工程,读取或创建sqlite3数据库文件

1.首先前往SQLite官网下载sqlite3所需文件 SQLite Download Page 2.解压文件,将其中的sqlite3.c和sqlite3.h拷贝到你对应的文件工程中 3.修改CMakeLists.txt文件,添加编译选项及连接文件 4.运行代码及查询数据库文件

实战:SpringBoot 15个功能强大Bean

下面这15个bean,可以很方便的帮我们获取当前环境信息,运行信息,参数信息等等 1. 应用程序参数Environment和ApplicationArguments SpringBoot程序在启动时,可以通过如下方式设置启动参数: java -jar app.jar --pack…

单链表算法 - 链表分割

链表分割_牛客题霸_牛客网现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的。题目来自【牛客题霸】https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70思路: 代码: /* struct ListNode {int val;struct List…

iterator(迭代器模式)

引入 在想显示数组当中所有元素时&#xff0c;我们往往会使用下面的for循环语句来遍历数组 #include <iostream> #include <vector>int main() {std::vector<int> v({ 1, 2, 3 });for (int i 0; i < v.size(); i){std::cout << v[i] << &q…

正则表达式(Ⅲ)——分组匹配

简介 为了给表达式分组&#xff0c;我们需要将文本包裹在 () 中 有点类似于匹配子串&#xff0c;只不过是找出所有的子串&#xff0c;并且拼成一组 分组之间需要有分割符&#xff0c;,或者-或者_都可以 直接分组 引用分组 这个比较难以理解 \1和\2的作用有两个&#xff1a…

Ubuntu系统修改SSH默认端口号

1.查看系统和系统版本号 rootecs-c0fe:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.7 LTS Release: 16.04 Codename: xenial rootecs-c0fe:~# uname -a Linux ecs-c0fe 4.4.0-210-generic #242-Ubunt…