解锁WSL:Windows下的Linux新世界

目录

  • 一、WSL 是什么
  • 二、WSL 的功能特点
    • 2.1 运行 Linux 环境
    • 2.2 开发工具支持
    • 2.3 文件系统集成
    • 2.4 命令行交互
    • 2.5 性能和兼容性
  • 三、WSL 的版本区别
    • 3.1 WSL1 介绍
    • 3.2 WSL2 介绍
    • 3.3 两者对比
  • 四、WSL 的安装教程
    • 4.1 安装前准备
    • 4.2 安装步骤
    • 4.3 安装 Linux 分发版
  • 五、WSL 的常用命令
    • 5.1 系统镜像管理
    • 5.2 系统启动与关闭
    • 5.3 镜像导出与导入
    • 5.4 其他常用命令
  • 六、WSL 的应用场景
    • 6.1 跨平台开发
    • 6.2 数据处理与分析
    • 6.3 Web 开发
    • 6.4 系统管理
  • 七、总结与展望


一、WSL 是什么

WSL,即 Windows Subsystem for Linux,是 Windows 系统上的一个子系统,它允许用户在 Windows 环境中直接运行原生的 Linux 二进制可执行文件,而无需借助传统的虚拟机或双系统启动方式 。简单来说,WSL 就像是在 Windows 和 Linux 之间搭建了一座桥梁,让用户能够在熟悉的 Windows 系统中,无缝体验 Linux 的强大功能。

对于开发者而言,在日常开发中常常需要在 Windows 系统上进行办公,同时又需要利用 Linux 系统的环境来编译、测试代码。以往,要么使用虚拟机,要么安装双系统,但这两种方式都存在一定的弊端。虚拟机需要占用大量的系统资源,导致电脑运行缓慢;双系统则需要在不同系统之间切换,操作繁琐。而 WSL 的出现,完美地解决了这些问题。它能够让开发者在 Windows 系统中直接打开 Linux 终端,运行 Linux 命令,使用 Linux 的各种开发工具,就像在真正的 Linux 系统中一样,大大提高了开发效率。

WSL 并非是简单地模拟一个 Linux 环境,而是通过一系列的技术手段,实现了 Windows 内核与 Linux 内核接口的交互。它主要包含用户态和内核态组件。用户态会话管理服务负责处理 Linux 实例的生命周期;Pico provider drivers(lxss.sys, lxcore.sys)则起到了 “翻译” 的作用,将 Linux 系统调用转换为 Windows NT 内核能够理解的调用,从而模拟出 Linux 内核的行为;Pico 进程用于管理原生的用户态 Linux,比如常见的 /bin/bash。通过这些组件的协同工作,使得未经修改的 Linux 二进制文件能够在 Windows 系统中顺利运行。

二、WSL 的功能特点

2.1 运行 Linux 环境

WSL 允许用户在 Windows 系统上直接运行 Linux 命令行工具、脚本和应用程序,无需额外的虚拟机软件或复杂的配置。这使得用户能够在 Windows 的图形界面下,轻松地利用 Linux 丰富的命令行工具来完成各种任务。无论是进行系统管理、文本处理还是开发工作,都可以在熟悉的 Windows 环境中,借助 Linux 的强大功能来实现。

目前,用户可以从微软应用商店中选择多种常见的 Linux 发行版进行安装,如 Ubuntu、Debian、Fedora、Kali Linux 等。这些发行版各自具有独特的特点和优势,能够满足不同用户的需求。例如,Ubuntu 以其易用性和庞大的社区支持而受到广泛欢迎,适合初学者和一般开发者;Debian 则以稳定性和开源纯粹性著称,拥有丰富的软件包资源,是服务器部署的热门选择;Fedora 注重提供最新的开源软件和技术,适合追求新技术的开发者和技术爱好者;Kali Linux 则专注于网络安全和渗透测试领域,内置了大量专业的安全工具,是安全专业人员的得力助手。

2.2 开发工具支持

对于开发者而言,WSL 提供了极大的便利,使得在 Windows 上进行 Linux 开发变得轻而易举。在 WSL 环境中,开发者可以安装和使用各种常用的 Linux 开发工具,如 GCC(GNU Compiler Collection)、Make、Git、Python、Node.js 等。这些工具在 Linux 开发中广泛应用,为开发者提供了高效的开发环境。

