适用于 Linux 的 Windows 子系统

适用于 Linux 的 Windows 子系统

Windows Bash 和 Cygwin 有什么区别?

Windows 带有“Linux” Bash 的新更新,但是它与 Cygwin 有哪些区别可能会让您选择其中一个?

答案1

如果您希望完全使用 Windows 并使用 bash 脚本来驱动/自动化 Windows 任务,Cygwin 是一款出色的工具。但是,Cygwin 无法运行未修改的 Linux 二进制文件。

这就是 WSL 发挥作用的地方:

Windows 的 Linux 子系统 (WSL) 是 Windows 内核的一个新层,旨在提供与 Linux 内核 ABI 的高度兼容性。这允许原生、未经修改的 Linux ELF64 二进制文件在 WSL 上运行。

这就是 WSL 如何运行正版 Ubuntu 用户空间发行版以及您从 apt-get 下载的任何软件包或从其他地方下载的 .deb 软件包而无需进行任何更改。

WSL 的目的是使在 Windows 上工作的开发人员能够运行许多工具,并能够处理许多依赖于 Linux 二进制文件、功能、行为、文件系统布局、进程模型等的项目。

虽然 WSL 的实现仍处于早期阶段,但我们正在努力提高系统调用实现的广度和深度,以稳步提高 WSL 运行越来越大的工具集的能力,并支持快速增长的 Ruby、Java、节点等包和项目。


更新日期:2017-09-07

自从撰写上述内容以来,我们已经发布了 Windows 10 Creators Update,它极大地提高了 WSL 与您想要/需要运行的许多工具的兼容性。

开发工作也在持续进行,过去几个月我们一直在发布 Win10 Insiders 版本,准备于 2017 年 10 月发布秋季创意者更新 (FCU)。

在 FCU 中,我们添加了同时安装和运行多个发行版的功能:Ubuntu、openSUSE 和 SLES 目前可用,Fedora 和其他发行版即将推出。WSL 现在还支持 USB 串行通信、USB 存储和网络共享的安装,以及对我们的系统调用的进一步改进,从而提高了与更多工具的兼容性。


更新日期:2019-08-22

自从首次宣布和发布 WSL,然后通过商店添加对多个发行版的支持,以及宣布 WSL v1.0 HTH 以来,这几年非常忙碌。

在 Build 2019 上我们宣布新的 Windows 终端终端会话视频在这里) 和WSL 2WSL 2 会议视频在此) 介绍了一种在 Windows 上运行 Linux 的全新方法。

如需了解更多详细信息和未来更新,请务必每隔几周访问一次 Windows 命令行博客,我们会在其中发布大量相关新闻

答案2

适用于 Linux 的 Windows 子系统

我已经在 Windows 10 下使用 WSL 大约几个月了。最后,我可以启动 Windows 玩游戏,仍然可以访问 bash 提示符并运行 CLI 和许多 GUI 程序。存在一些限制,例如没有熟悉的 Linux 内核虚拟目录。需要规划在双启动机器上在 Ubuntu 和 WSL 之间共享相同的 Bash 脚本。

有很多事情我希望看到改进,但我可以忍受现状一年左右。

闭源

需要记住的是,微软是一个封闭系统,你不会像在 Linux 上那样得到大量第三方编写的更新。但考虑到所有因素,你买了一台新笔记本电脑,它本来就预装了 Windows 10,所以你至少可以说它是“免费的” :)

Cygwin 由 Red Hat Linux 控制,而 Red Hat Linux 也不以免费提供产品而闻名。他们的“免费”Linux 发行版Fedora好像“试验场”对某些人来说。

维护周期

Cygwin 已有 15 年的更新。值得注意的是,自 2003 年以来一直由同一位项目经理负责。有许多全职维护人员和更多的志愿者贡献者。

WSL 每年春季和秋季提供两次重大更新。开发人员订阅列表中的用户每周可获得小更新。尽管微软有资源将数千人投入到 WSL 开发中,但似乎你可以指望团队成员用你的手指。

速度问题

您会看到许多关于 WSL 速度的抱怨。例如,Windows 10 中的屏幕绘制时间比 Ubuntu 16.04 长很多倍,也就是说,您实际上可以在 Windows 10 中看到光标移动:

WSL bash 启动.gif

WSL Bash 启动画面绘制大约需要 5 秒钟。相比之下,Ubuntu 16.04 中相同的启动画面大约需要 1.5 秒:

Ubuntu 终端 splash.gif

Cygwin 有自己的Bash 速度问题


以下是原始帖子,仅供历史参考。

使用 Windows 10 家庭版,如果它是 32 位 Windows,这意味着它不会运行 64 位 Ubuntu / Windows 子系统,正如微软在这里告诉我们的那样:(windows win10 HOME BASIC中的Linux子系统)。

在 Windows 上运行 Ubuntu 就像梦想成真,因为它为 Nvidia 提供了出色的游戏支持,但在你急着买一台新的(或二手的)笔记本电脑之前,如果你想在 Windows 下原生运行 Ubuntu/Linux,请确保它有 Windows 10 64 位而不是 32 位家庭版。在微软网站上,他们实际上将 Windows 周年纪念版称为运行 Windows Subsystem for Linux 的先决条件。


但是如果您不想为 Windows 10 花费 200 多美元,并且您有一台像我一样运行 Windows 8.1 64 位的旧笔记本电脑,并且您有一台像我一样运行 Windows Vista 64 位的更旧的笔记本电脑,那么 Cygwin 就是答案。

Cygwin 支持更多 Windows 版本正如他们的网站所列出的

Cygwin 有望在所有现代、已发布的 Windows 版本上运行。截至 2016 年 1 月,这包括 Windows Vista、Windows Server 2008 以及所有更高版本的 Windows,直至 Windows 10 和 Windows Server 2016。32 位版本的 Cygwin 还可在已发布的 64 位 Windows 版本的 WOW64 32 位环境中运行,64 位版本当然只能在 64 位 Windows 上运行。

请记住,Cygwin 只能执行底层操作系统支持的功能。因此,Cygwin 在不同版本的 Windows 上的行为会有所不同,并表现出不同的限制。

相关内容