最近在windows上升级Docker desktop, 升级完之后提示支持WSL。 查了一下原来WSL是指windows subsystem for linux, 那么它和虚拟机上的linux有什么区别和优劣势呢?

在没有虚拟化技术出现之前,如果用户想在同一台电脑上使用linux和windows,那么他必须通过重启电脑来切换不同的系统。
当虚拟机技术出现之后就不再需要重启电脑了。到了windows10之后利用WSL甚至可以同时运行windows和linux,而不需要安装虚拟机。

那么选择虚拟机还是WSL来运行linux变成了比较头疼的问题?

首先在我们最常见的选择是在虚拟机上跑linux比较常见,它主要是使用hypervisor这个技术。如果你只是侧重于学习linux系统的安装和配置,那么虚拟机是更好的选择。如果你考虑以后从事IT相关的职业,那么这些知识是必备的。

如果需要在linux上使用图形界面应用,那么虚拟机同样是最好的选择,即使微软承诺在WSL上支持图形界面应用。如果要试试linux提供的不同的窗口管理器和桌面环境,那么你必须在WSL的稳定版本上使用一些临时技术来解决它。

如果你想尝试各种不同的linux发行版本,那么WSL会更适合你。虽然WSL提供了很多linux发行版本供你选择,但是只能通过微软商城上获取。像Ubuntu,Debian,openSUSE和Alpine Linux这些主要的发行版本在WSL上都找得到,但是一些不常见的就没有了。如果使用像VirtualBox这种虚拟机,则选择都很广了。

在VirtualBox上Linux不是唯一可以使用的开源操作系统,你还可以运行BSDs甚至FreeDOS都可以。

如果你是linux小白,WSL将是一个不错的选择。可以很方便的学习linux命令行,而不用花很多时间在完全学习一个新的操作系统。

运行WSL的开销比运行一个虚拟机低很多。WSL 2实际上用的是运行在Hyper-v上的linux内核,相较于虚拟机你不需要很多的性能开销,
因为你不需要运行大部分跑在linux系统之上的其他进程。你可以使用更少的内存来运行WSL,相较于虚拟机。

如果你仅仅只需要命令行工具,比如一些编程语言或编译器,WSL很适合你。WSL主要面向开发人员,特别是web开发人员,因为他们不要经常访问linux内核。

如果你主要是使用windows,只是偶尔用到linux,安装一个独立完整的linux系统没多大意义。并且启动WSL相较于虚拟机块多了。

并且WSL在windows上的集成度相较于VirialBox上常规的linux更高。

总结:

如果你需要直接使用操作系统本身,那么你应该在windows安装虚拟机比较合适。在这种方式下,你将会会更多的控制权限。

对于只是想在window上学习linux命令行的同学来说,WSL将会是更好的选择。你不需要花费时间在系统的配置上面,仅仅只是想使用一些你真正想用的程序。只需要打开终端窗口就可以了。

也许你你已经决定使用双系统,毕竟这个经典方案已经存在很多年了。虽然这是一个可行的方法,但是在你这样做之前你需要知道它的一些缺点。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