跳转到内容

ReactOS

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是本页的一个历史版本,由Njlyf2011留言 | 贡献2018年12月31日 (一) 12:06编辑。这可能和当前版本存在着巨大的差异。

ReactOS
ReactOS 0.4.7桌面
开发者ReactOS基金会
编程语言CC++[1][2]
運作狀態Alpha
源码模式开放源代码
首次发布1998年,​27年前​(1998
当前版本0.4.10 (2018年11月6日,​6年前​(2018-11-06
最新預覽0.4.11 RC (2018年12月20日,​6年前​(2018-12-20
市場取向PC
更新方式CD-ROM
支援平台IA-32x86-64ARM
内核类别混合内核(为与Windows NT及以上版本兼容而设计)
默认用户界面GUI(ReactOS Explorer)
许可证GNU GPLLGPLBSD许可证
官方網站reactos.org
仓库 編輯維基數據鏈接
ReactOS截圖:多任务

ReactOS是一个开发与Windows NTWindows 2000应用程序和硬件驱动程序兼容的开源操作系统的项目。此项目目前虽然只是处于内部测试(alpha)开發状态,但到2005年1月其中一些子项目已经完成了目标。

ReactOS主要是由C語言編寫。部分元件則由C++編寫,例如ReactOS文件瀏覽器。

ReactOS的各部份在GNU通用公共许可证GNU寬通用公共許可証、及/或BSD许可证下发布。

為確保操作系統沒有任何一部份是看過泄漏出來的微軟Windows源碼的人所寫,或者逆向工程的過程達不到净室设计標準,一個全盤的源碼審查由ReactOS主要開發者下令展開。此審查目前已經結束。

发展历程

启动開發

大约在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年。

公开演示

俄罗斯的政治人物 Viktor Alksnis 会见了项目协调员 Aleksey Bragin,Aleksey Bragin介绍了该项目并演示了该项目,演示中显示 ReactOS 在 2007 年已经可以运行当时的 Total Commander 和 Mozilla Firefox。 它还吸引了时任俄罗斯总统梅德韦杰夫(Dmitry Medvedev)的关注。 梅德韦杰夫访问了斯塔夫罗波尔地区的一所高中,巧合的是 ReactOS 开发者 Marat Karatov 正是该学校的高中生,他借此机会向总统介绍了开源Windows系统,并请求总统资助100万欧元。梅德韦杰夫称对 ReactOS 很感兴趣,表示会考验资助事宜。

ReactOS 社区版

2014年4月,ReactOS 项目宣布推出 iegogo活动,推出基于 0.4版本的 ReactOS Community Edition。筹资活动的目标是50,000美元,除此之外还有额外的伸展目标。ReactOS Community Edition 的开发将以社区为中心,ReactOS用户投票和资金决定项目旨在支持哪些软件和硬件驱动程序。2014年 6 月 1 日,关于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,变体IA-32体系结构,是通过使用一个特定于体系结构的加入HAL,虽然这一点,与端口沿的PowerPC,不再积极维护。

硬件驱动程序堆栈

在硬件驱动程序方面,例如UniATA项目为ReactOS 提供串行ATA驱动程序。该项目还尝试使用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.2.0 2004-01-25 第一个运行GUI的发布版本
0.2.1 2004-03-03 漏洞修复
0.2.2 2004-04-27
0.2.3 2004-06-26
0.2.4 2004-09-13
0.2.5 2005-01-02
0.2.6 2005-04-09
0.2.7 2005-08-21
0.2.8 2005-10-29 检测VMWare,重写CSRSS
0.2.9 2005-12-22 漏洞修复
0.3.0 2006-08-27 第一个支持网络的官方版本
0.3.1 2007-03-10 包含了程序管理器,开始重写内核
0.3.2 跳过 建立了这个分支但从没有发布
0.3.3 2007-09-12 内核和win32k改进
0.3.4 2008-01-22 重写支持了注册表、远程桌面以及即插即用
0.3.5 2008-06-30 漏洞修复
0.3.6 2008-08-06 支持RTL
0.3.7 2008-11-04 改善x86-64; MSVC, 新栈
0.3.8 2009-02-04 在LiveCD中引入了PSEH和多分区HDD模式支持
0.3.9 2009-04-26 24MB的最小RAM,加快了hyperspace(超级空间)映射,开始支持音效
0.3.10 2009-07-05 开始支持SATA,USB键盘/鼠标支持,画图的复制,开始支持MSVC.[3][4]
0.3.11 2009-12-16 重写kdcom;中文/韩文字体; 兼容性更新;声音系统改良
0.3.12 2010-10-20 重写自陷处理程序;重写定时器和消息处理,支持NMI;支持SxS;部分支持EMS[5]
0.3.13 2011-03-22 重写堆管理器;改善了对SATA的支持,修复了图形界面的问题[6]
0.3.14 2012-02-07 預設啟用ACPIWiFi支援(包含未加密的與WEP),主題支援,新的TCP/IP驅動程式,MSVC相容性改進,支援Scatter/GatherDMA操作,shell32重寫[7]
0.3.15 2013-05-30 对于鼠标,键盘和存储设备的USB支持、工作階段管理重寫、跟隨著較新UniATA驅動程式的AHCI支援、ReactOS記憶體管理模組已經取代了幾乎所有其他的記憶體管理功能、使用WinDbg對ReactOS組件進行除錯的初步支援、基於從AutoHotkey應用程式測試套件處所得的結果進行了改進、對數個附帶的驅動程式以驅動程式驗證器執行後的結果進行了錯誤修復[8]
0.3.16 2014-02-06 重写CSRSS,主题支持改善,RTL8139的网卡驱动程序, 让ReactOS的支持较新版本的QEMU的开箱即用[9]
0.3.17 2014-11-05 引入了 NTVDM,改善字体,漏洞修复[10]
0.4.0 2016-02-16 对USB更好的支持,完全实现了新的资源管理器,改善了网络以及用户友好的wifi设置,更好的音效支持
0.4.8 2018-04-17 新增特性:气球通知,通知托盘,命令自动补全,新的NTFS驱动程序,故障转储报告以及对NT6+软件的实验性支持[11]

含义:

颜色 含义
停止支持的版本
绿 当前版本
未来版本
跳过的版本

功能概述

到了2005年,ReactOS内核已经十分稳定,大多数给上层程序开发使用的应用程序接口均制作完成,并且拥有了一个基本的GUI窗口界面。ReactOS已经具有一个与Windows浏览器类似的ReactOS Explorer作为系统操作界面。

ReactOS 0.2版可以运行相当多数的Win32应用程序,并拥有自己的Notepad(记事本,基本的文本编辑器)、Regedit(系统注册表编辑器),Cmd(命令行提示符)和几个其他的大型应用(比如AbiWord文字编辑器)以及一些游戏(QuakeQuake IIWine扫雷克隆)。

RosExplorer (Mozilla ActiveX Control)

0.2.5版主要工作在于声卡、网卡的驱动支持。Lynx文本网页浏览器抓取网页的屏幕图展示了,不过这个功能尚待进一步改进。这个版本更加入了Ext2文件系统GRUB boot loader的支援,让ReactOS与Linux分区共存。

自0.2.6版起,DillomIRC网页浏览器Mozilla FirefoxDCOM组件 可于ReactOS内运行。部份游戏如Unreal Tournament和Deus Ex则已知能以软件渲染的方式运作。使用nVidia-Driver或者Mesa 3D的软模式,OpenGL的运行只剩下一些小问题。第一个网络服务器 Tiny Web ServerThe UltraVNC Client 宣布运行成功。从右图可见,OpenOffice(1.x版)也有部份可以执行了。

及至版本0.2.8,TCP/IP的部份元素开始运作,还有更多的应用程序例如NotepadAbiWordOpenOfficeDeus ExUnreal Tournament声音USB支持尚在制作中(SB16半工作、USB OHCIUHCI则仍须劳力)USB功能「借」自CromwellPlug and Play的开发工作、与及WDM的支持亦已展开。除了字符网页浏览器Lynx,ReactOS更可以以MozillaDCOM组件以图像方式浏览网页。

ReactOS 0.2.8能侦测自己是否在VMware系列虛擬機中运行,继而到VMware Tools ISO安装SVGA驱动以提供更佳的GUI表现。CSRSS已完全重写,一个「从头写起」的Ws2_32也预计即将完工。在Trunk裡面有些运作上还可以的ddraw、dplay和dplayx元素。

及至2006年3月8日,ReactOS的开发者开始了对所有使之与Microsoft Windows兼容的代码的自我审查。此过程是为了响应程序员对逆向工程的指责,验证确保ReactOS源代码没有违反美国版权法

2006年6月15日,ReactOS 0.3.0发表了Candidate 1。网络功能(TCP/IP)和即插即用支持的改善为这个版本的重点。审查到达94%之时,Candidate 2发表,将审查期间发现的众多bug修正。

2006年8月28日,ReactOS 0.3.0脱离Release Candidate阶段,正式发表予公众。

直至2006年9月20日,审查过程已完成95.7%。而至2006年12月12日,審查過程已完成96.4%。

於2007年9月,審查接近完成,審查狀態從網站移除。雖然審查結束,但由於此屬內部審查,具體詳情未有公佈。

相关项目

ReactOS一直與Wine緊密合作,讓ReactOS随着Wine在Win32 API项目的发展而发展。Wine的DLL因其大多可以在ReactOS和Wine之间共同使用而被受關注。為此雙方致力於兼容問題,務求令餘下的少量DLL也能為ReactOS所用。

另一個相關項目是Samba TNG。它实现了一系列的服务,例如LSASS、SAM、NETLOGON和SPOOLSS,这些是ReactOS项目通向成功与通用性(functionally correct interoperability)的关键。雖然Samba TNG的多層結構和單元式法令它很易將不同服務移植到ReactOS,但Samba的文档设计与战略目标,使得是否向ReactOS中集成该项功能的决定成为一个难题。

Wine

ReactOS架構簡化圖,當中Wine所依賴的部份繪有Wine的Logo。

ReactOS採用了Wine專案的部份,讓ReactOS随着Wine在Win32 API项目的发展而有所增進[12]。Wine的DLL因其大多可以在ReactOS和Wine之间共同,唯有以下五個部件因為架構方面的差異而不能共用,分別為:

此外,對於Wine專案無需存在的部份元件,例如:作業系統的內核,也需要由ReactOS來開發[13][14]

此外,ReactOS另外有一支實驗性的Arwinss團隊,透過另一種方式去構建Win32 API,使USER32及GDI32的支援可以做得更好。ReactOS原來的Win32子系統完全以Windows的等同為藍本,但Arwinss則透過合併原來ReactOS的Win32子系統及Wine的Win32子系統的架構,以好好利用Wine的系統兼容性。這樣,Arwinss就可以讓用戶透過一個遙距的X server作顯示,而無需硬性規定必須要用硬件上的顯示屏[15]

未来目标

ReactOS 桌面
  • NTFS文件系统的原生支持,尤其是在安装和启动ReactOS的时候
  • 对使用FAT32文件系统格式化大于32 GiB的分区的原生支持
  • 对使用NTFS文件系统格式化分区的原生支持
  • 对使用exFAT文件系统格式化分区的原生支持
  • 对分区映射方案GUID磁碟分割表的原生支持,尤其是当使用UEFI固件在PC上安装和启动ReactOS时
  • 固态硬盘的原生支持
  • 基于先进格式化硬盘的原生支持,尤其是4Kn
  • 触屏的原生支持
  • USB 3.0的原生支持
  • ThunderBolt的原生支持

硬件需求

  • x86或x86-64的兼容处理器, [16]奔腾或更高版本
  • 64 MB RAM(推荐256 MB)
  • IDE / SATA硬盘驱动器,主分区至少为350 MB
  • FAT16 / FAT32主引导分区
  • 2 MB VGA图形适配器(VESA BIOS版本2.0或更高版本)
  • CD - ROM 光驱
  • 标准键盘
  • USB鼠标,PS / 2兼容鼠标或Microsoft鼠标兼容型串行鼠标

值得留意的是,ReactOS亦可在能模擬上述硬件的軟件內運作,比如Virtual PCVMwareBochsQEMU

眼見Windows NT 4.0可在i386以外的MIPSAlpha AXPPowerPC架構運行,而NT衍生的作業系統如Windows XPWindows Server 2003又已被移植到不同的硬體架構上(例如x86-64IA-32IA-64),ReactOS開發者亦開始注意可移植性。譬如對IA-32架構變種Xbox平台的支援,已加入0.2.5發佈版,而直到2006年上半年,PowerPC port和Xen port的工程仍在努力。

如何编译

编译输出为:

  • LiveCD(输出名为:LiveCD.iso)。
  • BootCD (输出名为:BootCD.iso)。

编译步骤:

  1. 获取源代码
  2. 从ReactOS项目中,下载RosBE(GCC/MinGW)编译器
  3. 解压(安装)编译器
  4. 解压源代码
  5. 以管理员权限,在命令窗口进入编译器解压目录下,输入“RosBE”回车,这将加载编译器
  6. 在命令窗口输入“options”回车,设置输出目录
  7. 在命令窗口输入“configure”回车,准备编译
  8. 在命令窗口进入解压的源代码的目录,输入命令“ninja”开始编译,这可能需要相当一段时间。
  9. 输入命令“ninja bootcd”和“ninja livecd”,以输出iso文件打包。所输出的iso文件在源代码的输出目录下

参见

參考資料

  1. ^ ReactOS on Open Hub. https://www.openhub.net/p/reactos/analyses/latest/languages_summary. Black Duck Open Hub. [October 24, 2014]. (原始内容存档于2016-03-04).  外部链接存在于|website= (帮助)
  2. ^ ReactOS on Github. https://github.com/mirror/reactos. GitHub. [October 24, 2014]. (原始内容存档于2017-09-04).  外部链接存在于|website= (帮助)
  3. ^ ReactOS 0.3.10. OS Revolution. [2009-12-09]. (原始内容存档于2009-12-12). 
  4. ^ Holwerda, Thom. ReactOS 0.3.10 Released. OSNews. 2009-07-06 [2009-12-09]. (原始内容存档于2009-07-09). 
  5. ^ Holwerda, Thom. ReactOS 0.3.12 Released. OSNews. 2010-10-20 [2010-11-08]. 
  6. ^ 0.3.13 - ReactOS, Reactos.org, [2014-02-10], (原始内容存档于2013-10-16) 
  7. ^ 0.3.14 - ReactOS, Reactos.org, [2014-02-10], (原始内容存档于2013-10-16) 
  8. ^ 0.3.15 - ReactOS, Reactos.org, [2014-02-10], (原始内容存档于2014-02-09) 
  9. ^ ReactOS 0.3.16 Released, Reactos.org, [2014-02-10], (原始内容存档于2014-02-09) 
  10. ^ ReactOS 0.3.17 Released, Reactos.org, [2014-11-05], (原始内容存档于2014-12-17) 
  11. ^ reactos-048-released, Reactos.org, [2018-04-28], (原始内容存档于2018-04-16) 
  12. ^ Acknowledgements. Wine. [2009-11-15]. (原始内容存档于2009-08-20) (英语). 
  13. ^ Ionescu, Alex. The ReactOS Project – An Open Source OS Platform for Learning (PDF) (演讲). University of Waterloo, Canada. 2006-02-26 [2009-12-10]. (原始内容存档 (PDF)于2015-03-18). 
  14. ^ C., Michele. ReactOS is (not) Windows. Hackmeeting 2009. Milan. 19–21 June 2009. 
  15. ^ Holwerda, Thom. ReactOS Proposes Radical New Win32 Subsystem. OSNews. 2010-01-18 [2010-01-18]. (原始内容存档于2010-01-21). 
  16. ^ Installing. ReactOS. 2014-01-20 [2014-02-10]. (原始内容存档于2014-03-29). 

外部链接