DC娱乐网

别再装双系统!WSL让Windows 11变万能,Linux应用直装 Linux

别再装双系统!WSL让Windows 11变万能,Linux应用直装
Linux装在Windows里了,微软不搞事了?,WSL2到底算个啥系统?,它真能当主力用?
我最近把公司配的Win11笔记本换成了WSL2主力开发环境,不是为了赶时髦,就是想少开一台虚拟机,少切一次系统。以前写Python脚本得在WSL1里跑,pip装个pandas卡半天;改个ROS2的launch文件得开个Ubuntu双系统,重启一次半小时起步。现在?开机直接进Windows,点开Terminal,`wsl -d Ubuntu-24.04`——两秒就进去了,`ros2 launch demo demo.launch.py`直接弹出rviz窗口,连显卡加速都开了,没卡。
WSL2不像我以前用的VMware。它不占内存,我关掉Ubuntu终端,任务管理器里根本找不到“Linux进程”,内存自动回吐。试过开三个发行版:Ubuntu、Alpine、Kali,互相不打架,`wsl -l -v`一眼看清状态,`wsl --unregister Alpine`敲完回车,硬盘上那几个G就真没了,不像以前删虚拟机还得手动清快照、删.vhdx、进磁盘管理缩分区。
最爽的是文件不用来回拖。写Markdown用Windows的Typora改`/mnt/c/Users/me/note.md`,保存完切到WSL里`pandoc note.md -o note.pdf`,PDF立刻生成在同目录,Windows资源管理器里直接能点开。但我也试过用记事本改`/home/me/file.txt`——结果WSL里`cat`出来全是乱码,查了才知道,NTFS和ext4编码不兼容,官方文档白纸黑字写着“别跨系统改Linux分区里的文件”。我就记住了:Windows只动`/mnt/c/`下面的,Linux只动自己家里的。
命令行也真不是模拟的。`ps aux | grep nginx`出来的PID和`systemctl status nginx`对得上;`docker run -it python:3.12 bash`进去装numpy,`import numpy`不报错,连CUDA都认得——我拿`nvidia-smi`跑着,WSL2里`nvidia-smi`也出来了,显存占用是共享的。以前得装Docker Desktop套一层,现在`sudo service docker start`就完事,干净。
有人问GUI应用行不行?rviz2、gazebo、gedit,都能弹窗。不是靠xserver转发,是微软自己搞了个WSLg,集成在系统里。我试过把VS Code装在Windows里,用Remote-WSL插件连进Ubuntu,代码在Linux里跑,编辑器在Windows里开,断网重连也不丢终端。但音视频软件还是别试,OBS录屏在WSL2里启动慢,还偶尔黑屏——官方文档写明了“不保证实时音频输入延迟”,我就没硬刚。
教学也方便。我表弟大一学Linux基础,我直接给他装个Ubuntu WSL2,`ls -al`、`chmod 755`、`vim .bashrc`全都是原生行为,不是PowerShell里改的假命令。他连`man fork`都能看,内核文档也是真的。比当年我用Cygwin强太多,Cygwin连`strace`都跑不了。
Kali那个我也装了。`apt update && apt install nmap metasploit-framework`,装完直接`nmap -sP 192.168.1.0/24`,结果秒出,不用开虚拟机桥接,也不用开防火墙放行。教学用真没问题,但别真拿它去扫公司网段——这玩意儿没加任何沙箱限制,root权限是实打实的。
当然也有翻车的时候。某天想编个内核模块,`make -C /lib/modules/$(uname -r)/build M=$PWD modules`,报错:`No rule to make target '/lib/modules/.../build'`。查了才知道WSL2用的是微软定制的Linux内核,源码不公开,build目录压根没打包进来。还有次跑FFmpeg实时推流,延迟一直压不下去,最后发现WSL2的网络栈走的是虚拟网卡,绕不开Windows的NDIS层,官方也说“不适合低延迟音视频传输”。
备份我用`wsl --export Ubuntu-24.04 ubuntu-backup.tar`,压缩完才1.8G,要恢复就`wsl --import Ubuntu-24.04 .\ubuntu\ ubuntu-backup.tar --version 2`,三分钟搞定。比用Windows自带的系统映