什么是WSL?
WSL (Windows Subsystem for Linux) 是微软为开发者提供的一种在Windows系统上运行Linux环境的解决方案,无需传统虚拟机的开销。它让Windows用户能够直接使用Linux命令行工具和应用程序,大大提高了跨平台开发效率。
目前有两个版本:
- WSL 1:使用转译层实现Linux系统调用
- WSL 2:使用虚拟化技术和真实Linux内核,性能更好
安装WSL
一键安装(Windows 10 2004版本及以上)
打开PowerShell或Windows Terminal(管理员模式),执行:
此命令会自动执行以下操作:
- 启用WSL和虚拟机平台功能
- 下载并安装最新Linux内核
- 设置WSL 2为默认版本
- 安装Ubuntu发行版
手动安装(旧版Windows)
- 启用WSL功能:
1
| dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
|
- 启用虚拟机平台功能(WSL 2需要):
1
| dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
|
重启计算机
下载并安装Linux内核更新包:
WSL2 Linux内核更新包
设置WSL 2为默认版本:
1
| wsl --set-default-version 2
|
- 从Microsoft Store安装Linux发行版
WSL常用命令
基本管理命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| # 列出所有可用Linux发行版 wsl --list --online
# 安装指定发行版 wsl --install -d Ubuntu-20.04
# 列出已安装的Linux发行版 wsl -l -v
# 启动指定发行版 wsl -d Ubuntu-20.04
# 以特定用户身份启动 wsl -d Ubuntu-20.04 -u root
# 终止指定发行版 wsl --terminate Ubuntu-20.04
# 关闭所有WSL实例 wsl --shutdown
# 设置默认发行版 wsl --set-default Ubuntu-20.04
# 设置指定发行版为WSL 1或WSL 2 wsl --set-version Ubuntu-20.04 2
# 卸载发行版 wsl --unregister Ubuntu-20.04
|
WSL中的Linux命令
启动WSL后,你可以使用几乎所有Linux命令,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 更新软件包列表 sudo apt update
# 升级所有软件包 sudo apt upgrade -y
# 安装软件 sudo apt install nodejs npm
# 查看系统信息 uname -a
# 查看发行版信息 cat /etc/os-release
|
文件系统交互
从WSL访问Windows文件
Windows驱动器会自动挂载到/mnt/目录下:
1 2 3 4 5 6 7 8
| # 访问C盘 cd /mnt/c/
# 访问桌面 cd /mnt/c/Users/你的用户名/Desktop/
# 使用Windows浏览器打开当前文件夹 explorer.exe .
|
从Windows访问WSL文件
推荐的安全访问方式:
- 通过WSL文件资源管理器:
1 2
| # 在WSL中打开文件浏览器 explorer.exe .
|
- 通过网络路径访问:
1
| \\wsl$\Ubuntu-20.04\home\username
|
- 使用WSL命令从Windows终端访问:
网络配置
端口转发
WSL 2中的应用端口可以从Windows直接访问:
1 2 3 4 5 6
| # 在WSL中启动服务 cd ~/project npm run serve # 假设在3000端口运行
# 在Windows浏览器中访问 # http://localhost:3000
|
WSL 2的IP地址
1 2
| # 查看WSL 2的IP地址 ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
|
实用技巧
设置默认Linux用户
1
| Ubuntu2004 config --default-user username
|
自定义WSL启动配置
创建或编辑 %UserProfile%\.wslconfig 文件:
1 2 3 4
| [wsl2] memory=4GB processors=2 localhostForwarding=true
|
与VSCode集成
在WSL中安装VS Code Server:
这会自动安装VS Code Server并打开当前目录。
使用Windows应用
可以直接从WSL调用Windows程序:
1 2 3 4 5
| # 打开记事本 notepad.exe myfile.txt
# 使用Edge浏览器 /mnt/c/Program\ Files\ \(x86\)/Microsoft/Edge/Application/msedge.exe https://bing.com
|
性能优化
文件系统性能
为获得最佳性能,将项目文件存储在WSL文件系统中(避免使用/mnt/c/):
1 2 3 4 5 6
| # 查看当前位置 pwd # /home/username/projects # 良好性能
# 而不是 # /mnt/c/Users/username/projects # 较差性能
|
内存使用优化
1 2
| # 在WSL中释放未使用的内存 sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"
|
常见问题解决
网络连接问题
1 2 3
| # 重置WSL网络 wsl --shutdown netsh winsock reset
|
文件权限问题
在/etc/wsl.conf中添加:
1 2
| [automount] options = "metadata,umask=22,fmask=11"
|
然后重启WSL:
更新WSL内核
进阶使用
图形界面应用
WSL 2支持运行Linux图形应用程序:
- 安装X服务器(如VcXsrv)
- 在WSL中设置DISPLAY变量:
1 2
| echo 'export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk "{print $2}"):0' >> ~/.bashrc source ~/.bashrc
|
- 安装并运行图形应用:
1 2
| sudo apt install gedit gedit
|
Docker集成
WSL 2与Docker Desktop完美集成:
- 安装Docker Desktop并启用WSL 2集成
- 在WSL中直接使用Docker命令:
1 2
| docker ps docker run -it ubuntu bash
|
结语
WSL为Windows用户带来了Linux的强大功能,既保留了Windows系统的便利性,又提供了Linux开发环境的灵活性。掌握这些命令和技巧,能让你的开发工作更加高效。如果你有任何WSL相关问题,欢迎在评论区交流讨论!