以 Python 开发为例,在 WSL 中安装 Python 及其相关的库和框架,如 Django、Flask 等,与在原生 Linux 系统中操作几乎没有区别。开发者可以使用熟悉的 Linux 命令来创建项目、安装依赖、运行测试等,同时还能享受到 Windows 系统在图形界面和办公软件方面的优势。此外,WSL 还支持与 Windows 上的集成开发环境(IDE)进行无缝协作,如 Visual Studio Code、PyCharm 等。通过安装相应的插件,这些 IDE 可以直接连接到 WSL 中的开发环境,实现代码的编辑、调试和运行,进一步提高开发效率。

2.3 文件系统集成

WSL 实现了 Windows 与 Linux 文件系统的深度集成,这意味着用户可以在 Windows 和 Linux 环境之间方便地共享文件和数据。在 WSL 中,Windows 的磁盘分区会被挂载到特定的目录下,通常位于 /mnt 目录中。例如,Windows 的 C 盘在 WSL 中对应的路径为 /mnt/c,D 盘对应 /mnt/d,以此类推。用户可以在 WSL 中直接访问 Windows 磁盘上的文件,就像访问本地 Linux 文件一样。同时,也可以在 Windows 的资源管理器中访问 WSL 中 Linux 文件系统的内容。

这种文件系统集成的特性,使得在不同环境下进行文件操作变得非常便捷。比如,在 Windows 上使用文本编辑器创建的代码文件,无需繁琐的文件传输操作,就可以直接在 WSL 的 Linux 环境中进行编译和运行;反之,在 WSL 中生成的数据文件,也可以直接在 Windows 的办公软件中打开和处理。此外,WSL 还支持在不同环境间共享环境变量,进一步增强了系统的兼容性和互操作性。

2.4 命令行交互

用户可以通过 Windows 命令提示符(CMD)或 PowerShell 启动 WSL 的 Linux 命令行终端,并且可以在两者之间实现命令行工具的交互。在 Windows 命令提示符或 PowerShell 中,只需输入 “wsl” 命令,即可启动默认的 WSL Linux 发行版的命令行终端。在这个终端中,用户可以执行各种 Linux 命令,如 ls(列出目录内容)、cd(切换目录)、grep(文本搜索)等。

更为方便的是,用户还可以在 Windows 命令提示符或 PowerShell 中直接运行 Linux 命令。例如,在 PowerShell 中输入 “wsl ls -l”,就可以列出当前目录下的文件和目录详细信息,就像在 Linux 命令行中执行一样。同时,也可以在 WSL 的 Linux 命令行终端中运行 Windows 的可执行文件(.exe)。例如,在 WSL 中输入 “notepad.exe”,就可以启动 Windows 的记事本程序,实现了不同系统命令行工具的无缝切换和协同工作。

2.5 性能和兼容性

在性能方面,WSL 2 相较于 WSL 1 有了显著提升。WSL 2 采用了基于 Hyper-V 的轻量级虚拟机技术,运行完整的 Linux 内核,这使得它在文件系统性能、网络性能以及应用程序的运行效率等方面都有了大幅提高。例如,在 WSL 2 中进行文件的读写操作,速度明显加快,能够更好地满足开发者对大数据量处理的需求;在运行网络应用程序时,网络延迟更低,稳定性更强,能够提供更接近原生 Linux 系统的网络体验。

在兼容性方面,WSL 不断发展和完善,目前已经能够支持绝大多数的 Linux 命令行工具、脚本和应用程序。虽然仍有极少数特定的 Linux 软件可能存在兼容性问题,但随着微软和开源社区的持续努力,这些问题也在逐步得到解决。同时,WSL 还支持与 Windows 系统的各种功能进行集成,如硬件驱动、图形界面等,进一步拓展了其应用场景。

三、WSL 的版本区别

3.1 WSL1 介绍

WSL1 是 Windows Subsystem for Linux 的第一个版本 ,发布于 Windows 10 1607 更新中。它的核心运行原理是基于 Linux 内核的动态二进制翻译(Dynamic Binary Translation, DBT)技术,并不包含一个真正的 Linux 内核。相反,它提供了一个模拟的 Linux 内核接口,将 Linux 系统调用(system calls)转换为 Windows 系统调用。

