WSL的安装与使用
Last Update:
Word Count:
Read Time:
前言:因为某个项目在windows下编译实在是太慢太慢太慢了,而在Ubuntu下编译非常非常非常快,因此需要安装 WSL 来提高编译速度。
据了解 WSL 有两个主要版本:WSL 1 和 WSL 2,它们在架构、性能和功能上有显著差异:
特性 | WSL 1 | WSL 2 |
---|---|---|
架构 | 转换层(Linux 系统调用 → Windows API) | 轻量级虚拟机(基于 Hyper-V,运行完整 Linux 内核) |
文件系统性能 | Windows 文件系统(NTFS)访问较慢 | 大幅提升(Linux 文件系统 ext4 原生支持) |
系统调用兼容性 | 部分 Linux 系统调用不支持 | 几乎 100% 兼容(因使用真实 Linux 内核) |
启动速度 | 更快(无虚拟机) | 稍慢(需启动轻量级 VM) |
内存占用 | 更低 | 稍高(需分配固定内存) |
网络模式 | 与 Windows 共享 IP | 独立 IP(类似虚拟机,需端口转发) |
GPU/Docker 支持 | 有限 | 完整支持(CUDA、Docker 等) |
而 WSL 2 虽然性能更强、兼容性更好,但在某些硬件相关的场景下会比 WSL 1 更复杂,主要原因包括:
- 网络配置更复杂
- WSL 2 使用独立的虚拟网络(NAT 模式),而 WSL 1 直接共享 Windows 的网络栈。
- 问题示例:
- 在 WSL 2 中运行的服务(如
nginx
)默认无法通过localhost
从 Windows 直接访问,需手动配置端口转发或防火墙规则。- 跨设备访问 WSL 2 中的服务(如手机调试)需额外设置。
- 文件系统访问延迟
- Windows 访问 Linux 文件:WSL 2 的 Linux 文件存储在虚拟磁盘(
ext4
)中,Windows 通过\\wsl$
访问时会有性能损耗。- Linux 访问 Windows 文件:在 WSL 2 中挂载 Windows 目录(如
/mnt/c
)时,IO 性能较差(尤其是大量小文件操作)。
- USB/外设支持受限
- WSL 2 默认无法直接访问 USB 设备(如 Arduino、摄像头),需通过第三方工具(如
usbipd-win
)或 Windows 驱动桥接。- WSL 1 因直接调用 Windows 驱动,外设支持更简单。
- GPU 加速需额外配置
- 虽然 WSL 2 支持 GPU(如 CUDA 开发),但需手动安装:
- Windows 侧:NVIDIA 驱动。
- WSL 2 侧:Linux 版 CUDA Toolkit。
- WSL 1 无此需求(但 GPU 功能受限)。
- 内存管理问题
- WSL 2 默认会占用固定内存(如 50% 物理内存),可能因内存不足导致 Windows 卡顿,需手动调整限制(在
.wslconfig
中配置)。
因此,我选择安装 WSL 1 ,接下来,我将开始介绍如何在windows电脑上安装 WSL 1 。
一、安装Windows终端
windows11自带windows终端,跳过这一步
二、启用 WSL 功能
打开 PowerShell 管理员模式 输入下面指令
1 |
|
完成后重启系统
或者也可以手动启用:
Win + S 输入搜索 控制面板 —> 打开 控制面板 —> 点击 程序和功能 —>启动或关闭Windows功能 —> 勾选适用于Linux的Windows子系统 —> 重启系统
三、安装 Linux 发行版
在 Microsoft Store 搜索 Ubuntu ,安装 Ubuntu 24.04.1 LTS
1 |
|
Ubuntu 安装完成后打开,此时会让你新建用户,按照提示输入用户名密码。
四、设置为 WSL 1
在 PowerShell 中运行:
1
2wsl --set-version <发行版名称> 1
# 例如:wsl --set-version Ubuntu-24.04 1等待转换完成。
五、基本使用
启动 Linux:
- 在开始菜单中点击安装的发行版名称,或命令行输入
wsl
。
- 在开始菜单中点击安装的发行版名称,或命令行输入
更新软件包列表
1
sudo apt update
升级已安装的软件
1
sudo apt upgrade -y
Windows挂载目录
在WSL(Windows Subsystem for Linux)中,
/mnt
目录是Windows文件系统在Linux环境中的挂载点,用于实现Windows和Linux之间的文件互通访问。WSL会自动将Windows的磁盘驱动器(如
C:
、D:
)挂载到Linux的/mnt
目录下,形成对应子目录:C:
盘 →/mnt/c
D:
盘 →/mnt/d
- 以此类推。
- 例如,Windows的
C:\Users\YourName\Documents
在WSL中路径为/mnt/c/Users/YourName/Documents
。
对性能敏感的项目建议放在WSL原生文件系统内(如
~/project
),而非/mnt
下。在Windows中编辑WSL文件:使用VSCode的Remote-WSL扩展或直接访问
\\wsl$\
。在WSL中编辑Windows文件:注意行尾符和权限问题。
下载 neofetch htop
1
2
3
4# 使用sudo权限通过apt包管理器安装neofetch和htop两个软件
# neofetch: 用于在终端显示系统信息和logo的轻量级工具
# htop: 交互式系统监控工具,比默认的top命令更强大直观
sudo apt install neofetch htop把文件迁移到wsl并递归赋予权限
1
2
3
4
5# 递归修改所有权(确保用户是所有者)
sudo chown -R $USER:$USER .
# 递归赋予读写执行权限
sudo chmod -R u+rwx .使用vscode中的WSL插件访问WSL中的文件与工程
退出 Linux:
- 在 Linux 终端中输入
exit
。
- 在 Linux 终端中输入
关闭 WSL
1
2
3
4# 会终止所有未保存的 WSL 会话,类似于强制关机。
wsl --shutdown
# 如果需要正常退出 Linux 系统,建议先在 WSL 终端内运行 exit 或 sudo shutdown now。