WSL1升级WSL2

Windows 是最好的 Linux 发行版 这句话一点不假,现在 Windows 10 可以运行各种 Linux 发行版。用户可以通过命令行界面与系统交互,就像在常规 Linux 计算机上一样。
image.png
WSL 2 增加了 Windows 10 上 ELF64 Linux 二进制文件的兼容性,提高了文件系统性能,并增加了完整的系统调用功能。这些更改允许用户在其 WSL 系统上运行 Docker 应用程序。
首先升级有两个个要求

  1. 系统环境(目前只有预览版有WSL2)版本号19041.1以上
  2. 已经安装过WSL1如果没安装升级后直接安装Ubuntu子系统就行

首先我们来查看一下自己WSL的版本 这里是WSL1

1
2
3
4
5
6
7
8
9
10
11
PS F:\> wsl -l
适用于 Linux 的 Windows 子系统分发版:
Ubuntu-18.04 (默认)
PS F:\> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Running 1
PS F:\> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Running 1
PS F:\>

而后输入命令进行系统转换

1
2
3
4
5
6
7
8
9
wsl --set-version Ubuntu-18.04 2

PS F:\> wsl --set-version Ubuntu-18.04 2
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
转换完成。
#最后输入以下命令
# 如果想要后续安装的子系统都采用WSL2
wsl --set-default-version 2

WSL2和VMware的冲突

1
2
3
4
在powershell里面执行
wsl
报错:
请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化。

解决方法
开启vmware需要关闭hyper-v
所以我们如果重新开启wsl2时要:
在windows功能中重新勾选hyper-v
image.png
重启,

然后开启hyper-v模式
在管理员powershell中执行

bcdedit /set hypervisorlaunchtype auto
如果禁用了组策略里面的Device Guard虚拟化安全设置,
需要打开组策略管理,
本地计算机策略 > 计算机配置 > 管理模板>系统 > Device Guard
打开 基于虚拟化的安全设置为“已开启”或者“未设置”
image.png
如果还不行尝试启用官方组件

1
2
3
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

重启后再尝试,如果还是不行请前往BIOS查看是否关闭虚拟化

##WSL安装docker

WSL1和WSL2 的差距

关键差异包括:
将 Linux 应用需要访问的文件放在 Linux 根文件系统中可以提高文件访问速度
在 WSL 2 预览版的初始版本中,你需要使用 IP 地址而不是 localhost 来访问网络应用程序
下面是可能会注意到的差异的完整列表:
WSL 2 使用虚拟硬件磁盘(VHD)来存储文件,如果达到其最大大小,则可能需要将其扩展
启动时,WSL 2 现在将使用少量内存
初始预览版本中,跨 OS 文件访问速度会变慢
在 WSL 2 预览版的初始版本中,需要使用主机的 IP 地址从 Linux 访问任何 Windows server。

个人总结

初步使用后WSL2太让我失望了,简直就是虚拟机的linux而且还缺斤少两,我不如直接用虚拟机,哎心累。卸载咯,估计微软也是为了防止有人用win10做linux服务器

注意事项

  1. wsl2 使用的是单独分配的 IP,和虚拟机的 nat 模式一样,因为底层就是 hyper-v,而且还会和 vmware 冲突。wsl1 直接是共享的主机 IP。
  2. 解决从 WSL1 换到 WSL2 ,整体速度上去了, 但没法通过公网链接
  3. 搜索 10 个小时文档的结果: 可以在 CMD 使用 win10 的 端口映射来搞定
    netsh interface portproxy add v4tov4 listenport=22 connectaddress=127.0.0.1 listenaddress=* protocol=tcp
    我看 还有网桥什么的, 不会用… 不知道能不能更方便: https://docs.microsoft.com/en-us/previous-
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码

请我喝杯咖啡吧~

支付宝
微信