WSL死了,死的挺突然的

debug了半天,搜遍了全网各大技术网站,想着WSL也是陪伴了我一年多的优秀生产力工具,想给它治一治
结果没搞清楚错误原因,最后修修又改改,从连不上代理进阶成了彻底连不上网

CSDN的人也兴奋了,说这个bug我也遇到过,代码一复制,Enter一敲,马上就解决了
我一看以为是大佬,马上敲起了键盘,结果打完以后一看,卧槽,整个WSL都掉了,连不上了

鉴于对CSDN最基本的尊重,我又去多看了几个帖子,结果发现大家都说,我也遇到了这个bug,这样就解决了
我不解,为什么他们都解决了,我的反而炸了
后来我仔细比较,才发现他们写的哪里是博客,写的明明是营销号
同样的bug,同样的说辞,同样的解决,甚至同样的截图,却出自不同账号之手,这也许就是多胞胎吧

WSL生前非常好用

在生前最鼎盛的时期,他在我电脑的一众开发环境中端着装有remote development的VScode大喊
好!我先拿下了C,干掉了pycharm,连g++都拿下了,下面把树莓派也给我拿下
我要做全新编程世界的Dev C++ plus ultimate golden royal
结果倒好,因为装的东西太多太乱,引来了我的不满,任务栏没进去就先进了回收站

WSL的好用不是没有理由的,它轻量,运行在后台丝毫不影响轻薄本的性能
它可以与windows同时运行,便捷地进行数据传输
它可以自由迁移数据位置,寥寥几条指令就能完美地将本体从C盘转移到D盘

但WSL也不是万能的

当WSL拖着它大腹便便的apt包来找我时,我说,apt工具不是万能的
你这list长度,都已经超过了终端的显示行数上限,别说管理a开头的包了,连h开头的包我都看不到
这完蛋程度,确实不是我处理的了的
这整个apt文件夹又大又乱,我总不能一个一个看吧

当然这点也有我的问题
我本以为自己能够三思而后行,确定了正确性再执行命令,至少也要做个备份
当时年轻的我确实没有什么思,但是行还是非常充足的
管他教程里讲了什么,先下库再说
管他是不是推荐下载,多多益善
管他教程有没有效,反正库都下了,懒得再打个命令把库卸了,万一卸错了呢

在中途一次全局包升级的时候,那是一节课的课上,我淡定地打下
sudo apt update
sudo apt upgrade
只见浩浩荡荡几万行代码在我的电脑屏幕上滚动
犹有小时候装逼用tree方法输出目录树时的壮美

代码一直滚动了接近20分钟,得益于FDU优秀的网络,我看了一眼进度条
52%, 默默地盖上了显示屏

后来VMware进入视野

VMware,老牌虚拟机,人称虚拟机圈的皇帝,是Linux领域重要的虚拟机提供平台
它在纳入我的考虑范围之前不过是一个又大又笨重的虚拟机平台,我用水果刀就能解决的事,为什么要用牛刀

但好歹有一个优点我非常看重,它可以轻松地安装Ubuntu Desktop,轻易拥有图形化界面
虽然写代码还是用ssh在VScode里写,但其他关于Ubuntu的事就都可以在Ubuntu里进行了
况且自己也记得重要的需要安装的环境包,重新配一个环境不是信手拈来

满怀期待的我非常高兴地去下载了VMware和Ubuntu文件,准备狠狠地配一个新的好看的系统
VMware的运行非常顺利流畅,一切都是如此的完美,直到我准备暂告一段落,去做其他工作

我打开虽然有些用腻了,但却又老夫老妻的WSL,准备按照项目要求装个库
我熟练地打开代理,重启WSL让代理在Ubuntu里生效,然后输入
sudo apt install ……

我本以为一切都应该顺顺利利的,毕竟我在D盘为WSL专门设置了一个寝宫,不可能有任何东西来打扰
然而返回的报错信息却给了我当头一棒
127.0.0.1 已拒接连接

虽然是远处的服务器拒绝了WSL的请求,但我却如WSL拒绝了我的请求一般心痛

关机重启,问题并未解决

问题能够轻易地复现,基本可以认定某个bug,bug触发了几次,我开始寻找解决问题的方法
一通操作猛如虎,在主动进攻下,127.0.0.1接受了我的请求
然后又返回了一段错误代码
无法解析XXX网址的HOST
然后又是一场酣畅淋漓的葫芦娃救爷爷
所有的挽救措施都转变成了丰富多彩的报错提示

WSL几乎要死了,但依旧有希望存在
我将WSL的磁盘映射文件拷贝了一份,然后将原本的Ubuntu注销了,准备重装
在输入重新引入WSL2对象的指令后,发出的错误警告告诉我

WSL彻底死了

在解决了一些细碎的小问题后,最终的结果导向了一串代码
WslRegisterDistribution failed with error: 0x80041002

在这串代码上,中外论坛保持了极为罕见的一致性,因为真正解决这个问题的人只有一个
他来自著名网站Stackoverflow,并给出了如下解释:
这一串错误代码并不来自于WSL2,而是来自于hyper-v,WSL2的运行需要使用hyper-v,而hyper-v,会尝试创建一个虚拟网卡,当某个东西阻止它这么做时,便会返回这串错误代码

那么谁会阻止hyper-v创建虚拟网卡呢,只有会创建虚拟网卡的程序,而排除了所有可能后
真相只有一个,那就是

VMware杀死了WSL

VMware作为虚拟机平台,为了让虚拟机连上网络,就会创建虚拟网卡并阻止其他虚拟网卡的生成
而这件事阻止了WSL的启动

在极度愤怒之下,我马上想要去卸载VMware,准备换virtual box,但来到VMware目录时
我发现VMware居然没有卸载工具
冲动的我直接将VMware的整个文件夹删除了,却并未考虑它留下的其他遗害

在一通操作之后,我喜提网卡错误,网络连接的按钮直接消失了,一切陷入了循环
如果要修复网卡,就需要网络
如果需要网络,就得修复网卡
屏幕截图 2024-03-27 182745.png|300屏幕截图 2024-03-27 182800.png|300

VMware在杀死了WSL后,也杀死了我
我只好出去散心

无人生还

稍稍休憩片刻,吃上一顿,我又回来准备拯救二者
可惜并非所有人都如番剧或galgame男主一样能够得到完美的结局

最后的结果是,我使用ccleaner清除了VMware留下的几乎所有痕迹,以此拯救我的网卡
但同时hyper-v的问题仍未解决,WSL2依旧无法安装
在这个惨烈的修罗场里,无人生还

总结

今日的奇妙遭遇告诉我们,不能轻易因为原配的一些不足就去找小三(纯爱战士)(bushi
总之WSL死了,我却并不怀念它,因为树莓派成为了新的天降
而VMware怀抱这杀死WSL和我的大罪,永远地钉在了我的黑名单里

后续更新: