开源的 WinNT 系统 ReactOS 将大量使用 Wine 代码

{ 撰文/guest }

本文内容基本上是 http://www.reactos.org/media/docs/2010/arwinss.pdf 的概要翻译,有兴趣者可看原文。

Arwinss is an alternative implementation of the core Win32 subsystem components.

大意是说 ReactOS 要重写其 Win32 子系统实现,且要大量使用 Wine 代码。

作者首先介绍了下 ReactOS 的现状:

  • 30+ 开发者 10+ 年的开发,时间与人力充足,但仍达不到预期结果。原因何在?
  • Win32 及 Windows 的设计是 boss 级怪,需要 10x 资源
  • 仅有小部分 Win32 与 WinXP 相一致,其余大部分皆不兼容
  • N 多重大 bug 已存在多年未被解决
  • 因此 ReactOS 急需一个根本性的解决方案

接下来作者说明了为何及如何以再次重写其实现来解决这一问题, 而不能够再等待数年。

当前 ReactOS 的实现 = 古老 Wine 代码 + 古老 ReactOS 特定代码 + 一些优秀的新代码,其中 Wine 部分过于古老以至于与新的 Wine 代码同步完全是浪费时间。

完全从零重写 Win32 子系统需要数年时间,事实上这也是 ReactOS 过去的尝试失败的原因。 而尽可能重用 Wine 的代码则提供了一个可能的解决方案。

然后作者讨论了其技术上的可行性, 大意是说 Wine 模块化优秀,可重用性强。对于关注点之一的图形部分, 虽然 Wine 依赖于 X11,但有着其抽象隔离层,因此 ReactOS 完全可以使用其代码,并 使用其自有的快速图形驱动。

之后作者说明了共享 Wine 代码所带来的好处, Wine 新版本中数百开发者的贡献,只需 30 分钟的合并与测试即可获得。

超过 Wine 所列举支持的 13495 个程序立时得到支持,而 ReactOS 的设计 还可以运行那些由于硬件保护、驱动的相关问题而不能在 Wine 上运行的程序。

同时由于 ReactOS 系统级别的 Win32 实现,还能够克服 Wine 的如下缺点:

  • 糟糕的 NT 内核模拟
  • 与 Wineserver 的缓慢通信
  • Unix 依赖性
  • ...

最后作者说明了这一工作的重要性:

  • 与 30+ 开发者 10+ 年相比,1 人 2 月即可完成一个可用的版本,开发迅捷
  • 一次修复 N 多 bug
  • 立时令 ReactOS 进入实际应用水平

截至发稿时期,ReactOS 0.3.11 版仍未支持 NTFS(现支持 FAT,路线图中 NTFS 将在 0.5 版本中提供支持),这也是我未在物理电脑上尝试的原因。不过随着 ReactOS 与 Wine 的共享,也许在未来的某一天,我们真的能够用上这个开源的、自由的 Win32 实现。

关于 ReactOS 为何选择重写一个 WinNT(这包含了 WinNT/2K/XP/2K3/Vista/7)而不是改进 Linux 以及与 POSIX 系统、 Win32 系统关系如何等问题请参见其介绍

{ via Phoronix. Thanks guest. }

Read More:

26 Comments

  1. 1 stripsss Commented @ 2010-01-20 18:43Reply to this comment

    我已经几乎用不到win了。。。。 支持这个项目。。。。很庞大 linux很习惯了。。

    以后可能双系统真的都是开源的了。

  2. 2 idiot Commented @ 2010-01-20 18:47Reply to this comment

    好像有本window内核详解是基于这个写的吧

  3. 3 jactry Commented @ 2010-01-20 18:49Reply to this comment

    期待……

  4. 4 Sunng Commented @ 2010-01-20 19:53Reply to this comment

    一直期待这个项目能让人彻底摆脱win

  5. 5 flytwokites Commented @ 2010-01-20 20:59Reply to this comment

    就win这烂架构有什么好克隆的,有这时间还不如把linux桌面弄更好些。

  6. 6 Phingo Commented @ 2010-01-20 21:04Reply to this comment

    我很好奇以后将会有多少windows软件开发后在这个平台下测试,不会到后来发现大量的win32程序还是兼容不了吧。

  7. 7 linooxlee Commented @ 2010-01-20 22:10Reply to this comment

    ARWINSS = Another Reactos WINdows SubSystem

  8. 8 自由建客 Commented @ 2010-01-20 22:35Reply to this comment

    有时候变法不如革命

  9. 9 linooxlee Commented @ 2010-01-20 23:01Reply to this comment

    @flytwokites: NT架构可不是什么烂架构,它是出自VMS系统那帮牛人之手,糅合Mach,UNIX ,VMS 和 OS / 2 的优秀的部分,当年微软对它下了大本钱的。其实Windows只是NT操作系统的一个子系统,一个基于后 NT 内核提供用户和应用程序界面的抽象层。 NT架构还提供posix子系统,现有的linux程序源码编译后也是可以在NT下运行的。

  10. 10 leeing Commented @ 2010-01-20 23:28Reply to this comment

    模仿不如创新

  11. 11 大头龙仔 Commented @ 2010-01-20 23:40Reply to this comment

    一直都有留意这个发行版的信息,个人感觉X Windows架构从一定程序上限制了Linux在桌面方面的发挥

  12. 12 且听风吟 Commented @ 2010-01-20 23:48Reply to this comment

    “客服”写错了……

  13. 13 ihipop Commented @ 2010-01-20 23:57Reply to this comment

    为什麽X是必须的? 好多手持设备的linux都没有X,只接和内核通迅不好麽?难道很难实现?或者有其它利弊权痕?

  14. 14 Iven Commented @ 2010-01-21 0:05Reply to this comment

    @ihipop: 哪里写着 X 是必需的?

  15. 15 ihipop Commented @ 2010-01-21 0:42Reply to this comment

    即如此为什麽要有X ? GUI程序直接和内核通讯不好麽?

  16. 16 luojie-dune Commented @ 2010-01-21 4:43Reply to this comment

    为啥不联手 linux兼容内核 项目?

  17. 17 simsilver Commented @ 2010-01-21 5:47Reply to this comment

    @ihipop: 内核是不会加入庞大的gui库的,因为gui不是必要的,也就是X不是必要的原因

  18. 18 黑日白月 Commented @ 2010-01-21 7:09Reply to this comment

    @大头龙仔:

    单纯从架构讲恐怕不然,Mac OS X 也是 X Windows 架构的,当然是 Apple 自己实现的另一套协议和 C/S。

    @ihipop:

    似乎有些嵌入式 Linux 不是没有 X 架构,而是没有用通常的 X Server…… Android 就是这样的……

    将 GUI 渲染放进内核带来的开发和维护上的弊病远远超过带来有限的性能提升。

  19. 19 guest Commented @ 2010-01-21 8:54Reply to this comment

    Mac OS X 可以支持X,但X并不是OS X的原生(意为官方推荐的)图形api,Quartz 才是。Quartz和X11是不同的 请参见http://en.wikipedia.org/wiki/Quartz(graphicslayer)

  20. 20 Toy Commented @ 2010-01-21 9:08Reply to this comment

    @且听风吟: Thanks. 已纠正。

  21. 21 kidfruit Commented @ 2010-01-21 15:03Reply to this comment

    说实话很不看好这个系统…………太难实现了。

  22. 22 wangyg Commented @ 2010-01-22 13:50Reply to this comment

    不知道他们的对硬件的调度是否也自己实现,如果自己实现的话性能怎么样?创造出类windows系统,需要非常大的人力,我觉得“需要 10x 资源”根本不够,

  23. 23 stecue Commented @ 2010-01-26 2:11Reply to this comment

    对呀,这个东西大量用wine,那是不是实际上是Linux内核+wine ?或者是直接把wine写到内核里的Linux?

  24. 24 larz Commented @ 2010-01-26 4:59Reply to this comment

    @stecue: 他们只使用WINE来加速win32子系统的实现,内核当然是自己写的,WINNT内核还支援posix子系统

  25. 25 larz Commented @ 2010-01-26 5:04Reply to this comment

    @wangyg: 作为一个追赶者、实作者,不需要花费跟原创者同样的资源。

    硬件的调度...是指驱动吗? 直接去找硬件原厂的WIN驱动来用吧,只要内核的接口实践正确就不会有问题

  26. 26 Lancelot Commented @ 2010-01-27 18:33Reply to this comment

    什么时候wine的界面能好看一点。。。