Windows 中的 WSL:开启你的 Linux 之旅


       今天在安装windows上安装Docker Desktop的时候,遇到了WSL。下面咱们就学习下。

欢迎来到涛涛聊AI


一、什么是 WSL?


        WSL,全称为 Windows Subsystem for Linux,是微软为 Windows 系统开发的一个兼容层,它允许用户在 Windows 环境中直接运行 Linux 二进制可执行文件(ELF 格式)。简单来说,WSL 让你可以在 Windows 系统中无缝使用 Linux 系统,而无需安装完整的 Linux 发行版。


(一)WSL 的历史背景
        WSL 最初于 2016 年在 Windows 10 的周年更新中首次亮相。微软推出 WSL 的初衷是为了满足开发者的需求,尤其是那些需要在 Windows 环境中使用 Linux 工具和环境的开发者。然而,随着时间的推移,WSL 的功能不断增强,它已经不仅仅是一个开发工具,更是一个强大的生产力工具,适用于各种计算机用户。


(二)WSL 的核心优势

• 无需虚拟机:传统的 Linux 使用方式通常是通过虚拟机软件(如 VMware 或 VirtualBox)来运行 Linux 系统。但虚拟机需要占用大量系统资源,启动和运行速度较慢。而 WSL 则直接在 Windows 内核上运行,无需额外的虚拟机软件,启动速度快,资源占用低。

• 无缝集成:WSL 与 Windows 系统深度集成,你可以直接在 Windows 资源管理器中访问 Linux 文件系统,也可以在 Linux 终端中访问 Windows 文件系统。这种无缝集成让你可以在两个系统之间轻松切换和操作。

• 多种 Linux 发行版支持:WSL 支持多种流行的 Linux 发行版,如 Ubuntu、Debian、Fedora 等。你可以根据自己的需求选择适合的发行版。


二、WSL 的版本介绍


        WSL 有两个主要版本:WSL 1 和 WSL 2。它们在性能、功能和兼容性上有所不同,下面我们来详细了解一下。


(一)WSL 1
        WSL 1 是 WSL 的第一个版本,它通过将 Linux 系统调用转换为 Windows 系统调用来实现 Linux 环境的运行。这种转换方式使得 WSL 1 在文件 I/O 操作上表现良好,但在某些复杂操作(如磁盘 I/O)上可能会出现性能瓶颈。


• 优点:

• 文件访问速度快,适合处理大量文件操作的任务。

• 兼容性较好,大多数 Linux 应用程序都能在 WSL 1 上正常运行。

• 缺点:

• 对于需要高性能计算和复杂磁盘操作的应用,性能表现可能不如 WSL 2。

• 不支持某些 Linux 内核特性,如 Docker。


(二)WSL 2
        WSL 2 是 WSL 的升级版本,它引入了虚拟化的 Linux 内核,使得 Linux 系统在 WSL 2 上的运行更加接近原生 Linux 环境。WSL 2 的核心优势在于性能和兼容性。


• 优点:

• 性能大幅提升,尤其是在磁盘 I/O 和 CPU 密集型任务上。

• 支持完整的 Linux 内核特性,包括 Docker 等容器化工具。

• 更好的文件系统兼容性,支持 ext4 等 Linux 文件系统。

• 缺点:

• 启动速度略慢于 WSL 1,因为需要启动虚拟化的 Linux 内核。

• 需要更多的系统资源,尤其是内存。


三、如何安装和使用 WSL


安装和使用 WSL 非常简单,即使是非程序员用户也能轻松上手。下面我们将详细介绍安装步骤和基本使用方法。


(一)安装 WSL

• 启用 WSL 功能:

• 打开 Windows 设置,搜索“Windows 功能”,然后点击“打开”。

• 在“Windows 功能”窗口中,找到“适用于 Linux 的 Windows 子系统”和“虚拟机平台”(如果需要安装 WSL 2),勾选它们,然后点击“确定”。

• 系统会提示你重启计算机,重启后 WSL 功能将被启用。


• 安装 Linux 发行版:

• 打开 Microsoft Store,搜索你想要安装的 Linux 发行版(如 Ubuntu、Debian 等)。

• 选择一个发行版,点击“获取”进行安装。

• 安装完成后,打开该发行版,系统会提示你设置用户名和密码,完成初始化设置。


(二)使用 WSL

• 启动 WSL:

• 安装完成后,你可以在开始菜单中找到你安装的 Linux 发行版,点击它即可启动。

• 你也可以通过 Windows 终端(Windows Terminal)启动 WSL。打开 Windows 终端,选择你安装的 Linux 发行版,即可进入 Linux 环境。


