>> >> >> Reference << << << <<<<<<Ref>>>>>>
>> >> >> Indexer << << << <<<<<<Idx>>>>>>
Matched: 0

Tags

    Categories

      Types

        Top Results

          WSL
          M: 2026-04-09 - ljf12825

          WSL全称是Windows Subsystem for Linux

          WSL可以在Windows里面“原生”运行Linux

          工作原理

          它不是一个虚拟机,也不是一个Cygwin。它是一个更底层、更集成、更高效的解决方案。Linux内核与Windows内核通过一种轻量级的虚拟化技术协同工作,使得Linux系统调用能够被翻译并直接在Windows上执行,从而实现了近乎原生的性能

          WSL 两大版本

          特性WSL1WSL2
          架构翻译层。将Linux系统调用翻译为Windows内核的系统调用轻量级实用工具。运行在由Hyper-V技术管理的轻量级虚拟机中,包含完整的Linux内核
          文件系统性能在跨操作系统的文件操作中表现较好(例如在Linux中访问C:\下的文件)在Linux文件系统内部操作中表现极快(例如在Linux home目录下进行git clone, npm install)。跨OS文件操作较慢
          系统调用兼容性有限。并非所有Linux系统调用都被支持,某些应用可能无法运行完全兼容。因为运行在真正的Linux内核上,可以运行绝大多数未修改的Linux应用,如Docker
          与Windows的集成无缝。可以直接在Windows的C:\路径下访问Linux文件通过 \\wsl$\网络路径访问。Linux文件系统作为一个独立的网络位置挂载
          启动时间瞬时极快(虚拟机从休眠状态恢复,通常在几秒内)
          运行位置与Windows共享同一个内核和文件系统运行在轻量级虚拟机中,拥有自己的内核和完整的文件系统

          WSL的局限性和注意事项

          1. GUI应用:虽然微软已经支持在WSL2中运行Linux GUI应用(需要安装相应的驱动和组件,且系统为Windows10或11的较新版本),但性能和兼容性仍在不断完善中。对于复杂的3D图形应用,可能不如原生Linux或虚拟机流畅
          2. 硬件访问:直接访问硬件(如GPU进行计算、USB设备)在WSL2中曾经是难题。现在,GPU计算(CUDA, OpenCL)和USB设备直通已经得到官方或社区解决方案的支持,但配置过程可能比原生系统复杂一些
          3. 文件系统性能的取舍:如果工作流需要频繁地在Windows和Linux文件系统之间移动文件,性能可能是一个需要权衡的因素。最佳实践是:将项目文件放在Linux的home/下,并实用VS Code的Remote-WSL打开它
          4. 系统资源占用:虽然比传统虚拟机轻量,但WSL2仍然会占用一部分内存。默认情况下,WSL2最多可使用主机总内存的50%或8GB(取较小值)。可以在Windows用户目录下创建一个.wslconfig文件来限制WSL2的内存和CPU使用

          安装

          通过wsl --install

          这是最简单的方法

          Windows10/11里直接在PowerShell输入

          wsl --install
          

          这个命令会自动

          • 启动WSL功能
          • 安装WSL2作为默认版本
          • 安装一个默认的Linux发行版(通常是Ubuntu)
          • 安装Linux内核更新包
          • 默认安装到C盘

          本质就是从Microsoft Store里下载安装

          重启后,开始菜单中会出现安装的Linux发行版。点击打开,它会继续初始化,并提示创建一个新的用户名和密码(Linux用户名和sudo密码)

          通过wsl --import

          wsl --import命令用于将之前导出的WSL发行版.tar备份文件恢复为可用的WSL实例

          基本语法

          wsl --import <发行版名称> <安装位置路径> <备份文件路径.tar> [--version 1|2]
          
          参数说明示例
          <发行版名称>wsl -l -v列表中显示的自定义名字Ubuntu-Backup
          <安装位置>虚拟硬盘ext4.vhdx存放的文件夹路径D:\WSL\Ubuntu-Backup\
          <备份文件路径>之前用wsl --export生成的.tar文件C:\backup\ubuntu.tar
          --version 2(可选)指定使用WSL 2内核,默认一般是WSL2--version 2

          使用示例

          1. 基本导入(恢复备份)

          将之前导出的ubuntu_backup.tar恢复,并命名为Ubuntu-20.04-Restored,数据存放在D:\WSL

          wsl --import Ubuntu-20.04-Restored D:\WSL\Ubuntu-Restored D:\Backups\ubuntu_backup.tar
          
          2. 强制指定为WSL 2版本

          如果当前默认版本是WSL 1,或者为了保险起见,加上版本参数

          wsl --import MyNewDistro D:\WSL\MyNewDistro D:\Backups\export.tar --version 2
          
          3. 导入Docker Desktop导出的镜像

          WSL2的Docker数据也可以这样备份迁移

          wsl --import docker-date D:\WSL\docker-date D:\Backups\docker-desktop-data.tar
          

          使用

          基本命令管理

          • 列出已安装的发行版:wsl --list --verbosewsl -l -v
          • 设置默认发行版:wsl --setdefault <发行版名称>
          • 设置特定发行版的WSL版本:wsl --set-version <发行版名称> 2
          • 终止所有正在运行的WSL实例:wsl --shutdown
          • 导出某个发行版为tar文件(用于备份):wsl --export <发行版名称> <文件名.tar>
          • 从tar文件导入发行版:wsl --import <发行版名称> <安装目录> <文件名.tar>
          • 运行特定的发行版:wsl -d <发行版名称>

          打开

          打开方式有三种

          • 开始菜单搜索 Ubuntu
          • 在PowerShell里输入 wsl
          • 在VSCode里安装插件 WSL

          文件系统

          WSL有两个文件系统

          Linux 文件系统(WSL内部)

          /
          ├── bin
          ├── etc
          ├── home
          ├── usr
          ├── var
          └── mnt
          

          这部分属于Linux原生文件系统(ext4)

          在WSL2里,它实际存储在一个虚拟磁盘文件里ext4.vhdx,位置大概在C:\Users\Yourusername\AppData\Local\Packages\

          Windows文件系统(被挂载进来)

          在Linux里,/mnt/c代表Windows的C盘,例如/mnt/c/Users就是Windows用户目录

          文件系统桥接原理

          WSL2的结构是

          Windows
             ├── ext4.vhdx(Linux虚拟磁盘)
             └── drvfs(挂载Windows文件系统)
          
          Linux -> Windows

          通过/mnt/c访问Windows文件

          Windows -> Linux

          通过\\wsl$\Ubuntu\访问Linux文件

          explorer.exe .这个命令可以在WSL里打开Windows资源管理器,打开当前目录

          性能差异

          存放在/home中的文件访问速度快,存放在/mnt/c中的文件访问速度慢
          因为

          • Linux文件系统是ext4(原生)
          • Windows文件系统是NTFS
          • WSL需要跨文件系统翻译

          权限模型

          Linux有rwxr-xr-x权限体系,Windows有ACL权限模型
          当访问/mnt/c

          • 权限会被映射
          • 可能出现chmod不生效

          迁移

          如果是在微软应用商店安装的wsl(包括wsl --install,本质相同),那么WSL会被默认安装在C盘下
          这会导致C盘的大量空间被WSL占用,所以迁移是很有必要的

          WSL实际是一个Linux文件系统,在Windows里是一个名为ext4.vhdx的虚拟磁盘文件,默认路径在C:\Users\用户名\AppData\Local\Packages\...

          迁移步骤

          1. 查看发行版本

          wsl -l -v
          
          Ubuntu # 以Ubuntu为例
          

          2. 导出

          wsl --export Ubuntu D:\wsl\ubuntu.tar
          

          需要手动创建文件夹,–export不会帮助处理

          这一步会生成一个tar包(系统镜像)

          3. 注销原来的

          wsl --unregister Ubuntu
          

          4. 导入到D盘

          wsl --import Ubuntu D:\wsl\ubuntu D:\wsl\ubuntu.tar
          

          vhdx就在新位置了

          5. 启动

          wsl
          

          常见问题

          导出后可能会遇到默认用户变为root的问题
          实测wsl2 ubuntu保留了原先用户名

          如果碰到了这个问题

          ubuntu config --default-user your_username
          

          wsl -d Ubuntu -u your_username