ReactOS

来自BetaWorld 百科
跳到导航 跳到搜索

ReactOS是一款基于Windows NT架构的开源操作系统,旨在通过使用类似构架和提供完全公共的接口,实现和NT与Windows操作系统二进制下的完全应用程序和驱动设备的兼容性。

截至2018年12月,ReactOS仍然被认为是alpha版本软件,功能不完整,但许多Windows应用程序已经可以运行(例如Adobe Reader 6.0、OpenOffice等),因此开发人员仅建议将该系统用于评估和测试目的。

发展历程

启动开发

1996年,一群自由软件开发者开始了一个名为FreeWin95的项目,旨在重新实现Windows 95。但当时对该操作系统仅限于讨论而没有实质性进展。

虽然对于FreeWin95项目期待很高,但直到1997年末,项目还没有公开发布任何版本,于是项目协调员Jason Filby联合大家重振该项目并起了一个新名称 “ReactOS” ,并计划重新实现Windows NT。1998年2月,ReactOS项目正式启动,开始开发系统内核和基本的驱动程序。

代码审查

为了避免版权起诉,ReactOS必须明确地完全区分并且不衍生于Windows,这是一个需要非常谨慎工作的目标。

2006年1月17日,Hartmut Birr在ReactOS开发者邮件列表中指出ReactOS包含有反编译的Windows源码。因此开发者暂时禁止非开发者进入系统。鉴于ReactOS是开放源码软件,此举引起开放源码社群的不满。ReactOS的贡献者没有受到当时的举动影响。不久后所有软件开发工程都能自由进入了。

由于Birr的指摘未能证实,开发者决定审查源码。可能“受污染”的源码会被封锁,直到那些源码经审查后确定无问题。

源码随着审查的结束已经于2008年全部解封,维护和开发得以正常继续。

参与Google Summer of Code

从2006年开始,ReactOS 项目参与了多次Google Summers of Code。例如,在GSoC 2011中,ReactOS指导了一个将lwIP集成到网络堆栈中的学生项目。迄今为止,ReactOS曾在GSoC参与过五次:2006年,2011年,2016年,2017年和2018年。

公开演示

2007年,俄罗斯的政治人物Viktor Alksnis会见了项目协调员Aleksey Bragin,Aleksey Bragin介绍了该项目并演示了该项目,当时的演示中显示ReactOS已经可以运行Total Commander和Mozilla Firefox。

它还吸引了时任俄罗斯总统梅德韦杰夫(Dmitry Medvedev)的关注。 梅德韦杰夫访问了斯塔夫罗波尔地区的一所高中,巧合的是ReactOS开发者Marat Karatov正是该学校的高中生,他借此机会向总统介绍了开源Windows系统,并请求总统资助100万欧元。梅德韦杰夫称对ReactOS很感兴趣,表示会考虑资助事宜。

ReactOS社区版

2014年4月,ReactOS项目宣布在Indiegogo上开展众筹,推出基于0.4版本的 ReactOS Community Edition。筹资活动的目标是50,000美元,除此之外还有额外的伸展目标。ReactOS Community Edition的开发将以社区为中心,ReactOS用户投票和资金决定项目旨在支持哪些软件和硬件驱动程序。2014年6月1日,ReactOS在Indiegogo的灵活众筹活动结束,共筹集到了25,141美元用于社区版的开发,不久后,支持硬件和软件的投票过程启动了。

ReactOS Hackfest 2015

ReactOS 项目于2015年8月7日至12日在德国亚琛市举办了一场Hackfest。Hackfest圆满结束,因为它为ReactOS增加了许多功能。

系统开发

核心开发

ReactOS主要用C语言进行编写,另外包含一些用C++编写的元素,如ReactOS Explorer和声音栈。该项目使用MinGW和Visual Studio进行编译。

开发人员的目标是使内核和用户模式API与Windows NT 5.2(Windows Server 2003)兼容,并增加对更多应用程序和硬件的支持,计划在开发日趋成熟时针对更新版本的Windows。DirectX支持是通过内部实现ReactX进行的。2D硬件加速渲染是本机完成的,而其他绘图功能则重定向到OpenGL作为权宜之计解决方案。

开发进度受开发团队规模及其经验水平的影响。作为对实施Windows 7所需工作量的估计,微软雇佣了大约1,000名开发人员,组成了25个团队,每个团队平均有40名开发人员。但截至2011年9月2日,在Ohloh的ReactOS条目中,通过“非常大,活跃开发者只有33位,这些开发人员在12个月的时间内贡献了累计,并且累积了104个以前通过Subversion从项目开始为代码贡献代码的用户。ReactOS开发人员Michele C.在米兰举办的Hackmeeting 2009上的演讲中指出,大多数开发人员在使用ReactOS时都了解Windows体系结构,并且没有任何先验知识。