• 基本命令操作:

• WSL 的操作界面是一个终端窗口,你可以通过命令行来操作 Linux 系统。以下是一些常用的命令:

• `ls`:列出当前目录下的文件和文件夹。

• `cd`:切换目录,例如`cd /home`切换到 home 目录。

• `mkdir`:创建目录,例如`mkdir test`创建一个名为 test 的目录。

• `touch`:创建文件,例如`touch test.txt`创建一个名为 test.txt 的文件。

• `nano`或`vi`:文本编辑器,用于编辑文件。

• `sudo`:以管理员权限执行命令,例如`sudo apt update`更新软件包列表。


• 访问文件系统:

• 在 WSL 中,你可以访问 Windows 文件系统。WSL 会将 Windows 文件系统挂载在`/mnt/c`(对于 C 盘)。例如,如果你想要访问 Windows 的桌面文件夹,可以在 WSL 中输入`cd /mnt/c/Users/你的用户名/Desktop`。


• 安装软件:

• WSL 支持通过包管理器安装软件。以 Ubuntu 为例,你可以使用`apt`包管理器。例如,安装`curl`工具的命令是`sudo apt install curl`。


• 运行图形界面程序(可选):

• 虽然 WSL 主要是一个命令行环境,但你也可以通过安装 X 服务器来运行图形界面程序。例如,你可以安装 VcXsrv 或 Xming 等 X 服务器软件,并在 WSL 中设置环境变量`export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0`,然后就可以运行图形界面程序了。


四、WSL 的应用场景


WSL 的应用场景非常广泛,即使你不是程序员,也能从中受益。以下是一些常见的应用场景:


(一)数据科学
如果你对数据分析或机器学习感兴趣,WSL 提供了一个强大的环境来运行 Python、R 等数据科学工具。你可以轻松安装和使用 Jupyter Notebook、TensorFlow 等工具,而无需担心 Windows 环境的兼容性问题。


(二)Web 开发
对于 Web 开发者来说,WSL 是一个理想的开发环境。你可以使用 Node.js、Ruby on Rails 等工具来开发 Web 应用,并通过 WSL 的网络功能直接在本地测试和部署。


(三)系统管理
WSL 也可以用于系统管理任务。你可以使用 Linux 的命令行工具来管理 Windows 系统的文件和网络,甚至可以通过 WSL 来管理远程 Linux 服务器。


(四)学习 Linux
如果你对 Linux 感兴趣,但又不想安装完整的 Linux 系统,WSL 是一个完美的学习平台。你可以通过 WSL 学习 Linux 命令行操作、文件系统管理、脚本编写等知识。


五、常见问题及解决方法


在使用 WSL 的过程中,你可能会遇到一些问题。以下是一些常见问题及解决方法:


(一)WSL 无法启动

• 原因:可能是 WSL 功能未正确启用,或者 Linux 发行版安装失败。

• 解决方法:重新检查 WSL 功能是否启用(通过 Windows 功能窗口),并重新安装 Linux 发行版。


(二)文件权限问题

• 原因:在 WSL 中访问 Windows 文件系统时,可能会遇到权限问题。

• 解决方法:确保你以正确的用户权限操作文件。你可以使用`sudo`命令来提升权限,或者通过 Windows 设置修改文件夹的权限。

 

(三)网络连接问题 

• 原因:某些网络设置可能会导致 WSL 无法正常连接到外部网络。

• 解决方法:检查你的网络设置,确保 WSL 的网络模式为“桥接”或“NAT”。你可以在 Windows 的网络设置中调整虚拟网络适配器的配置。此外,确保防火墙没有阻止 WSL 的网络访问。如果问题仍然存在,可以尝试重启 WSL 或更新 Windows 系统。


(四)性能问题

• 原因:WSL 2 使用虚拟化技术,可能会占用较多的系统资源,尤其是在运行大型应用程序时。

• 解决方法:确保你的计算机有足够的内存和 CPU 资源。如果资源紧张,可以尝试关闭其他不必要的应用程序,或者调整 WSL 2 的内存分配。你可以在 WSL 2 的配置文件中设置内存限制,例如:

[wsl2]
memory=4GB  # 设置 WSL 2 的内存限制


(五)图形界面程序无法启动

• 原因:如果你尝试在 WSL 中运行图形界面程序,但没有正确配置 X 服务器,可能会导致程序无法启动。

• 解决方法:安装一个 X 服务器(如 VcXsrv 或 Xming),并确保在 WSL 中正确设置了`DISPLAY`环境变量。例如:

然后再次尝试运行图形界面程序。

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0


六、进阶技巧
除了基本的使用方法,WSL 还支持一些高级功能,可以帮助你更高效地使用它。


(一)自定义 WSL 配置
WSL 允许你通过配置文件来自定义其行为。你可以在`%UserProfile%\.wslconfig`文件中设置全局配置,例如内存和处理器限制。例如:

你还可以为每个 Linux 发行版单独配置,通过在发行版的根目录下创建`.wslconfig`文件来实现。

[wsl2]
memory=4GB
processors=2


(二)使用 WSL 2 的虚拟机功能
WSL 2 实际上是一个轻量级的虚拟机,你可以通过 Hyper-V 管理器来管理它。这让你可以更灵活地控制 WSL 2 的资源分配和网络设置。


(三)与 Docker 集成
如果你对容器化开发感兴趣,WSL 2 是一个理想的环境。WSL 2 支持完整的 Linux 内核特性,因此可以无缝运行 Docker。你只需要在 WSL 2 中安装 Docker,并确保它以管理员权限运行即可。


七、WSL 的未来展望
微软对 WSL 的支持一直在不断加强,未来可能会有更多的功能和改进。例如,微软可能会进一步优化 WSL 的性能,或者增加对更多 Linux 发行版的支持。此外,随着 Windows 和 Linux 的融合越来越紧密,WSL 也可能会成为更多非程序员用户的首选工具。


八、总结
通过本文的介绍,你应该对 WSL 有了一个全面的了解。无论你是想学习 Linux,还是需要一个强大的开发环境,WSL 都是一个非常实用的工具。它的安装和使用都非常简单,即使是非程序员用户也能轻松上手。

希望本文能帮助你更好地利用 WSL,提升你的工作效率和学习体验。如果你在使用过程中遇到任何问题,或者有其他疑问,欢迎在评论区留言,我会尽力为你解答。

 

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

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

相关文章

编程题-电话号码的字母组合(中等)

题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 解法一(哈希表动态添加)&#x…

python:如何播放 .spx 声音文件

.spx 是 Speex音频编解码器的文件扩展名,它是一种开源的、免费的音频编解码器,主要用于语音压缩和语音通信领域。spx 文件通常用于语音记录、VoIP应用、语音信箱等场景。 .mp3 是一种广泛使用的音频格式,它采用了有损压缩算法,可…

数据结构课程设计(三)构建决策树

3 决策树 3.1 需求规格说明 【问题描述】 ID3算法是一种贪心算法,用来构造决策树。ID3算法起源于概念学习系统(CLS),以信息熵的下降速度为选取测试属性的标准,即在每个节点选取还尚未被用来划分的具有最高信息增益的…

Vue3学习笔记-事件-4

一、事件处理 使用v-on或者后面加事件&#xff1a; <template><button v-on:click"addCount()">{{count}}</button> </template> 二、事件传参 传event&#xff1a; 不传参时&#xff0c;默认自动接收 event 传自定义参数时&#xff0c…

Node.js下载安装及环境配置

目录 一、下载 1. 查看电脑版本&#xff0c;下载对应的安装包 2. 下载路径下载 | Node.js 中文网 二、安装步骤 1. 双击安装包 2. 点击Next下一步 3. 选择安装路径 4. 这里我选择默认配置&#xff0c;继续Next下一步&#xff08;大家按需选择&#xff09; 5. 最后inst…

k8s二进制集群之ETCD集群证书生成

安装cfssl工具配置CA证书请求文件创建CA证书创建CA证书策略配置etcd证书请求文件生成etcd证书 继续上一篇文章《负载均衡器高可用部署》下面介绍一下etcd证书生成配置。其中涉及到的ip地址和证书基本信息请替换成你自己的信息。 安装cfssl工具 下载cfssl安装包 https://github…

使用python实现与本地ollama部署的deepseek对话

专栏总目录 按照ollama官方doc的example操作&#xff0c;没有成功与本地ollama上的deepseek-r1:1.5b通讯后&#xff0c;发现vscode可以调用本地ollama上的deepseek模型。 为了实现与ollama上的deepseek模型通讯&#xff0c;我使用wireshark对本地回环地址进行侦听后&#xff0c…

【大模型理论篇】最近大火的DeepSeek-R1初探系列1

1. 背景介绍 这一整个春节&#xff0c;被DeepSeek-R1刷屏。各种铺天盖地的新闻以及老板发的相关信息&#xff0c;着实感受到DeepSeek-R1在国外出圈的震撼。 DeepSeek推出了新的推理模型&#xff1a;DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero 是一个在没有经过监督微调…

