Windows如何体验使用Linux

news2025/1/25 9:10:55

一、背景

在这里插入图片描述

    因早上刷抖音时,刷到一博主介绍WSL这个东东,因已很少在本地电脑操作Linux环境,咱们来看下这个和传统的vmware workstation 、virtualbox虚拟机有啥不同,WSL如何安装和使用;另提前声明,WSL不推荐用于实际的开发测试验证,引起存在一些兼容性问题,还是VM独立环境更好。

二、WSL介绍

在这里插入图片描述

    WSL是windows subsystem for linux的简写,即它windows10 的一个子系统,是一个可在windows下运行得linux操作系统,它也有多个发行版本可供选择。官方介绍,它可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。现在已经发展到WSL 2,支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。新的体系结构WSL 2改变了 Linux 二进制文件与Windows 和计算机硬件进行交互的方式,且兼容WSL 1架构;

    WSL 1 和 WSL 2 之间的主要区别在于,在托管 VM 内使用真实的 Linux 内核(相比WSL1.0完整的Linux内核)、支持完整的系统调用兼容性以及跨 Linux 和 Windows 操作系统的性能。 WSL 2 是安装 Linux 发行版时的当前默认版本,它使用最新最好的虚拟化技术在轻量级实用工具虚拟机 (VM) 内运行 Linux 内核。下面是官网的一张对照表:

在这里插入图片描述
注意:WSL 2 仅在 Windows 11 或 Windows 10 版本 1903、内部版本 18362 或更高版本中可用。 可通过按 “Win + R”,键入 winver,查看你的内部和发现版本。 它还适用于 VMware 15.5.5+ 和 VirtualBox 6+;

传统的 VM 体验可能启动速度慢,是独立的,消耗大量资源;WSL 2 具备了有 WSL 1 的几乎全部优点: Windows 和 Linux 之间的无缝集成,启动时间短,资源占用量少,无需 VM 配置或管理。 虽然 WSL 2 中使用 了VM,但 VM 是在幕后管理和运行的,对用户依然无感,另WSL 2 中的 Linux 内核是 Microsoft 根据最新的稳定版分支构建的,且已专门针对 WSL 2 进行了调整,针对大小和性能进行了优化;因 WSL 2 包括了自己的 Linux 内核,具有完全的系统调用兼容性,不在需要像WSL 1那样需要中间层来转化;WSL 2也存在一个资源的问题,WSL 2 的内存使用量会随使用而缩放。 当进程释放内存时,这会自动返回到 Windows。 但在关闭 WSL 实例前,WSL 2 是不会将内存中缓存的页面释放回 Windows。 这就回出现一个问题,如果你有长时间运行的 WSL 会话或访问非常大量的文件,此缓存可能会耗尽你的 Windows 内存。

官网推荐开发的小伙伴们,建议尝试 VS Code 远程 WSL 扩展,以便使你不仅能够使用 Linux 命令行工具将项目文件存储在 Linux 文件系统上,而且还可以使用 Windows 上的 VS Code 在 Internet 浏览器中创作、编辑、调试或运行项目,而不会造成任何与跨 Linux 和 Windows 文件系统工作相关联的性能下降。

资源链接:Install WSL with a single command now available in Windows 10 version 2004 and higher、WSL2-Linux-Kernel库、官网文档、WSL 2内核、WSL 开发环境配置指南

三、WSL安装和使用

1)宿主机OS版本确认,执行winver,确认你的OS版本满足: Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 ;且你的cpu开启了“虚拟化支持”;类似与vmware workstation和virtualbox的运行前检查;

在这里插入图片描述

2)WSL 2 安装前准备:

1、启用适用于 Linux 的 Windows 子系统:打开powershell执行:

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

在这里插入图片描述

2、启用虚拟平台支持:以管理员打开powershell执行:

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

在这里插入图片描述

或图形界面安装如下功能:“适用于Linux的Windows子系统” 和 “虚拟机平台”,如下所示

在这里插入图片描述

3)管理员打开CMD:

C:Windows\system32\chcp 936       //修改cmd串口显示未中文,返回如下
Acitive code page: 936

C:Windows\system32\ wsl.exe      //打开默认的 Linux 发行版,如果没安装的话,可用来验证
适用于 Linux 的 Windows 子系统没有已安装的分发版。
可以通过访问 Microsoft Store 来安装分发版:
https://aka.ms/wslstore

C:Windows\system32\wsl --list --online   //查看可用发行版列表,默认采用Ubuntu,可简写为:wsl -l -o