这种转换机制使得大多数 Linux 应用可以在 WSL1 上运行,为开发者在 Windows 环境中使用 Linux 工具提供了便利。比如,开发者可以在 WSL1 中安装 GCC 编译器,通过简单的命令行操作,就能够编译 C、C++ 代码,就像在原生 Linux 系统中一样。然而,这种模拟和转换也带来了一些局限性。由于不是基于真正的 Linux 内核,某些特定的系统调用可能不被支持,或者其行为与真实的 Linux 环境有所不同。在文件 I/O 性能方面,WSL1 相对较低。当进行大量文件的读写操作时,比如编译大型项目,其速度明显慢于原生 Linux 系统,这在一定程度上影响了开发效率;在运行一些对内核功能依赖较深的应用程序时,WSL1 可能会出现兼容性问题,导致程序无法正常运行。

3.2 WSL2 介绍

WSL2 是 WSL 的下一代版本,随着 Windows 10 1903 更新引入。它采用了更底层的技术,即 Linux 内核的原生执行环境(Native Execution Environment, NEE),使用了真正的 Linux 内核,运行在轻量级的虚拟机中。这是 WSL2 与 WSL1 的关键区别,也是其性能和兼容性大幅提升的基础。

WSL2 通过在 Windows 和 Linux 之间建立一个轻型虚拟机,使得 Linux 内核能够直接在 Windows 系统上运行。这种方式带来了诸多优势,在文件 I/O 性能上有了显著提升,进行文件的读写操作时速度更快,能够更好地满足开发者对大数据量处理的需求;在兼容性方面,WSL2 能够更好地支持一些对于 Linux 系统更为特有的操作,几乎所有在 Linux 上能运行的应用程序都可以在 WSL 2 上运行。此外,WSL2 还支持 Kubernetes、Docker 等容器技术,以及 GPU 驱动,这使得它在服务器开发、科学计算等领域表现更为出色,为开发者提供了更强大的工具和更广阔的应用场景。例如,数据科学家可以在 WSL2 中利用 GPU 加速进行深度学习模型的训练,大大缩短训练时间,提高工作效率。

3.3 两者对比

在启动时间方面,WSL1 由于不需要启动完整的虚拟机,启动速度相对较快,几乎可以实现秒开,能够让用户快速进入 Linux 环境进行操作;而 WSL2 因为需要启动轻量级虚拟机和加载 Linux 内核,启动时间相对较长,但随着技术的优化,这个时间也在不断缩短。

资源占用上,WSL1 对硬件资源的需求较低,占用更少的系统内存和 CPU 资源,在配置较低的计算机上也能较为流畅地运行,适合对资源要求不高的日常开发和轻量级应用场景;WSL2 虽然性能更强,但由于引入了轻型虚拟机,相对 WSL1 会占用更多的系统资源,对计算机的硬件配置有一定要求,尤其是内存,在运行大型项目或多个应用程序时,可能需要更高的内存配置来保证系统的稳定运行。

系统调用兼容性上,WSL1 存在一定的局限性,某些特定的系统调用无法支持,这导致一些依赖这些调用的应用程序无法正常运行;WSL2 则提供了完全的系统调用兼容性,几乎可以运行所有的 Linux 应用程序,能够满足开发者对各种复杂应用场景的需求。

文件系统性能也是两者的重要区别。WSL1 在文件系统性能上相对较低,特别是在处理大量小文件的读写操作时,速度较慢,这对于需要频繁进行文件操作的开发任务来说,会影响工作效率;WSL2 则使用了特殊的文件系统桥接技术,在 Windows 文件系统和 Linux 文件系统之间的文件操作更加高效,大大提高了文件读写速度,能够更好地支持大型项目的开发和运行。

四、WSL 的安装教程

4.1 安装前准备

在安装 WSL 之前,需要确保你的 Windows 系统满足一定的条件。首先,检查 Windows 版本,WSL 2 需要 Windows 10 版本 1903 及以上(内部版本 18362 及以上),或者 Windows 11。你可以通过按下 Win+R 键,打开 “运行” 对话框,输入 “winver” 并回车,来查看当前的 Windows 版本。

