pcie usb3.0 驱动 for linux_微软WSL——Linux桌面版未来之光
本文共3500余字,预计阅读时间11分钟,本文同步发布于silaoA的博客(silaoA.github.io)和知乎(账号silaoA)。
关注学习了解更多的Cygwin、Linux技术。
微软一年一度的build大会都是Windows开发者的盛会,往往发布酷炫的软硬件产品和新服务。为期3天的build 2019抢在Google IO 2019之前于2019年5月6日召开,在首日的主题演讲中微软发布了一系列软件和服务,其中就包括新一代WSL——WSL2和微软自家的终端模拟器Windows Terminal。
目录
0x00 回顾WSL1
0x01 WSL2
0x02 Windows Terminal
0x03 小结
参考
更多阅读
自从Satya Nadella执掌微软帝国以来,微软对开源社区态度发生180度转变,也不再视Linux为毒瘤,开始以实际行动践行“Microsoft love Linux”的誓言:微软的Azure支持Linux、开源.Net Core、开源VS Code、完善命令行对POSIX支持、搞Windows Subsystem for Linux
黑科技、收购GitHub等。
微软在Windows上不断完善对命令行的支持,官方开发博客中特辟了commandline系列,积极接受用户反馈。此次发布的WSL2
和Windows Terminal
颇受关注,也在博客中给出了相关说明。以下称原版Windows Subsystem for Linux
为WSL1,新版为WSL2。
0x00 回顾WSL1
在前文Cygwin系列(三):盘点与Cygwin相似和相反的项目简单介绍过WSL1。WSL1的机制,总体上是在运行时将Linux System Call翻译为NT API调用,从而在NT内核基础之上模拟实现Linux内核。微软官方博客windows-subsystem-for-linux-overview描述了WSL1的架构组件,可以简化为下图。
WSL1架构示意
LXSS Manager
是普通的win32进程,相当于Linux子系统驱动的代理,还负责管理Linux进程。Linux Instance不是普通的win32进程,微软称为Pico Process
,是Linux EFL程序的宿主进程,实现了沙盒技术中的一种机制。lxss
、lscore
两个组件是WSL1的核心,负责将Linux程序中的System Call “翻译”为等价的NT API调用,如fork
翻译为NtCreateProcess
、open
翻译为NtOpenFile
,kill
翻译为NtTerminateProcess
等。这两个组件根据洁净室(clean room)原则构建,完全不含Linux代码。
WSL1在运行时处理Linux System Call,模拟Linux内核,在ABI层面保持兼容性。Cygwin项目的思路其实也是构建和lxss
、lscore
作用一样的模拟层,但外人是无从得知NT API的详细情况的,因此Cygwin项目只能在Win32 API基础上构建Cygwin DLL
,只能在API层面保持兼容性。Wine项目的角色与WSL1、Cygwin类似,只是作用方向相反。
无论是在ABI还是API层模拟,Linux/UNIX与Windows NT毕竟是两类内核,设计理念、设计标准等多方面差异甚大,无法实现完全对等模仿,WSL1和Cygwin都无法兼容所有Linux System Call,Wine也无法兼容所有Win32 API。这就造成有的程序无法在WSL1中运行,源码也无法在Cygwin中重新编译;同样有的程序无法在Wine中运行,源码无法在Linux/UNIX中重新编译。
0x01 WSL2
也许是因为WSL1靠翻译System Call来模拟Linux内核的坑太大填不下去了,这种黑科技思路此次被微软完全抛弃,换成了虚拟机/容器的思路,仅仅是名字上延续了WSL,再也不是当初那个WSL了。WSL2引入了修改版的Linux内核,基于最新的Linux 4.19,这也是Linux内核最新的长期支持版,新的内核经过了微软悉心改造,以便与Windows相配合,获得更好的用户体验。根据官方博客的说法,这个微软自家出品的内核也将在不久之后在Github上开源,届时不仅可以更加清楚地了解WSL2工作机制,玩家还可根据自身需要随心定制。WSL2将Linux内核塞到一个轻量级的虚拟机(Virtual Machine,VM)中运行,使用过程与WSL1保持一致,VM的启动、管理都藏在背后。
WSL2演示 图源:https://devblogs.microsoft.com/commandline/wp-content/uploads/sites/33/2019/05/runwsl.gif
使用虚拟机的方式带来了运行效率和兼容性两方面的提升。根据微软自己的测试与WSL1相较,在WSL2中解压zip文档速度提升了惊人的20倍,使用git clone
、npm install
、cmake
提升大约2~5倍。由于使用了真正的Linux内核,意味着WSL2全面兼容Linux System Call,理论上能在GNU/Linux上运行的程序也都能在WSL2中不经修改直接运行。另外还带来一个好处是,可以更新Linux内核换取更高的效率和安全性,背靠微软这棵大树更新(微软背靠Linux基金会大树)。
WSL2首个版本会在2019年6月底Windows insider中推送。
0x02 Windows Terminal
Windows以图形界面起家而大获成功,但长久以来Windows对命令行的支持欠缺饱受诟病,命令提示符/Powershell界面丑陋、cmd/Powershell解释器语法怪异、不支持POSIX标准,最重要地没有GNU、BSD系的众多高效命令程序。在社区反馈下,微软近几年也在不断努力完善命令提示符、cmd解释器、PowerShell,如增加Unicode/UTF8支持、24色支持、更好看的字体、更灵活的配置等,但在Windows Console API上修修补补,始终是治标不治本。
此次微软发布的Windows Terminal是一款终端模拟器(terminal emulator)。老兵命令提示符、PowerShell继续履行历史兼容的职责,Windows Terminal抛掉了历史包袱另起炉灶,支持连接WSL、cmd解释器、Powershell、Powershell Core、SSH远程主机,主要有以下几个功能特性:
多标签页,这也是对众多终端模拟器呼声最高的功能需求,不同的标签页可以连接上述不同的解释器/主机,即同时可以作为本地终端和远程终端使用;
美化字体,使用GPU加速的字体渲染引擎,支持常规字符、特殊符号、emoji、图标,而且相较原来Console的GDI引擎速度更快,微软给终端另外配备了一款现代的等宽型字体;
灵活配置,以结构化文本保存设置项,可以给每个标签页、应用程序独立配置。
build大会之后,Windows Terminal在github一经开源便迅速冲上人气榜,预览版将于2019年夏天在Windows Store中提供。
0x03 小结
市面上已经有相当不错的终端模拟器,如Comemu、putty等,相对来说Windows Terminal只是个锦上添花的产品,没有WSL,Windows Terminal只是个好看一点的命令提示符而已。
Win10确确实实因WSL而不同,不管微软选择hard模式的黑科技路线还是普普通通的虚拟机路线,对于用户而言,只要达成在Windows上高效运行Linux ELF程序这个目的就足够了,更何况虚拟机路线在运行速度、兼容性方面都有了很大的提升。可以说,一个Win10=Windows+Linux Server+Terminal,在Win10上同时享受Windows图形界面和Linux命令行的待遇,而且这两部分还有着很好的互操作性,图形界面和命令行不必彼此隔离,不必担心顾此失彼。
对比各种GNU/Linux桌面发行版惨淡的硬件驱动支持、图形环境与生俱来的不稳定性和低效、二流水准的界面设计,以及不同发行版之间严重的分裂(不一致性),Win10绝对担当得起最佳Linux发行版的称号。
诚如一部分评论所言,微软未来在不断优化WSL的同时,可能对NT内核也做出相应调整。想想Cygwin系列(三):盘点与Cygwin相似和相反的项目所述毛德操教授发起的Longene项目半途废止,统一内核的宏愿在Win10上实现亦未可知。
参考
https://blogs.msdn.microsoft.com/wsl/2016/04/22/windows-subsystem-for-linux-overview/
https://devblogs.microsoft.com/commandline/announcing-wsl-2/
https://devblogs.microsoft.com/commandline/shipping-a-linux-kernel-with-windows/
https://devblogs.microsoft.com/commandline/introducing-windows-terminal/
更多阅读
Cygwin系列(三):盘点与Cygwin相似和相反的项目
Cygwin系列(四):一步一步搭建Cygwin最小系统
Linux Cygwin知识库(一):一文搞清控制台、终端、shell概念
hexo+github pages搭建博客站全过程记录
如本文内容引起极度舒适,请转发分享,欢迎关注与留言交流
►本文为原创文章,已发布在个人博客站https://silaoa.github.io,如需转载请联系知乎账号silaoA或微信公众号:伪码人(We_Coder)。
▼▼▼点击左下方“”,与伪码人共同探索计算机世界。都看这里了,不妨在右下角点个“好看“再走呗。
写留言
pcie usb3.0 驱动 for linux_微软WSL——Linux桌面版未来之光相关推荐
- pcie usb3.0 驱动 for linux_Linux 中的虚拟网络
许多人视虚拟化为 CPU,内存和存储的虚拟化,但是这样太过简单化解决方案了.网络是虚拟化的一个关键方面,代表虚拟化设置中第一等的元素. 虚拟化网络 我们从问题的高层次开始探索,然后深入到 Linux® ...
- pe安装usb3.0驱动_微PE工具箱v2.1版
下载链接:私聊回复分享 网盘暂时超上限 https://sdl115.yunpan.360.cn//share.php?method=Share.download&cqid=b1fcf955 ...
- 用技嘉Windows Image Tool给原版WIN7镜像注入USB3.0驱动
Windows Image Tool,又称Windows USB Installation Tool,具体看自己主板下载的名字是什么 注:如果你已经将原版系统刻录到U盘的,请直接往下看: 将原版WIN ...
- 如何在Win7安装U盘中加入USB3.0驱动的支持
故障现象: 原生Win7系统不包含USB3.0的驱动,所以无法使用USB3.0的U盘在USB3.0的设备上引导,且安装完系统后还需要重新安装USB3.0驱动. 重要提示:重装或升级操作系统会导致数据丢 ...
- win7原版映像中添加usb3.0驱动
最近用软碟通制作了一个win7原版映像,但是在装新系统的时候发现了一个问题,进入安装界面后,显示没有找到驱动器,但是明明是差了U盘的,通过"shift+f12"调出命令行窗口,输入 ...
- 计算机没有usb视频教程,Win7已安装但没有USB3.0驱动如何安装教程
不知道大家有没有遇到过,在一个带有usb3.0接口的电脑上安装了win7后,usb不能用,鼠标和键盘也不能用,关键是没有ps2接口,全部都是usb接口,所以没有安装usb3.0驱动之前,鼠标和键盘全部 ...
- win7 加载 usb3.0驱动
1.去微软官网下一个 usb3.0 驱动 https://downloadcenter.intel.com/zh-cn/download/26254/-NUC-NUC6i7kyk-USB3-0-Win ...
- b360装服务器系统,B360主板安装USB3.0驱动的解决方法
今天在行业群内有同行咨询B360主板装WIN7如何安装USB3.0驱动的问题,下面我就来说一说 大家都知道,在B360主板刚上市的时候是没有USB3.0驱动的.主板官方和INTEL都不提供对B360主 ...
- Windows 7原版映像中添加usb3.0驱动
最近用软碟通制作了一个win7原版映像,但是在装新系统的时候发现了一个问题,进入安装界面后,显示没有找到驱动器,但是明明是差了U盘的,通过"shift+f12"调出命令行窗口,输入 ...
最新文章
- 教你玩转 统一异常处理
- 51单片机好学嘛?学完51单片机学什么?
- Qt 如何发送和接收UDP数据报
- HDU 1520 Anniversary party(树形dp)
- python列表框_「每日一练」Python列表框部件的运用
- 老生常谈session,cookie的区别,安全性
- 自学机器学习_我用来自学机器学习的最佳资源
- 初窥wordcloud之老司机带你定制词云图片
- postgreSQL源码分析——索引的建立与使用——总结篇
- 数学计算机电路基础,2019上“计算机电路基础”作业(五大题共16小题).docx
- java后台生成excel_Java后台生成Excel前台下载
- 面向对象的关键技术(多态、接口、抽象)
- 手把手0基础项目实战(三)——教你开发一套电商平台的安全框架
- testbench实例 vhdl_VHDL的testbench的编写(转)
- 怎么选择靠谱Java培训机构?
- Oracle11G数据库重演测试
- 二叉树已知前序遍历、中序遍历画出二叉树的形状
- 读书笔记——《重构》
- Java关键字synchronized 使用中的 Double-Checked Locking is Broken
- melodic 奥比中光(orbbec)相机安装
热门文章
- tampermonkey脚本header介绍
- 任务完成从不加班_我如何从不知道如何编码转变为在9个月内交付9个项目-都在我15岁之前就完成了……...
- 看懂Oracle执行计划(转载)
- golang module实践
- 蓝奏云数值验证码识别,python调用虹鱼图灵识别插件,超高正确率
- Python编程模块里一些小众但是却比较实用的python内置库
- Mysql数据库——高级用法(视图、事务、索引、自连接、用户管理)
- Python实现普通二叉树
- VS2008jQuery智能提示
- .NET设计模式(1): 简单工厂模式