wsl-windows的linux子系统笔记

WSL介绍

微软官方的介绍

开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用。

WSL(Windows Subsystem for Linux)是一个为在Windows 10和Windows 11上无缝运行Linux二进制可执行文件(ELF格式)而设计的兼容层。它允许开发者直接在Windows上运行Linux环境,包括大多数命令行工具、实用程序和应用程序,而无需设置传统的虚拟机或双重启动设置。

wsl1和wsl2没有绝对的哪个好,各有各的特点,按需选择

WSL 1

WSL 1 是第一个版本的Windows Subsystem for Linux,它通过一个翻译层实现,这个翻译层将Linux系统调用转换为Windows系统调用。这种方法允许Linux程序在Windows上运行,而不需要Linux内核。
特点:

WSL 2

WSL 2 是对WSL的重大更新,引入了真正的Linux内核,通过虚拟化技术运行在一个轻量级的虚拟机(VM)中。这提供了更完整的Linux系统调用兼容性,改善了性能,尤其是文件系统性能,同时保持了与WSL 1 相同的用户体验。
特点:

WSL 1 与 WSL 2 的区别

总的来说,WSL 2 在功能和性能上都有显著提升,特别是对于需要高度兼容Linux环境的开发者来说,WSL 2 是更好的选择。然而,对于那些对资源占用有严格限制或需要与Windows系统更紧密集成的场景,WSL 1 仍然是一个可行的选项。

WSL的安装

微软官方教程:安装 WSL | Microsoft Learn

1. 启用 WSL 功能

打开开始菜单,在开始菜单中输入 启用或关闭 Windows 功能,在弹出的窗口中勾选 虚拟机平台 和 适用于 Linux 的 Windows 子系统,确定之后重启系统。

重启系统后,打开终端,在终端中输入:wsl.exe --update

即可安装 WSL 相关的组件,这一步可能需要几分钟的时间。

注意:这一步需要保证 Windows Update,Windows 防火墙等功能可以正常使用,如果这一步报错Ox80072ee2 可看下一步的解决方法。

2. 安装Ubuntu

打开微软商店里下载Ubuntu发行版:安装 WSL | Microsoft Learn
由于网络因素,无法下载,就用本地安装方法,下面找了一堆下载地址

升级WSL2

旧版 WSL 的手动安装步骤 | Microsoft Learn
网上下载msi安装包安装即可(或者找我要安装包)

设置WSL2为默认版本

打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:

wsl --set-default-version 2

下面是使用中遇到的常见问题👇👇👇

WSL与windows的文件互通问题

在WSL(Windows Subsystem for Linux)中,Windows和Linux之间的文件互通是一个重要的功能,它允许用户在两个系统之间无缝地访问和操作文件。以下是关于如何在WSL中访问Windows文件,以及在Windows中访问WSL文件的方法和特点。

WSL 访问 Windows 文件

在WSL中访问Windows文件系统是相对直接的。Windows的驱动器在WSL中自动挂载,并且可以通过/mnt/<drive>路径访问,其中<drive>是Windows中的驱动器字母(例如C、D等)。

访问方式:

  1. 打开WSL终端。
  2. 使用cd命令进入挂载的Windows文件系统,例如:
   cd /mnt/c
  1. 现在你可以使用Linux命令来浏览和操作Windows文件系统中的文件。

特点:

Windows 访问 WSL 文件

常规访问文件方法

此电脑(资源管理器、explorer.exe)左边栏中有个linux,点开里面就是wsl的所有文件

程序员角度的访问文件

在Windows中访问WSL的文件系统则稍微复杂一些,但Windows 10的更新版已经提供了更为直接的方法。

访问方式:

  1. 在文件资源管理器中,输入\wsl$,然后按回车。这将显示所有已安装的Linux发行版。

或者,你可以直接使用特定发行版的路径,例如:

\\wsl$\Ubuntu\home

这里,“Ubuntu”是Linux发行版的名称,home是Linux文件系统中的一个目录。

特点:

WSL中的GPU直连(nvidia的cuda)

在WSL中使用GPU:WSL2 + Ubuntu 18.04 + CUDA + Gnome图形界面环境配置

WSL网络的clash代理

在 WSL2 中使用 Clash for Windows 代理连接 - East Monster 个人博客

WSL 2.3.11 版本新增了图形化配置界面 (WSL Settings),在网络 > 网络模式处选择 Mirrored 即可:

至于WSL1,我没用过,我不知道

注意:开关代理后需要重启WSL才可生效

WSL开ssh服务器局域网其他设备连接

Win11将WSL做SSH服务器,实现通过局域网SSH远程连接到WSL上,并且开机自动启动,手把手教学_wsl ssh-CSDN博客

使用ssh服务器你可能需要设置端口转发来实现局域网或外网访问

powershell设置端口转发

## 端口转发设置方法:

命令都是在管理员权限的 powershell 中执行

创建端口转发规则的命令:

netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=22 connectaddress=127.0.0.1 connectport=222

意思是系统检测(监听)到内部或者是外部有对 ip: 0.0.0.022 端口 的访问,就把他转发到
ip: 127.0.0.1222端口去

删除端口转发规则的命令:

netsh interface portproxy delete v4tov4 listenport=22 listenaddress=0.0.0.0

删除对 ip: 0.0.0.022 端口的监听规则

使用以下命令列出当前的所有端口转发规则:

netsh interface portproxy show all

wsl导致系统不能休眠、睡眠解决方案

大概率失效方法:

windows装了wsl子系统后不能正常休眠的问题_虚拟机监控程序不支持此待机状态-CSDN博客

命令行里输入三行命令

powercfg -a

bcdedit -set hypervisorlaunchtype off

bcdedit -set hypervisorlaunchtype auto

自己遇到后的解决方法

下载windows系统镜像,右键挂载后打开setup.exe,进去选择保留全部文件的重装即可(放心,软件设置文件配置等等等全部都在,不会变一点!)