windows subsystem for linux(超详细)

更新时间:

💡一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观

前言:为什么 Windows 用户需要 Windows Subsystem for Linux?

在编程领域,开发者常常需要在不同操作系统间切换。对于使用 Windows 系统的开发者而言,想要体验 Linux 的开发环境,过去只能依赖虚拟机或双系统安装,这不仅耗时且资源占用高。而 Windows Subsystem for Linux(WSL) 的诞生,彻底改变了这一局面。它允许用户在 Windows 上直接运行 Linux 命令行工具和应用程序,无需复杂配置,堪称 Windows 与 Linux 之间的“翻译官”和“桥梁”。本文将从零开始,逐步解析 WSL 的核心功能、使用场景及进阶技巧,帮助开发者高效构建跨平台开发环境。


一、WSL 的核心概念与版本演进

1.1 什么是 WSL?

WSL 是微软开发的一项技术,通过在 Windows 内核中模拟 Linux 内核接口,使用户能够在 Windows 环境下无缝运行 Linux 发行版(如 Ubuntu、Debian 等)。它并非虚拟机,而是通过系统级的层叠架构,直接将 Linux 的系统调用翻译为 Windows 的内核操作,从而实现高效运行。

比喻:若将 WSL 比作一座桥梁,那么 Windows 是桥的一端,Linux 是另一端。这座桥梁允许开发者在不离开 Windows 的情况下,直接“步行”到 Linux 的世界,享受 Linux 的工具与生态。

1.2 WSL 的版本差异

WSL 目前共有三个主要版本:

  • WSL 1(第一代):通过用户模式层将 Linux 系统调用翻译为 Windows API,性能受限,但兼容性较好。
  • WSL 2(第二代):引入了基于轻量级虚拟机的内核模块,直接支持完整的 Linux 内核功能,文件系统性能提升显著。
  • WSLg(图形界面支持):随 WSL 2 发布,允许在 Windows 中运行 Linux 的 GUI 应用(如图形化开发工具)。

表格对比: | 特性 | WSL 1 | WSL 2 | |---------------------|--------------------------|--------------------------| | 文件系统性能 | 较慢(依赖翻译层) | 高效(直接挂载) | | 网络支持 | 基础支持 | 完全支持(如 Docker 容器)| | 虚拟化依赖 | 不需要 Hyper-V | 需要 Hyper-V | | 适用场景 | 轻量级命令行任务 | 需要高性能的开发场景 |


二、从零开始:安装与配置 WSL

2.1 系统要求与准备工作

  • 硬件:支持 SLAT(Second-Level Address Translation)的 CPU(大多数现代 CPU 均支持)。
  • Windows 版本:Windows 10 版本 2004 或更高,或 Windows 11。
  • 启用虚拟机功能:若选择 WSL 2,需确保 Hyper-V 已启用。

2.2 安装步骤

  1. 启用 WSL 功能
    # 以管理员身份运行 PowerShell
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
  2. 选择 WSL 版本
    wsl --set-default-version 2  # 设置默认为 WSL 2
    
  3. 安装 Linux 发行版: 打开 Microsoft Store,搜索“Ubuntu”或“Debian”,下载并安装。

2.3 配置与初次使用

安装完成后,启动 Linux 发行版,设置用户名和密码。接下来可执行基础命令:

pwd
ls -la
sudo apt update && sudo apt install git

三、WSL 的核心功能与实用技巧

3.1 文件系统互通性

WSL 与 Windows 的文件系统通过以下路径互通:

  • Windows 路径/mnt/c/ 对应 C:\ 盘。
  • Linux 路径:在 Windows 中访问 WSL 的文件需通过 \\wsl$ 路径。

案例:在 Windows 的资源管理器中输入 \\wsl$\Ubuntu\home\username,即可直接查看 Linux 发行版的用户目录。

3.2 开发环境搭建

WSL 支持完整的 Linux 开发工具链,例如:

  • 编译工具:GCC、Clang。
  • 版本控制:Git(直接在 WSL 中管理代码仓库)。
  • Web 开发:Node.js、Python 环境。

示例代码:在 WSL 中运行 Python 脚本

print("Hello from WSL!")

在终端执行:

python3 hello.py

3.3 进阶功能:与 Docker 的结合

在 WSL 2 中,Docker Desktop 可以直接利用 WSL 2 的内核运行容器,无需额外虚拟机:

docker run -it ubuntu

四、解决常见问题与优化技巧

4.1 性能优化

  • 提升文件读写速度:将项目文件存储在 Linux 的 /home 目录下,而非 /mnt 挂载路径。
  • 禁用 GUI 应用自动启动:若不使用图形界面,可在 /etc/wsl.conf 中配置:
    [launcher]
    executable = ""
    

4.2 版本升级与发行版管理

wsl --list --verbose

wsl --set-version Ubuntu 2

wsl --unregister Ubuntu

4.3 网络与端口映射

在 WSL 中运行的服务(如本地 Web 服务器)可通过以下方式访问:

ip addr show eth0

http://<WSL_IP>:8080

五、实际案例:在 WSL 中搭建全栈开发环境

5.1 场景:Node.js + MySQL 后端服务

  1. 安装 Node.js
    curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    sudo apt install -y nodejs
    
  2. 创建项目目录
    mkdir ~/projects/backend && cd ~/projects/backend
    npm init -y
    npm install express mysql
    
  3. 编写代码server.js):
    const express = require('express');
    const mysql = require('mysql');
    
    const app = express();
    const connection = mysql.createConnection({
      host: 'localhost',
      user: 'root',
      password: 'password',
      database: 'test'
    });
    
    app.get('/data', (req, res) => {
      connection.query('SELECT * FROM users', (err, results) => {
        res.json(results);
      });
    });
    
    app.listen(3000, () => {
      console.log('Server running on port 3000');
    });
    
  4. 运行服务
    node server.js
    
  5. 访问服务:在 Windows 浏览器输入 http://localhost:3000/data,即可查看结果。

5.2 场景:Python 机器学习开发

  1. 安装 Python 环境
    sudo apt install python3-pip
    pip3 install numpy pandas scikit-learn
    
  2. 编写简单脚本ml_script.py):
    import numpy as np
    from sklearn.datasets import load_iris
    from sklearn.tree import DecisionTreeClassifier
    
    data = load_iris()
    X, y = data.data, data.target
    
    model = DecisionTreeClassifier()
    model.fit(X, y)
    
    print("Model accuracy:", model.score(X, y))
    
  3. 执行脚本
    python3 ml_script.py
    

结论:WSL 是 Windows 开发者的必备工具

通过本文的讲解,开发者可以清晰地看到 Windows Subsystem for Linux 在简化开发流程、提升跨平台兼容性方面的巨大价值。无论是初学者尝试 Linux 命令,还是中级开发者需要完整的 Linux 生态,WSL 都提供了高效、低门槛的解决方案。随着微软持续优化 WSL 的性能与功能(如 WSLg 对 GUI 的支持),它必将成为 Windows 用户构建现代化开发环境的核心工具。

未来,随着云原生技术的普及,WSL 在容器化开发、微服务部署等场景中的作用将更加突出。建议开发者尽快掌握 WSL 的使用,以应对日益复杂的跨平台开发需求。

最新发布