其次,需要开启 “适用于 Linux 的 Windows 子系统” 和 “虚拟机平台” 功能。以管理员身份打开 Windows PowerShell,输入以下两条命令并回车:

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

执行完上述命令后,重启计算机以使设置生效。此外,如果你的计算机 BIOS 中没有开启虚拟化功能,还需要进入 BIOS 设置界面,找到 “虚拟化技术”(如 Intel VT-x 或 AMD-V)选项并将其启用。不同品牌的计算机进入 BIOS 的方式可能不同,常见的按键有 Del、F2、F10 等,一般在计算机启动时会有相应的提示。

4.2 安装步骤

完成上述准备工作后,就可以开始安装 WSL 了。以管理员身份再次打开 Windows PowerShell,输入以下命令:

wsl --install

这个命令会自动安装 WSL 并下载安装默认的 Linux 发行版(通常是 Ubuntu)。安装过程可能需要一些时间,具体取决于你的网络速度和计算机性能。在安装过程中,可能会提示你重启计算机,按照提示操作即可。

安装完成后,为了充分利用 WSL 2 的优势,建议将默认版本设置为 WSL 2。在 PowerShell 中输入以下命令:

wsl --set-default-version 2

4.3 安装 Linux 分发版

除了使用默认安装的 Ubuntu,你还可以从微软商店中选择并安装其他喜欢的 Linux 发行版。打开微软商店,在搜索框中输入 “Linux”,即可列出所有可用的 Linux 发行版,如 Debian、Fedora、Kali Linux 等。选择你想要安装的发行版,点击 “获取” 按钮开始下载和安装。

首次启动安装好的 Linux 发行版时,会进行初始化设置。系统会提示你创建一个新的 Linux 用户账户和密码,按照提示输入即可。这个用户账户将用于在 WSL 中执行各种操作,拥有相应的权限。设置完成后,你就可以在 WSL 的 Linux 环境中尽情使用各种 Linux 命令和工具了。

五、WSL 的常用命令

在使用 WSL 的过程中,掌握一些常用命令可以极大地提高操作效率。这些命令涵盖了系统镜像管理、启动与关闭、镜像导出与导入以及其他日常使用的功能。下面将详细介绍这些常用命令。

5.1 系统镜像管理

  • 列出已安装的 WSL 子系统及运行状态:使用wsl --list -v命令,可查看所有已安装的 WSL 子系统以及它们的运行状态。例如,在 PowerShell 中执行该命令,会得到类似如下的输出:
  NAME                   STATE           VERSION
* Ubuntu-22.04           Running         2
  Debian                 Stopped         2

其中,*表示当前默认启动的系统,STATE列显示系统的运行状态(Running 表示正在运行,Stopped 表示已停止),VERSION列显示 WSL 的版本。

  • 设置默认启动的系统:如果安装了多个 WSL 子系统,可通过wsl --set-default <分发版名称>命令来设置默认启动的系统。例如,要将 Debian 设置为默认启动系统,执行wsl --set-default Debian即可 。此后,在命令行中直接输入wsl,将启动 Debian 系统。

5.2 系统启动与关闭

  • 启动 WSL 系统:可以通过开始菜单找到已安装的 Linux 发行版,点击即可启动对应的 WSL 系统。也可以在命令行中使用wsl -d <分发版名称>命令来启动指定的 WSL 系统。比如,要启动 Ubuntu-22.04,输入wsl -d Ubuntu-22.04。如果不指定分发版名称,直接输入wsl,则会启动默认的 WSL 系统。
  • 关闭 WSL 系统:在 WSL 系统的命令行终端中,输入exit命令即可退出当前会话,关闭 WSL 系统。如果想要强制终止正在运行的 WSL 系统,可以在 PowerShell 中使用wsl --terminate <分发版名称>命令。例如,wsl --terminate Ubuntu-22.04将立即终止 Ubuntu-22.04 系统的运行 。此外,还可以使用wsl --shutdown命令来立即终止所有正在运行的 WSL 分发版和 WSL 2 轻型工具虚拟机。