虽然ReactOS目前主要针对x86/AMD64 PC平台,但是,移植到ARM架构的努力“正在进行中”,虽然它没有产生太多功能而被放弃了。支持的Xbox,变体IA32体系结构,是通过使用一个特定于体系结构的加入HAL实现的。

硬件驱动程序堆栈

在硬件驱动程序方面,例如UniATA项目为ReactOS提供SATA驱动程序。该项目还尝试使用FullFAT库重写其FAT可安装文件系统。ReactOS利用Haiku的USB堆栈作为参考,并作为其USB支持的基础。

网络

ReactOS的网络堆栈构建在FreeBSD中OSKit网络堆栈端口的TCP部分,以及内部开发的面向数据包协议(如IP)的实现。后来,lwIP被集成到ReactOS的网络堆栈中。Samba/Samba TNG项目已经提供了LSASS,SAM,NETLOGON和打印假脱机等Windows网络服务作为开源替代方案。

与Wine项目合作

ReactOS和Wine项目共享本机运行二进制Windows软件的目标,因此可以共享许多依赖项和开发。ReactOS使用Wine项目的一部分,以便它可以从Wine在实现Win32 API方面的进展中受益。虽然由于体系结构的不同,Wine的NTDLL、USER32、KERNEL32、GDI32和ADVAPI32组件不能由ReactOS直接使用,但代码片段和其他部分可以在两个项目之间共享。不过内核由ReactOS单独开发,因为Wine依赖于现有的类Unix内核。

版本更新

  • 0.4.5:改进了字体和字体指标的渲染,内核和驱动程序中的主要修复,Microsoft Office 2010经过测试可以正常运行。
  • 0.4.6:修复了几个双引导问题,改进了主题支持,添加了NFS驱动程序,修复了几个内核和文件系统的问题。
  • 0.4.7:改进版应用程序管理器RAPPS,在资源管理器中实现“快速启动”工具栏; 文件系统驱动程序中的各种错误修复,RDBSS/RXCE和NFS支持的改进。
  • 0.4.8:支持气球通知,通知托盘,shell自动完成,使用了新的NTFS驱动程序,崩溃转储报告和NT6+软件的实验性支持。
  • 0.4.9:ReactOS再次实现自托管功能,也就意味着在ReactOS上可以编译ReactOS。
  • 0.4.10:支持从Btrfs启动。
  • 0.4.11:
    • 内核改进:主要为存储改进。
    • 增加对manifests的支持。
    • 解决了.NET 2.0应用程序无法正常关闭的问题。
    • USETUP改进,使已安装的ReactOS可升级。
    • 对负责图形渲染的Win32子系统的改进。
  • 0.4.12:
    • 内核改进:修复React OS的CDFS驱动。
    • 加入“Win+方向键”功能调整窗口的功能。
    • 字体渲染改进。
    • 加入Intel e1000 NIC驱动,供VirtualBox和VMware虚拟机使用。
    • 加入“Lunar”和“Mizu”主题
  • 0.4.13:
    • 改善USB支持,现在已支持HID和存储设备。
    • Explorer增加文件搜索功能。Xbox ReactOS端口改进。FreeLoader FAT引导加速。系统字体管理通过注册表完成。
    • 引入软件“Accessibility Utility Manager”来管理ReactOS的可访问性应用程序。
    • ReactOS现在可在AMD64位环境下启动并工作。

影响评价

下面一些关于ReactOS项目的批评提出几条为什么他们不相信ReactOS会成为一个有价值的项目的原因。

  • 其中,有人指出把与Windows NT 4.0兼容作为ReactOS的发布目标是一个局限,因为NT 4.0评价不佳而且它已经过时了。作为回复,有人提出虽然目前是把与Windows NT 4.0兼容作为目标,但是,Windows后来基于NT架构的系统都与NT 4.0在系统层次上高度相似(例如:Windows 2000Windows XPWindows Server 2003)。因此,想要与后续的Windows版本兼容,只要NT 4.0的目标完成,剩下都简单了。以此为由,该批评的回复者说把NT 4.0的兼容作为里程碑并不是一个局限,而是未来开发的基础。
  • 其它人则批评认为,市面上已经拥有多款基于Unix(Linux及不同版本的 BSD)的操作系统, 与其再创建一个新的, 不如集中精力改善旧的,努力做好Wine,让现有的Windows应用程序在其上运行得更好。但是,ReactOS开发者及其他拥护者辩解说,类UNIX操作系统不一定是唯一的最好的操作系统类型。NT的设计含有很多概念是Unix工作方式的改进,而且一个在更低层次更似Windows的操作系统(即是设计成与Windows相似,而非执行某某应用程序,尝试把另一个操作系统变成Windows)将更有机会成功达到更广阔地兼容现有的Windows应用程序和(特别是)硬件驱动程序的目的。