Windows 中运行 Linux 探索 WSL2 非双系统 保姆级教程
2022-01-17
阅读 {{counts.readCount}}
评论 {{counts.commentCount}}
<br><br>
## 前言
作为开发者,在Linux下确实要比Windows方便许多,就比如Docker、Redis等工具天生就没有原生Windows版本,在Windows或即使Mac下开发,也是非常麻烦,需要使用类似虚拟机。此外在Windows下编译各种程序,执行各种脚本,执行效率也要比Linux低不少。例如同一个Java程序使用Maven编译,Windows下需要至少20秒,而Linux只要6秒即可编译完成。
<br>
目前使用Linux作为工作环境,优点固然明显,缺点也非常突出,首先国产软件有一大批还不支持Linux,比如微信、QQ,就需要使用到类似Wine的工具,模拟Windows环境才能执行,非常麻烦。
<br>
另外使用双系统,会大量占用磁盘空间,例如500G的固态硬盘,至少要划分给Linux 100G作为系统盘。个别程序如果在Linux下模拟Windows环境不方便,还需要重启切换系统才能正常使用。
<br>
综上所述,急需一个在Windows内执行Linux,并且保证Linux内核完整,而且不过渡占用磁盘,最重要的是效率特别突出的方案。目前最合适的就是今天要折腾的 `WSL2` ,全称是 `Windows Subsystem for Linux` ,可以理解为 Windows子系统Linux ,区别于虚拟机中执行Linux,拥有更好的兼容性,磁盘数据互通,且更高的执行效率
<br>
燃鹅,在我最后体验完WSL2后,我觉得上面说的这些全部需要推翻!原因我写到了最后!
<br><br>
## 准备
<br>
具体步骤可以参考官网
[https://docs.microsoft.com/zh-cn/windows/wsl/install](https://docs.microsoft.com/zh-cn/windows/wsl/install)
首先得到一个提示,Windows版本必须高于2004
`必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11。`
<br>
`Windows键` + `R` 运行命令 `winver`
可以查看当前版本是否满足
我这里显然是1909,不满足2004
**(如果你的系统满足要求,则直接跳到本文第三章 折腾环节即可)**
![](/api/file/getImage?fileId=61aed790da74050013009997)
<br>
我的笔记本是买来到手就强制禁用了Windows自动更新的,因为特别恶心各种强制更新,关机重启更新等智障设计。由于一不小心这个强制禁止更新,有点过于强制,过于彻底,已经无法再次开启Windows的更新,导致不能用系统内设置里的更新来解决问题。具体如图
<br>
设置更新系统
报错 0x80070422
`安装更新时出现一些问题,但我们稍后会重试。如果你继续看到此错误,并且想要搜索 Web 或联系支持人员以获取相关信息,以下信息可能会对你有帮助: (0x80070422)`
![](/api/file/getImage?fileId=61aed652da74050013009993)
<br>
手动开启 `Windows Update` 服务
会报 `拒绝访问`
![](/api/file/getImage?fileId=61aed6acda74050013009994)
<br><br>
所以我这里直接用Windows官方出品的一个外部程序来更新系统,Windows易升,地址如下,这里点击`立即更新`按钮,会下载Windows易升程序
[https://www.microsoft.com/zh-cn/software-download/windows10](https://www.microsoft.com/zh-cn/software-download/windows10)
![](/api/file/getImage?fileId=61aed652da74050013009992)
<br><br>
下载完成后执行,一路下一步即可,会自动下载最新系统更新包,速度略慢,大约需要 30 ~ 60 分钟
![](/api/file/getImage?fileId=61aed716da74050013009995)
<br>
结束以后会要求重新启动,如果没有需要保存的数据,点`立即重新启动` ,一共需要大约 30 ~ 90 分钟
![](/api/file/getImage?fileId=61aed82eda74050013009998)
<br>
重启以后在此查看系统版本
右击我的电脑 - 属性 也可以查看
已经升级到了`21H2`
![](/api/file/getImage?fileId=61aef6f2da740500130099a5)
<br><br>
## 折腾
<br>
系统版本符合要求以后,开始折腾,再看文档下一步
[https://docs.microsoft.com/zh-cn/windows/wsl/install](https://docs.microsoft.com/zh-cn/windows/wsl/install)
<br>
右击开始按钮,选择 Windows PowerShell(管理员)
![](/api/file/getImage?fileId=61aef7a9da740500130099a7)
<br>
在PowerShell中输入命令
```shell
wsl --install
```
![](/api/file/getImage?fileId=61aef7a9da740500130099a6)
<br>
安装官方的说法能一次成,我这里遇到一点小波折,wsl安装正确,但ubuntu显示下载失败,于是就只有wsl没有linux内核
于是我根据官网提示按照后面的方法更新wsl再安装ubuntu
```shell
# 更新wsl到最新版本
wsl --update
# 强制重启wsl以生效新版
wsl --shutdown
# 获取可以选择的linux发行版
wsl -l -o
# 选择ubuntu(我这里看到的列表基本都是debian系,选ubuntu因为相对最方便)
wsl --install -d ubuntu
```
<br>
最终看到这个界面说明ubuntu安装完毕
![](/api/file/getImage?fileId=61aefd1dda740500130099b6)
<br>
到这里,你就已经在一个无图形界面的ubuntu的系统里了,可以进行一些简单的Linux命令操作。
至于有什么用,除了docker以外还真说不上来有什么用。
即使docker我也还是更喜欢老办法,用VirtualBox
## END
然后我就反手一套停止删除清空连招全部删完了
这玩意居然没有图形化?
还需要用软件远程图形化?
而且完全看不出比Oracle VM VirtualBox 里面跑Docker 好在哪
债见!