如果习惯于window+编译服务器进行开发,那通过WSL2搭建一个简单的开发环境是一个不错的选择。这种方案可以实现Windows和Linux环境的无缝融合:在Windows编辑器如VS Code中处理Linux环境代码,并通过linux对代码进程编译。
WSL2(Windows Subsystem for Linux 2)相对于其前身WSL1和传统的虚拟机,拥有近乎原生的性能优势。WSL2使用了一个真正的Linux内核,在它的虚拟硬盘(ext4文件系统)上进行文件操作,其I/O性能比WSL1快数倍到数十倍。几乎所有系统调用都得到原生支持,无需翻译。这使得需要复杂系统调用的应用(如Docker)能够完美运行。 WSL2在提供高性能Linux环境的同时,保持了与Windows系统的深度集成。
从 Windows 访问 Linux 文件:可以通过 \wsl$<DistroName> 在Windows文件资源管理器中轻松访问WSL2内的文件,反之亦然。
从 Linux 访问 Windows 文件:WSL2将Windows驱动器自动挂载在 /mnt/c, /mnt/d 等目录下。
在 Windows 中运行 Linux 命令:可以在Windows PowerShell或CMD中直接输入 wsl 来执行Linux命令(例如 wsl ls -la)。
环境安装:
window官方已经有详细的安装说明,可以参考链接:learn.microsoft.com/zh-cn/windo… 基本步骤如下:
1.设置-程序和功能-启用或关闭window功能-启用“适用于 Linux 的 Windows 子系统”
2.在管理员模式下打开 PowerShell,输入 wsl --install 命令
3.wsl --set-version Ubuntu 2 将 Ubuntu 分发设置为使用 WSL 2
4.打开 Microsoft Store安装Linux 分发版,例如Ubuntu等。
5.打开窗口创建用户帐户和密码
日常使用建议:
1.安装Windows Terminal(强烈推荐):Windows Terminal是一款功能强大、外观现代的终端应用程序,可以完美管理WSL、PowerShell等多种环境。你可以在Microsoft Store中搜索"Windows Terminal"并安装。
2.配置VS Code与WSL集成:
- Visual Studio Code:安装 WSL 扩展后,可以直接在Windows的VS Code中打开WSL里的项目文件夹,获得语法高亮、智能补全等所有IDE功能,同时所有操作都在Linux环境下执行可以在WSL子系统中直接使用 code . 命令来打开当前文件夹,实现Windows与Linux环境的无缝协作开发。
本文主要记录在使用过程中遇到的一些环境问题。
系统迁移
使用 wsl 提供的 import、export等工具对WSL2系统进行迁移 1.首先使用管理员身份打开命令提示符(cmd),关闭wsl wsl --shutdown 查看是否已经关闭 wsl -l -v
2.导出子系统文件
wsl --export 子系统名称 导出文件路径及名称
wsl --export Ubuntu-20.04 E:\wsl2tar\Ubuntu-20.04.tar
执行完毕后,可以在导出的目录内看到导出的tar包
- 注销原有的虚拟机
wsl --unregister 子系统名称
wsl --unregister Ubuntu-20.04
4.导入虚拟机到新的位置
wsl --import 子系统名称 要导入的子系统位置(想要存放子系统的目录) 导入子系统tar包(第三步中导出的tar包路径)
wsl --import Ubuntu-20.04 E:\wsl2 E:\wsl2tar\Ubuntu-20.04.tar
导入完成后,就可以在相应目录看到生成的文件了
5.设置默认用户
Ubuntu2004 config --default-user 用户名
Ubuntu2004 config --default-user ubuntu
至此系统迁移完成。
git加速问题:
如果你在 Windows 系统上使用了代理软件(如 Clash等),需要让 WSL 的 Git 也能走代理。
• 关键点:WSL 中的 127.0.0.1 指向的是 WSL 自身,而非 Windows 宿主系统。你需要通过特定的 IP 地址来访问 Windows 上的代理服务。
• 查找宿主机的 IP:在 WSL 终端中执行 cat /etc/resolv.conf,输出的 nameserver 后面的 IP 通常就是宿主机在 WSL 网络中的地址。
• 设置代理: 你可以选择设置临时环境变量(仅当前终端有效),也可以仅为 Git 配置代理。
方法一:设置环境变量(临时)
在 WSL 终端中执行(端口请替换为你代理软件的实际端口):
export http_proxy=http://172.28.208.1:7890
export https_proxy=http://172.28.208.1:7890
方法二:为 Git 配置代理(持久)
如果希望代理设置对 Git 持久有效,可以执行: bash
git config --global http.proxy http://<宿主机的IP>:7890
git config --global https.proxy https://<宿主机的IP>:7890
PATH空格问题:
在WSL编译时遇到路径中的空格导致编译异常,通常是因为脚本或程序没有正确处理包含空格的路径。
问题根源:PATH环境变量污染,Windows路径(如Program Files (x86))混入WSL的PATH
根本解决:在WSL配置文件 /etc/wsl.conf 中禁止继承Windows的PATH。
appendWindowsPath = false
修改后,重启WSL终端或运行 wsl --shutdown 并重新打开。
如果在WSL中找不到/etc/wsl.conf文件,这完全是正常情况,因为WSL默认并不会创建这个文件。不过别担心,可以手动创建它来调整WSL的配置。
1.创建配置文件sudo touch /etc/wsl.conf创建空的wsl.conf文件,为后续编辑做准备。
2.编辑配置文件sudo nano /etc/wsl.conf使用nano编辑器(或其他您熟悉的编辑器如vim)向文件添加配置。
3.重启WSL生效wsl --shutdown在Windows PowerShell或CMD中执行,彻底关闭WSL后重新启动。
成功创建文件后,您就可以根据自己的需求添加配置了。这里有一些常见的配置示例
示例:阻止WSL将Windows的PATH附加到Linux的PATH中 这有助于解决因Windows路径(如包含空格的Program Files)导致的环境变量问题
appendWindowsPath = false
示例:启用systemd支持 某些服务(如systemctl)在WSL中默认不开启,此配置可激活它们
systemd = true
请注意:在修改配置后,必须执行wsl --shutdown来完全关闭WSL,然后重新启动终端,新的设置才会生效。