C:Windows\system32\wsl --install    //安装完成后重启,重启后会开启Ubuntu vm的提示框,提示配置用户名和密码

C:Windows\system32\wsl --install -d <DistroName>    //安装指定发行版

C:Windows\system32\wsl --set-default-version <Version#>   //将默认版本设置为 WSL 1 或 WSL 2

C:Windows\system32\wslwsl -s <DistributionName>       //或 wsl --setdefault <DistributionName>,更改默认安装的发行版

C:Windows\system32\wsl -l -v //列出已安装的发行版

C:Windows\system32\wsl pwd //查看当前目录路径在 WSL 中的装载位置

C:Windows\system32\wsl --status   //查看当前安装版本信息

#终止指定的分发
C:Windows\system32\wsl -t <Linux分发版名称>
 
#终止所有运行的分发及 WSL 轻型工具虚拟机
C:Windows\system32\wsl --shutdown
#卸载
C:Windows\system32\wsl --unregister <Linux分发版名称>

#更新 WSL2 内核到最新版本
C:Windows\system32\wsl --update
 
# 还原到 WSL2 内核的先前版本
C:Windows\system32\wsl --update --rollback

也可从windows自带的“Microsoft Store”中搜索“ubuntu”,选择一个ubuntu发行版安装;比如ubuntu20.04,安装后就可以在我们的软件列表找到,单击后即可进入;
在这里插入图片描述

四、附录:常见问题

4.1 安装失败并出现错误 0x80070003

适用于 Linux 的 Windows 子系统只能在系统驱动器(通常是 C: 驱动器)中运行。 请确保分发版存储在系统驱动器上:打开“设置”->“系统”–>“存储”-> “更多存储设置”: 更改新内容的保存位置”

4.2 WslRegisterDistribution 失败并出现错误 0x8007019e

这一般是未启用“适用于 Linux 的 Windows 子系统”可选组件:打开“控制面板” -> “程序和功能” -> “打开或关闭 Windows 功能”-> 选中“适用于 Linux 的 Windows 子系统”,或使用本文开头所述的 PowerShell cmdlet。

4.3 安装失败,出现错误 0x80070003 或错误 0x80370102

请确保在计算机的 BIOS 内已启用虚拟化。 有关如何执行此操作的说明因计算机而异,并且很可能在 CPU 相关选项下。WSL2 要求 CPU 支持二级地址转换 (SLAT) 功能,后者已在 Intel Nehalem 处理器(Intel Core 第一代)和 AMD Opteron 中引入。 即使成功安装了虚拟机平台,旧版 CPU(例如 Intel Core 2 Duo)也无法运行 WSL2。

4.4 尝试升级时出错:Invalid command line option: wsl --set-version Ubuntu 2

请确保已启用适用于 Linux 的 Windows 子系统,并且你使用的是 Windows 内部版本 18362 或更高版本。 若要启用 WSL,请在 PowerShell 提示符下以具有管理员权限的身份运行此命令:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux。

4.5 由于虚拟磁盘系统的某个限制,无法完成所请求的操作。虚拟硬盘文件必须是解压缩的且未加密的,并且不能是稀疏的

取消选中“压缩内容”(如果已选中“加密内容”,请一并取消选中),方法是打开 Linux 发行版的配置文件文件夹。 它应位于 Windows 文件系统上的一个文件夹中,类似于:USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited…
在此 Linux 发行版配置文件中,应存在一个 LocalState 文件夹。 右键单击此文件夹可显示选项的菜单。 选择“属性”>“高级”,然后确保未选择(未勾选)“压缩内容以节省磁盘空间”和“加密内容以保护数据”复选框。 如果系统询问是要将此应用到当前文件夹还是应用到所有子文件夹和文件,请选择“仅此文件夹”,因为你只是要清除压缩标志。 完成此操作后,wsl --set-version 命令应正常工作。

4.6 无法将词语“wsl”识别为 cmdlet、函数、脚本文件或可运行程序的名称

请确保已安装“适用于 Linux 的 Windows 子系统”可选组件。 此外,如果你使用的是 ARM64 设备,并从 PowerShell 运行此命令,则会收到此错误。 请改为从 PowerShell Core 或从命令提示符运行 wsl.exe。

4.7 错误:此更新仅适用于装有适用于 Linux 的 Windows 子系统的计算机

若要安装 Linux 内核更新 MSI 包,需要 WSL,应先启用它。 如果失败,将看到以下消息:This update only applies to machines with the Windows Subsystem for Linux。
出现此消息有三个可能的原因:

1、你仍使用旧版 Windows,不支持 WSL 2。 有关版本要求和要更新的链接,请参阅步骤 #2。
2、未启用 WSL。 需要返回到步骤 #1,并确保在计算机上启用了可选的 WSL 功能。
3、启用 WSL 后,需要重新启动才能使其生效,请重新启动计算机,然后重试。

4.8 错误:WSL 2 要求对其内核组件进行更新

如果 %SystemRoot%\system32\lxss\tools 文件夹中缺少 Linux 内核包,会遇到此错误。 若要解决此问题,请在安装说明的步骤 #4 中安装 Linux 内核更新 MSI 包。 可能会需要从添加或删除程序卸载 MSI,然后重新安装。

4.9 忘记WSL密码

如果忘记了 Linux 分发版的密码,请打开 PowerShell,并使用以下命令进入默认 WSL 分发版的根目录:wsl -u root

如果需要在非默认分发版中更新忘记的密码,请使用命令:wsl -d Debian -u root,并将 Debian 替换为目标分发版的名称。

在 PowerShell 内的根级别打开 WSL 发行版后,可使用此命令更新密码:passwd ,其中 是 DISTRO 中帐户的用户名,而你忘记了它的密码。

系统将提示你输入新的 UNIX 密码,然后确认该密码。 在被告知密码已成功更新后,请使用以下命令在 PowerShell 内关闭 WSL:exit

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

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

相关文章

超实用!五种常用的多离散化小技巧

一、引言 「离散化」在数据分析中扮演着重要的角色。通过将连续型变量转化为离散型变量&#xff0c;我们可以更好地理解和分析数据&#xff0c;从而揭示出潜在的模式和关系。本文的目的是介绍五种常用的多离散化小技巧&#xff0c;它们可以帮助数据分析人员有效地处理连续变量。…

企业架构LNMP学习笔记34

LVS-DR模式&#xff1a; 老师分析&#xff1a; 1、首先用户用CIP请求VIP 2、根据上图可以看到&#xff0c;不管是Director Server还是Real Server上都需要配置VIP&#xff0c;那么当用户请求到达我们的集群网络的前端路由器的时候&#xff0c;请求数据包的源地址为CIP目标地址…

02. Kubeadm部署Kubernetes集群

目录 1、前言 2、Kubernetes部署方式 3、kubeadmin部署 3.1、关闭防火墙 3.2、配置阿里云Kubernetes源 3.3、安装kubeadm&#xff0c;kubelet&#xff0c;kubectl 3.4、初始化master节点 3.5、master节点配置kubectl命令行工具 3.6、master节点下载flannel网络配置文件…

Java 抽象类能不能实例化

短回答就是&#xff1a;不能 这里有 2 个概念&#xff0c;什么是抽象类和什么是实例化。 实例化 实例化简单来说就是为 Java 中使用的对象分配存储空间。 抽象类 从代码上来说&#xff0c;抽象类就是一个用 abstract 关键字来修饰的类。 这个类除了不能被实例化以外&#x…

第16章_瑞萨MCU零基础入门系列教程之CAN 协议

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

喜报 | 实力亮相2023服贸会,擎创科技斩获领军人物奖创新案例奖

近日&#xff0c;由中华人民共和国商务部、北京市人民政府共同主办的中国&#xff08;北京&#xff09;国际服务贸易交易会&#xff08;简称服贸会)已圆满落幕。 本次会议中&#xff0c;发布了2023年度“数智影响力”征集活动获奖名单&#xff0c;擎创科技创始人兼CEO杨辰获企…

Jetsonnano B01 笔记5:IIC通信

今日继续我的Jetsonnano学习之路&#xff0c;今日学习的是IIC通信&#xff0c;并尝试使用Jetson读取MPU6050陀螺仪数据。文章提供源码。文章主要是搬运的官方PDF说明&#xff0c;这里结合自己实际操作作笔记。 目录 IIC通信&#xff1a; IIC硬件连线&#xff1a; 安装IIC库文…

【技能树笔记】网络篇——练习题解析(二)

目录 前言 一. 数据链路层的作用 1.1 数据链路层作用 1.2 数据链路层封装 1.3 数据链路层功能 1.4 数据帧格式 二. MAC地址及分类 2.1 MAC地址 2.2 MAC地址分类 三. 交换机的作用 3.1 交换机的作用 3.2 交换机作用 四.交换机的工作原理 4.1 交换机的工作原理 4.…

