这里的重点甚至不在 Windows 或者 Linux,而是我们该先选择 Hyper-V 还是 KVM。解决了这个问题,Windows 与 Ubuntu 栈都能通过些许调整在对方之上顺畅运行。
最近的一连串事件,不由得令人怀疑微软是不是打算在 Linux 内核之上对 Windows 加以重构。
我个人对于微软积极参与 Linux 项目倒是有一点自己的见解。作为 Canonical 桌面团队的一员,我负责在 Windows Subsystem for Linux(WSL)上交付 Ubuntu。当时,我经常跟众多参与 Linux 及其他开源项目的微软员工交流,也能拿到关于微软产品及发展策略的最新简报。但这里要向大家声明,以下内容只是我的个人猜想,且不会公开任何不宜发布的内容。
我很高兴能够在微软与 Linux 社区之间找到自己的位置。两个社区都不乏极富创造力、善良且极具个人魅力的成员。随着社区间边界的逐渐模糊,无数新的成果也接踵而至。这有点像是自然界中的异花授粉,会让每个植株都变得更富活力。
默认情况下,WSL 不会进行无人值守升级,因为其中没有 systemd 这样的传统 init 在后台执行升级。你可以在 Windows 任务管理器中设置基本任务,在登录时以 root 用户身份运行 apt update,而后向任务中添加运行 apt upgrade 的操作:
使用 Windows 任务管理器在 WSL 的 Ubuntu 上运行自动更新
我对微软出于产品及工程方面的考虑,而有可能将 Windows 操作系统内核转移至 Linux 内核的观点深表怀疑。下面请大家听听我的想法。
首先,我这样理解 Slashdot 与 Hacker News 近期经常发布此类观点的原因:
- 典型的标题党行为。
- 对于开源及 Linux 倡导者们来说,这是他们一直期盼的结局。
- 当今世界上,Windows 所扮演的角色正在发生变化。在这块巨大的系统市场蛋糕中,Android、iOS、MacOS、Chrome OS 以及 Ubuntu 牢牢把持着自己的一块。
随着在 Azure 与 WSL 上使用 Linux 成为可能,这种猜测的合理性开始增加。
Windows 与 Linux 的存在代表着宇宙的双重性。这是两股相互对立、但又彼此补充的力量,缺一不可。而将二者融合起来,则像是一种神奇的魔法。“在与 Windows 及 MacOS 的竞争过程中,Linux 逐渐成长为优秀的操作系统。”
而我认为 Windows 不大可能改用 Linux 内核的理由如下:
1. Windows 中的 NT 内核能够提供一定程度的向下兼容性、长期支持与驱动程序可用性,而这一切都是 Linux 最近才正在努力的方向。在 Linux 中重现这些能力需要耗资数百万美元。微软的很多付费客户也将在未来继续支持 Windows 系统。正如微软方面所言,Windows 并不是他们的负担,因此并不存在为了节约开支而转向 Linux 内核的情况。另外,即使真的转向 Linux,也有可能在单一内核的背景之下导致畸形文化。事实上,正是在与 Windows 及 MacOS 的竞争过程中,Linux 逐渐成长为优秀的操作系统。更合理的结果应该是,开源创新继续在所有操作系统之间往来传播。Windows 与 Linux 开源贡献者将共享这两大生态系统中的精华。
2. 目前尚不清楚 Windows 用户空间能否从 NT 重新迁移至 Linux 内核,同时继续保持 Windows 强大的兼容性,特别是企业级客户以付费方式获得的关键任务应用程序兼容性。Windows 在内核空间与用户空间方面并没有像 Linux 那样做出严格划分。NT 内核中大约包含 400 项明确记录的 syscalls,外加约 1700 项明确记录的 Win32 API 调用。要在这一背景之下保证 Windows 开发者及其工具拥有精确的兼容性,必然涉及大量重新实现工作。Linux 在 amd64 上则只有 313 项 syscalls,但即使是这样,微软在将 WSL 1 中 syscall 事务层转向 WSL 2 中虚拟内核以重新实现开发者此前已经在使用的数十种非标准 Linux ABI 操作方法时,也遇到了巨大的阻力。很明显,在 Linux 上的 SQL Server 中实现 NT 相关兼容性相对容易,但为数百万开发人员的应用程序提供兼容性保证则绝对不是嘴上说说这么简单。
3. 微软近年来在 Windows 身上砸下巨额资源。微软此前在 Windows 10 的可用性、新功能以及性能改进方面做出努力,也获得了不错的回报。这些改进,加上 OEM 合作以及 Surface 的推出,再次振兴了一度遭受 iPad 与 Chromebook 双重冲击的 PC 市场。微软一直努力使 Windows 成为出色的开发平台,相关项目包括 Windows Terminal, PowerToys, Windows Subsystem for Linux 以及 Visual Studio 2019。Insiders 计划也非常成功。Windows 为大多数 Surface 设备产品线提供支持,这也成为微软目前的工作重点。2018 年与 2020 年的内部重组也表明,Surface 已经成为 Windows 未来发展中的一大重要元素。Windows 也在为 Xbox 提供支持,同时继续掌控着庞大的 PC 游戏市场。最后,微软提出了 Windows 10X 的构想,表示 10X 将成为 Windows 10 之后的下一代操作系统概念,有望匹配 Surface Neo 等未来硬件平台。
4. 微软无需使用 Linux 内核,也同样能够在市场上拥有旺盛的生命力。在移动市场上遭遇滑铁卢后,微软意识到设备的格局正在发生变化。在操作系统与平台市场上,包括 Android、Ubuntu、iOS、MacOS、Alexa、Chrome OS 正在为 x86 乃至 ARM 等多种计算设备提供底层支持。微软也证明,他们完全有能力在其他平台上提供强大的产品与服务,同时继续保持自家 Windows 传统平台的显著竞争力。微软还立足 Android 推动移动领域的创新,包括移植 Office 应用、推出主屏幕启动器以及新的 Surface Duo。在 Ubuntu 上,微软拿出了面向 Linux 工作站的 Code、.NET、Azure 工具、Teams、PowerShell、Sysinternals for Linux,已经即将推出的 Edge 浏览器与配套微软 Web 开发工具。想在 Azure 上运行 Ubuntu?微软已经提供现成服务,并与 Canonical 紧密合作以带来更出色的使用体验。
更重要的问题,并不是微软是否打算将 Windows 迁移至 Linux,而是 Windows 打算在开源道路上走多远。我们已经见证了 Windows Terminal、PowerToys 等组件要么开始使用开源成果,要么正筹划转向开源。因此更现实也更合乎逻辑的目标,应该是以能够使其他操作系统受益的方式持续开放 Windows 组件乃至 Windows 本体的开发过程。在这轮转型中,Insiders 计划还仅仅只是第一步。
Windows 甚至采取了 Ubuntu 的版本发布节奏,开始在每年 4 月和 10 月发布新版本,同时在固定发行版中引入扩展支持。
微软发布的一篇博文与我的个人判断相互印证,即桌面操作系统的对抗时代即将结束。我们正在迈进一个新时代,届时高端工作站将同时运行多种操作系统(类似于运行时)。因此这里的重点甚至不在 Windows 或者 Linux,而是我们该先选择 Hyper-V 还是 KVM。解决了这个问题,Windows 与 Ubuntu 栈都能通过些许调整在对方之上顺畅运行。微软为 Linux 内核提供补丁程序,保证 Linux 能够在 Hyper-V 上正常运作;同时也调整了 Windows,使其与 KVM 良好对接。
由于整个微软都在趋于开源,因此 Ubuntu 的一部分将进入 Windows,而 Windows 的一部分则将进入 Linux。
其中最关键的背景,在于开源已经成为软件世界中的王,而微软也为自己在开源开发模式中的贡献感到无比自豪。
Windows 与 Ubuntu 都只有一条道路可走———通过开源不断完善自身。双方都将发挥自己的相对优势,并将开源协作的范围提升到新的高度。
在 WSL 上为 GUI 支持所做的工作有可能极大地改善 Linux 上的远程桌面和 Windows 虚拟化体验。