5.3 镜像导出与导入

  • 导出 WSL 镜像:使用wsl --export <分发版名称> <导出文件名>命令可以将指定的 WSL 镜像导出为一个 tar 文件。例如,要导出 Ubuntu-22.04 的镜像,并将其保存为ubuntu2204.tar,执行wsl --export Ubuntu-22.04 ubuntu2204.tar。导出过程可能需要一些时间,具体取决于镜像的大小和系统性能。导出的镜像文件可以用于备份、迁移或在其他系统上导入。
  • 导入 WSL 镜像:通过wsl --import <分发版名称> <安装位置> <导出镜像文件名> [选项]命令可以将导出的镜像文件导入为一个新的 WSL 子系统。例如,要将ubuntu2204.tar镜像导入到D:\WSL\Ubuntu2204目录下,并命名为Ubuntu2204,执行wsl --import Ubuntu2204 D:\WSL\Ubuntu2204 ubuntu2204.tar。如果需要指定导入的 WSL 版本,可以使用–version <版本>选项,如wsl --import Ubuntu2204 D:\WSL\Ubuntu2204 ubuntu2204.tar --version 2 。导入完成后,就可以在 WSL 中使用新导入的子系统了。

5.4 其他常用命令

  • 更新软件包:在 WSL 的 Linux 环境中,使用包管理器来更新软件包。对于基于 Debian 或 Ubuntu 的系统,使用sudo apt update命令来更新软件包列表,然后使用sudo apt upgrade命令来升级已安装的软件包到最新版本。例如,在 Ubuntu-22.04 中,先执行sudo apt update,等待更新完成后,再执行sudo apt upgrade,系统会提示需要升级的软件包列表,输入y并回车即可开始升级。
  • 安装软件:同样使用包管理器来安装软件。以安装vim文本编辑器为例,在基于 Debian 或 Ubuntu 的系统中,执行sudo apt install vim命令,系统会自动下载并安装vim及其依赖项。对于基于 Red Hat 或 Fedora 的系统,则使用sudo dnf install vim命令来进行安装 。除了使用包管理器安装软件,还可以通过下载软件的源代码进行编译安装,或者使用一些特定的安装脚本进行安装,具体方法根据软件的要求而定。

六、WSL 的应用场景

6.1 跨平台开发

在当今的软件开发领域,跨平台开发已成为一种趋势,开发者常常需要为多个操作系统开发应用程序。WSL 为跨平台开发提供了一个理想的环境,它允许开发者在熟悉的 Windows 系统上,直接运行 Linux 环境进行开发和测试,无需频繁切换操作系统,大大提高了开发效率。

以开发一个同时支持 Windows 和 Linux 的桌面应用程序为例,使用 WSL,开发者可以在 Windows 系统中安装 Ubuntu 等 Linux 发行版,然后在 WSL 环境中搭建开发环境,安装所需的开发工具和依赖库,如 Qt 开发框架。在开发过程中,开发者可以使用 Windows 上的文本编辑器进行代码编写,同时利用 WSL 中的 Linux 工具进行编译和调试。这样,开发者可以在同一台计算机上快速地切换不同的开发环境,对应用程序在 Windows 和 Linux 系统下的兼容性进行测试,确保应用程序在不同平台上都能稳定运行。

6.2 数据处理与分析

数据科学家在进行数据分析和机器学习模型训练时,常常需要使用各种专业的工具和库,而这些工具和库在 Linux 环境中往往具有更好的支持和性能表现。WSL 使得数据科学家可以在 Windows 系统上利用 Linux 的强大工具链进行数据处理和分析工作。

在 WSL 中,数据科学家可以安装 Python 及其相关的数据分析和机器学习库,如 NumPy、pandas、scikit - learn、TensorFlow 等,使用这些工具进行数据清洗、预处理、模型训练和评估。例如,利用 pandas 库对大规模的数据集进行清洗和整理,使用 scikit - learn 库构建和训练机器学习模型,通过 TensorFlow 库进行深度学习模型的开发和训练。同时,WSL 还支持 GPU 加速,数据科学家可以利用 NVIDIA CUDA 等技术,充分发挥计算机 GPU 的性能,加速模型训练过程,提高工作效率。

6.3 Web 开发

对于 Web 开发者来说,搭建一个稳定、高效的开发环境至关重要。Linux 系统因其开源、稳定和丰富的服务器软件资源,成为 Web 开发的首选平台之一。WSL 让 Web 开发者能够在 Windows 系统上轻松搭建 Linux 开发环境,使用 Linux 下的各种服务器和应用软件。