C++哈希表深度解析:从原理到实现,全面掌握高效键值对存储

目录 一、核心组件与原理 1. 哈希函数&#xff08;Hash Function&#xff09; 2. 冲突解决&#xff08;Collision Resolution&#xff09; 3. 负载因子&#xff08;Load Factor&#xff09;与扩容 二、C实现&#xff1a;std::unordered_map 1. 模板参数 2. 关键操作与复…

Pandoc, Zotero, JabRef 管理论文引用,生成参考文献 | 撰写论文 paper

书接上回&#xff0c;使用 Obsidian, Zotero, JabRef, Pandoc, Markup-Markdown | 撰写论文 paper 管理论文引用&#xff0c;生成参考文献 TL; DR导出 bibliography 文件JabRefZotero 参考文献引用语法reference-docLinks TL; DR 安装 pandoc v3.6.2. 使用一下命令&#xff0c…

为AI聊天工具添加一个知识系统 之85 详细设计之26 批流一体式 与数据提取器

Q843、批流一体式 统一数据处理框架 "批流一体式统一数据处理框架" 这一概念通常指的是一种将批处理&#xff08;Batch Processing&#xff09;和流处理&#xff08;Stream Processing&#xff09;结合在一起的数据处理架构。它的目标是提供一个统一的框架&#xff…

深入理解 `box-sizing: border-box;`:CSS 布局的利器

深入理解 box-sizing: border-box;&#xff1a;CSS 布局的利器 默认行为示例代码 使用 box-sizing: border-box;示例代码 全局应用 box-sizing: border-box;示例代码 实际应用场景1. 表单布局2. 网格布局 总结 在 CSS 中&#xff0c;box-sizing 属性决定了元素的总宽度和高度是…

CSDN原力值提升秘籍:解锁社区活跃新姿势

在 CSDN 这个技术交流的大舞台上&#xff0c;原力值不仅是个人活跃度的象征&#xff0c;更是开启更多权益与福利的钥匙。最近&#xff0c;我出于自身需求&#xff0c;一头扎进了提升原力值的研究中&#xff0c;经过多方探索与资料整理&#xff0c;现在就迫不及待地把这些干货分…

计算机网络——流量控制

流量控制的基本方法是确保发送方不会以超过接收方处理能力的速度发送数据包。 通常的做法是接收方会向发送方提供某种反馈&#xff0c;如&#xff1a; &#xff08;1&#xff09;停止&等待 在任何时候只有一个数据包在传输&#xff0c;发送方发送一个数据包&#xff0c;…

2024美团春招硬件开发笔试真题及答案解析

目录 一、选择题 1、在 Linux,有一个名为 file 的文件,内容如下所示: 2、在 Linux 中,关于虚拟内存相关的说法正确的是() 3、AT89S52单片机中,在外部中断响应的期间,中断请求标志位查询占用了()。 4、下列关于8051单片机的结构与功能,说法不正确的是()? 5、…

【C语言入门】解锁核心关键字的终极奥秘与实战应用(三)

目录 一、auto 1.1. 作用 1.2. 特性 1.3. 代码示例 二、register 2.1. 作用 2.2. 特性 2.3. 代码示例 三、static 3.1. 修饰局部变量 3.2. 修饰全局变量 3.3. 修饰函数 四、extern 4.1. 作用 4.2. 特性 4.3. 代码示例 五、volatile 5.1. 作用 5.2. 代码示例…

Kafka分区策略实现

引言 Kafka 的分区策略决定了生产者发送的消息会被分配到哪个分区中&#xff0c;合理的分区策略有助于实现负载均衡、提高消息处理效率以及满足特定的业务需求。 轮询策略&#xff08;默认&#xff09; 轮询策略是 Kafka 默认的分区策略&#xff08;当消息没有指定键时&…

c++ stl 遍历算法和查找算法

概述&#xff1a; 算法主要由头文件<algorithm> <functional> <numeric> 提供 <algorithm> 是所有 STL 头文件中最大的一个&#xff0c;提供了超过 90 个支持各种各样算法的函数&#xff0c;包括排序、合并、搜索、去重、分解、遍历、数值交换、拷贝和…

2.2 实现双向链表的快速排序

实现一个双向链表的快速排序。 1>程序代码 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h>…

力扣动态规划-19【算法学习day.113】

前言 ###我做这类文章一个重要的目的还是记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&#xff01;&#xff01;&#xff01; 习题 1.矩形中移动的最大次数 题目链接…