比较子系统WSL 1和WSL2。我应该切换吗?





在这篇文章中,由于有交流经验,作者希望比较第一版和第二版的WSL,以“大声思考”的风格。



WSL 1 vs WSL 2,这让我很高兴



图片


MSDN 源码



1.使用真正的Linux内核



包含真实的Linux内核增加了文件系统IO和系统调用。 

一个特别优化的Linux内核使得WSL 2似乎比WSL 1.更快 

在一些任务,根据微软测量使用时,如拆包档案,WSL 2比1 WSL快20倍,和快约5倍Git克隆和npm安装。

您可以花时间在这里这里查看基准



2.本机docker支持。



原则上,这样的机会仅出现在WSL 2上



。欢乐就此结束。



WSL 1 vs WSL 2,这并不令人满意



让我们从Microsoft的最新拐杖开始,以及让我个人不高兴的那种创新开始。

WSL的第一个版本没有使用真正的Linux内核,也没有使用虚拟化。WSL有点像Wine,但并不完全一样。



那里使用了一些特殊的层来将Linux程序的调用转换为该Shell。

当然,这减慢了一切,但是它也有优势。



例如,在任务管理器中可以看到在WSL 1上运行的所有程序,可以对这些任务进行优先级排序,并为其指定特定的内核以供执行。



图片




同样,防病毒软件可以看到WSL第一版的所有进程,可以允许或拒绝它们对文件夹的访问,就像Windows的常规程序一样。



图片




随着WSL 2的问世,该虚拟机中的特定进程不再可见,并且向文件夹写保护的功能也消失了。WSL 2具有绕过Windows Defender的文件系统访问权限。未来将带来哪些特定漏洞-我们将看到。但是WSL 2很有可能成为加密整个磁盘的攻击手段。



图片




WSL 2中的网络连接也略有变化。第一个版本的WSL具有非常奇怪的网络堆栈实现,它挂在Windows本身使用的网络上,此外,可以在Netstat中检查WSL侦听端口,并使用常规Windows防火墙将其关闭。



图片




现在,在WSL 2中,有一个专门用于WSL的单独的开关,因为现在它是一个单独的虚拟机,无聊。



图片




基准测试



WSL使直接在Windows中使用来自WSL的命令成为可能。包括在PowerShell中。

作者使用神圣的Powershell对他最喜欢使用的WSL程序进行了测量。



所有基准测试均针对WSL1和WSL2使用Ubuntu 18.04 LTS。



杰基尔



网站生成。一通:



WSL1

图片




WSL2

图片




如您所见,当使用Jekyll构建站点时,WSL2远不及WSL1。1.5秒和9.6。结果有利于WSL1。有趣的是,WSL1始终需要Sudo来进行写访问,并且不想在没有root的情况下生成。



通话速度



在这里,我们测试了调用Shell和执行一个简单命令的速度。



Measure-Command {
    [int]$i
    do {
        $i++
        wsl.exe -e 'uname'
       
    } until ($i -eq 20)
}


WSL1

图片




WSL2

图片




WSl2加载速度稍慢。这是完全不可察觉的,因为要进行20次发射的结果。



Git init和Mkdir



现在,让我们击败Git init和Mkdir。使用Mkdir创建一个文件夹,并使用WSL在该文件夹内进行Git初始化。



代码:



Measure-Command {
    [int]$i
    do {
        Set-Location "C:\Users\user\Desktop\TestFolder"
        $i++
        $Foldername = Get-Random
 
        wsl.exe ''mkdir $Foldername''
        Set-Location $Foldername
        wsl.exe ''git init''
       
    } until ($i -eq 20)
}


WSL1

图片




WSL2

图片




结果是相同的。



WSL vs. 其他拐杖



那么为什么选择WSL?



WSL 2仍然保留了直接从Windows使用Linux命令的功能。直接从资源管理器字符串中调用Bash很方便。



当然,WSL使用您提供的默认操作系统环境,如果您习惯使用人工编辑器,则不必使用Mingw讨厌的Vim。



为什么绕过WSL更好?



如上所述,WSL1和/ proc / sys / fs中的Libnotify完全不在WSL1中,如上所述,第一个版本不使用相同的Linux内核,因此WSL 2必须解决此问题。



所有这些库都出现在WSL 2中,现在它们都可以在虚拟机管理程序上运行,但是问题也不少。创建新文件时有时甚至即使更改了旧文件也无法自动生成。



NPM的拥护者以及其他方面,仅此而已,就可以绕过WSL,使用针对Windows开发的解决方案。



WSL的Cool Lay Hack(Hack°͜ʖ͡°)



图片




现在,让我们讨论安装WSL- Vlmcsd的唯一原因

您是否仅出于科学实验的目的而以稍微不同的方式激活Windows的许可副本,但又不想使用从Internet下载的奇怪的KMS激活器?

感谢Microsoft,您可以使用WSL,这是一个快速指南。



链接到Github项目链接到发行版



在Ubuntu上捕捉



安装快照:



sudo apt更新

sudo apt install snapd



安装vlmcsd:



sudo snap install vlmcsd



使用ip addr,我们检查WSL挂起的IP地址并将其用作KMS服务器。这是snapstore上项目页面的链接



WLM上的vlmcsd和Docket



可以通过Docker本身或WSL和Docker进行相同的操作。这是项目链接,我无法更好地解释它。



从Windows方面:



这就是通过KMS激活Windows 10 PRO的样子。



-ipk-W269N slmgr.vbs WFGWX-YVC9B-4J6C9-T83GX

slmgr.vbs -skms 192.168.88.166

slmgr.vbs -ato



此安装方法仅适用于笑话,因为WSL实例在关闭窗口后始终会关闭,如在顺便说一下,目前,所有WSL都只适合开玩笑和Git。

作者希望您不要太无聊。






All Articles