在 WSL 中,Web 开发者可以安装 Apache、Nginx 等 Web 服务器,MySQL、PostgreSQL 等数据库管理系统,以及 PHP、Python(Flask、Django 框架)、Node.js 等 Web 开发语言和框架。例如,使用 Nginx 作为 Web 服务器,搭配 MySQL 数据库和 Django 框架,开发一个功能完备的 Web 应用程序。开发者可以在 Windows 的图形界面下使用自己熟悉的代码编辑器进行代码编写,同时利用 WSL 中的 Linux 命令行工具进行项目的初始化、依赖安装、服务器启动和调试等操作,实现更加逼真的开发环境,提高开发效率和项目质量。

6.4 系统管理

对于 IT 管理员来说,管理远程服务器和容器是日常工作中的重要任务。WSL 提供了一个便捷的方式,让 IT 管理员可以在 Windows 系统上利用 Linux 的命令行工具来管理远程服务器和容器。

IT 管理员可以在 WSL 中安装 SSH 客户端,通过 SSH 协议连接到远程 Linux 服务器,使用熟悉的 Linux 命令进行服务器的配置、监控和维护。例如,使用 top 命令查看服务器的性能指标,使用 df -h 命令查看磁盘空间使用情况,使用 apt - get 或 yum 命令安装和更新软件包等。此外,WSL 还支持 Docker 等容器化技术,IT 管理员可以在 WSL 中运行 Docker 容器,对容器进行创建、启动、停止、删除等操作,实现对容器化应用的高效管理。

七、总结与展望

WSL 作为 Windows 系统上运行 Linux 环境的创新方案,为用户带来了前所未有的便利,具有诸多显著优势。它打破了 Windows 和 Linux 系统之间的壁垒,实现了两者的深度融合,让用户能够在熟悉的 Windows 环境中,便捷地使用 Linux 的丰富工具和应用程序,极大地提高了工作效率。在文件系统集成方面,WSL 实现了 Windows 与 Linux 文件系统的无缝对接,用户可以在不同系统环境下自由地共享文件和数据,无需繁琐的文件传输操作,这在跨平台开发和数据处理等场景中尤为重要。

WSL 在跨平台开发、数据处理与分析、Web 开发以及系统管理等多个领域都有着广泛的应用场景,为不同领域的用户提供了强大的支持。在跨平台开发中,开发者能够在同一台计算机上轻松切换 Windows 和 Linux 开发环境,确保应用程序在不同平台上的兼容性;数据科学家可以利用 WSL 中的 Linux 工具和 GPU 加速技术,高效地进行数据分析和机器学习模型训练;Web 开发者能够在 Windows 系统上搭建逼真的 Linux 开发环境,提升 Web 应用程序的开发质量和效率;IT 管理员则可以通过 WSL 方便地管理远程服务器和容器,实现对系统的高效运维。

展望未来,随着微软对 WSL 的持续投入和开源社区的积极参与,WSL 有望在性能、兼容性和功能丰富度上取得更大的突破。在性能方面,有望进一步优化文件系统和网络性能,使其更加接近原生 Linux 系统的表现,为用户提供更流畅的使用体验;在兼容性上,将不断拓展对更多 Linux 应用程序和内核功能的支持,减少兼容性问题,让用户能够在 WSL 中运行几乎所有的 Linux 软件;在功能丰富度上,可能会引入更多创新的功能,如更好的图形界面支持、更强大的系统管理工具等,进一步拓展 WSL 的应用领域。

微软将 WSL 项目正式开源,更是为其发展注入了新的活力。开源后,全球开发者可以深入参与其核心代码的优化与扩展,极大地激发了社区的创新潜能。未来,基于开源 WSL 的深度学习工具链和 AI 应用有望迎来全面繁荣,推动 WSL 在人工智能、大数据分析等前沿领域发挥更大的作用,助力行业迈入智能化新时代 。我们有理由相信,WSL 将在未来的技术发展中扮演更加重要的角色,为用户带来更多的惊喜和便利。

你可能感兴趣的:(必备核心技能,windows,linux,WSL,跨平台开发)