spring---第七篇

系列文章目录 文章目录 系列文章目录一、什么是bean的自动装配,有哪些方式?一、什么是bean的自动装配,有哪些方式? 开启自动装配,只需要在xml配置文件中定义“autowire”属性。 <bean id="cutomer" class="com.xxx.xxx.Customer" autowire="…

【侯捷C++面向对象 】(上)

1.C 编程简介 & 目标 培养代码正规编范class 分为 带pointer 和 不带pointer的 学习C &#xff1a; 语言 标准库 2.C vs C C语言 &#xff1a; &#xff08;type&#xff09;数据 函数 —create—》 数据sC &#xff1a; (class ) 数据 成员 —create—》 对象不带指…

AI伦理:科技发展中的人性之声

文章目录 AI伦理的关键问题1. 隐私问题2. 公平性问题3. 自主性问题4. 伦理教育问题 隐私问题的拓展分析数据收集和滥用隐私泄露和数据安全 公平性问题的拓展分析历史偏见和算法模型可解释性 自主性问题的拓展分析自主AI决策伦理框架 伦理教育的拓展分析伦理培训 结论 &#x1f…

【LeetCode-中等题】34. 在排序数组中查找元素的第一个和最后一个位置

文章目录 题目方法一&#xff1a;二分查找&#xff08;先找到mid&#xff0c;在根据mid确定左右区间&#xff09;方法二&#xff1a;分两次二分查找&#xff0c;一次用于找左区间&#xff0c;一次用于找右区间 题目 方法一&#xff1a;二分查找&#xff08;先找到mid&#xff0…

第六讲:如何构建类的事件(上)

【分享成果&#xff0c;随喜正能量】世界上凡是人聚集的地方&#xff0c;讨论的话题无外乎三个&#xff1a;拐弯抹角的炫耀自己、添油加醋的贬低别人、相互窥探的搬弄是非。人性的丑陋就是&#xff1a;在无权无势、善良的人身上挑毛病&#xff1b;在有权有势的人身上找优点。。…

【硬件设计】硬件学习笔记二--电源电路设计

硬件学习笔记二--电源电路设计 一、LDO设计1.1 LDO原理1.2 LDO参数1.3 应用 二、DC-DC设计2.1 DC-DC原理2.2 DC-DC参数介绍2.4 DC-DC设计要点2.5 DC-DC设计注意事项 写在前面&#xff1a;本篇笔记来自王工的硬件工程师培训课程&#xff0c;想要学硬件的同学可以去腾讯课堂直接搜…

【LeetCode-中等题】69. x 的平方根

文章目录 题目方法一&#xff1a;二分查找 题目 方法一&#xff1a;二分查找 假设求8的平方根&#xff0c;那就设置left 0 &#xff0c;right 8&#xff1b; 每次取最中间的元素的平方和8对比&#xff0c;如果大于8&#xff0c;则right mid-1&#xff0c;如果小于8 left mi…

第二节 极限 (一)

一、极限的定义(了解) 二、求极限的方法 (重点 大题8分 选择4分 填空4分) (1) 直接代入 (只要有意义) (2) 洛必达法则&#xff08;80%解题法&#xff09; (3) 无穷小和无穷大的性质 (4) 三种特例 (5) 两个重要极限 (6) 等价无穷小的替换 三、真题 方法一&#xff…

蓝桥杯官网填空题(振兴中华)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小明参加了学校的趣味运动会&#xff0c;其中的一个项目是&#xff1a;跳格子。 地上画着一些格子&#xff0c;每个格子里写一个字&#xff0c;如下所示&#xff1…

字符编码(idea)

File----------settings-------------Editor------------File Encodings

常见IO模型(非常详细)

背景知识 常⽤5中⽹络IO模型 阻塞IO&#xff08;Blocking IO&#xff09;⾮阻塞IO&#xff08;Non-Blocking IO&#xff09;多路复⽤IO&#xff08;IO Multiplexing&#xff09;信号驱动IO&#xff08;Signal Driven IO&#xff09;异步IO&#xff08;Asynchronous IO&#x…

IPD-PDT-POP角色的名称、定位和职责说明书

在IPD推进中&#xff0c;有一个不是很关键但却离不开的角色叫做POP&#xff0c;POP这个角色通常是设置在PDT团队中。 那么IPD的PDT团队中的POP这个角色到底是什么意思呢&#xff1f;POP如何开展工作&#xff0c;以及POP的主要岗位职责有哪些呢&#xff1f;华研荟今天给大家分享…