Ubuntu on Windows?

作者:James Darvell

由于 Microsoft 和 Canonical 在多个项目上合作,互联网上充斥着猜测和谣言。有些人担心 Microsoft 计划收购 Canonical 并关闭 Ubuntu。另一些人则想知道他们是否计划拥抱 FOSS 并使 Windows 开源——但没有人真正预料到这一点。

Microsoft 和 Canonical 在过去几个月里秘密合作,将 Ubuntu 带到 Windows 上——而不是通过虚拟化或容器化环境。不,目标是在 Windows 中原生运行 Linux 应用程序。

在深入探讨这甚至是如何实现之前,让我们快速了解一下他们为什么要这样做。首先,重要的是要注意,此举旨在支持开发人员,而不是普通用户。因此,它不支持全套 Linux GUI 应用程序(例如 X Window System、桌面环境以及大量的 Linux 桌面应用程序和游戏)。相反,重点非常放在命令行界面,特别是 Bash shell。

任何经验丰富的 Linux 开发人员或管理员都会告诉您,CLI 提供了无与伦比的强大功能。即使是那些已经学会喜欢现代集成开发环境的花哨功能的人,仍然在日常工作中大量使用终端。

虽然 Windows 确实有一个 CLI 界面 (PowerShell),但它无法与 Bash 的全部功能以及任何标准 GNU/Linux 发行版中发现的全套 CLI 工具相提并论。这很大程度上归因于 Linux 成熟的 CLI 工具的悠久历史,这些工具可以追溯到 UNIX 的早期。

因此,将 Bash 引入 Windows 将为经验丰富的开发人员提供强大的新工具库。但是 Microsoft 如何从中受益呢?

过去,Microsoft 一直以构建封闭平台为基础进行运营。它的策略是将用户和开发人员锁定到一个与其他操作系统不兼容的平台中。这一策略的成功在 Microsoft 的增长中发挥了重要作用。

但是 Web 的出现对这一计划造成了巨大打击。Windows 可能在桌面领域占据主导地位,但在服务器领域存在激烈的竞争。当尘埃落定时,Linux 赢得了 Web 服务器世界霸权之战。它只是这项工作最有效的平台。

这意味着 Web 开发人员必须能够编写在 Linux 平台上运行的代码,即使他们使用的是 Windows 笔记本电脑。由于这两个操作系统在内部差异很大,这有时非常困难。而且,这也是相当多的开发人员从 Windows 切换到 Linux 或 OS X 的原因之一。

如今,跨平台开发比以往任何时候都更加重要。开发团队经常努力支持多种设备和操作系统。能够从单个操作系统为所有这些系统编写代码是一个巨大的优势。

开发人员和用户流失对 Microsoft 来说是坏消息。这就是为什么创建解决方案以保持开发人员满意是当务之急。

已经有几种旨在简化 Windows 上 Linux 开发的第三方工具。一方面,有虚拟机,它可以在沙箱中运行几乎任何操作系统,但虚拟机总是会带来沉重的性能损失。

然后还有像 Cygwin 这样的工具,它们为 Windows 命令行创建了一个类似 Linux 的环境。但是,尽管环境很熟悉,但它在支持在正常 Linux 环境中工作的全套命令和功能方面仍然不足。

“Bash for Windows”团队成员采取了完全不同的方法。他们的目标是通过在 Windows 之上运行 GNU/Linux 发行版(在本例中为 Ubuntu)来提供完整的 Linux CLI 环境。好吧,它是完整的,但有一个明显的例外——Linux 内核。

Linux 内核是任何 GNU/Linux 操作系统的核心。它运行构成完整操作系统的软件,包括所有服务、守护程序、实用程序和应用程序。

Windows 也有一个内核(Windows NT 内核)。它在 Windows 系统中执行相同的角色,并且两个内核都通过接口与其他操作系统组件交互。但是,这两个内核具有非常不同的接口。

如果您可以重新创建内核的接口,您应该能够运行编译为在该内核上运行的软件。这就是流行的 Wine 软件包的工作原理。

Wine 是一种允许 Linux 用户运行 Windows 应用程序的工具。它通过将 Windows 系统调用转换为 Linux 系统调用来实现这一点。从 Windows 应用程序的角度来看,它似乎正在 Windows 上运行。对于内核而言,该应用程序看起来像一个普通的 Linux 进程。

“Windows Subsystem for Linux”的工作原理相同,但方向相反。Microsoft 所做的是构建一个“反向 Wine”,将 Linux 系统调用转换为 Windows 系统调用。

当然,这不仅仅是将一组系统调用映射到另一组系统调用——两个内核之间的架构差异使这项任务非常复杂。而且,这就是为什么仍然有一些 Linux 应用程序不受新系统的完全支持。

例如,可以运行 Ruby on Rails,但有些流行的 GEM(Ruby 包)尚无法安装。

这是一项令人印象深刻的成就,这得益于 Microsoft 和 Canonical 之间的合作,并且有许多个人开发人员和初创公司会欢迎这一消息。但是,FOSS 世界中有许多人会对这一消息表示怀疑。该项目才刚刚宣布,甚至尚未广泛可用(将在几周内发布 beta 版)。

看看这会走向何方将很有趣。您认为这对 Linux 社区来说是件好事吗?在下面的评论中留下您的意见。

加载 Disqus 评论