ReactOS

![]() |
![]() | |
![]() ReactOS 0.4.7桌面 | |
开发者 | ReactOS基金会 |
---|---|
编程语言 | C、C++[1][2] |
運作狀態 | Alpha |
源码模式 | 开放源代码 |
首次发布 | 1998年 |
当前版本 | 0.4.10 (2018年11月6日 | )
最新預覽 | 0.4.10 RC (2018年8月30日 | )
市場取向 | PC |
更新方式 | CD-ROM |
支援平台 | IA-32、x86-64、ARM |
内核类别 | 混合内核(为与Windows NT及以上版本兼容而设计) |
默认用户界面 | GUI(ReactOS Explorer) |
许可证 | GNU GPL、LGPL和BSD许可证 |
官方網站 | reactos |
仓库 |

ReactOS是一个开发与Windows NT和Windows 2000应用程序和硬件驱动程序兼容的开源操作系统的项目。此项目目前虽然只是处于内部测试(alpha)开發状态,但到2005年1月其中一些子项目已经完成了目标。
ReactOS主要是由C語言編寫。部分元件則由C++編寫,例如ReactOS文件瀏覽器。
ReactOS的各部份在GNU通用公共许可证、GNU寬通用公共許可証、及/或BSD许可证下发布。
為確保操作系統沒有任何一部份是看過泄漏出來的微軟Windows源碼的人所寫,或者逆向工程的過程達不到净室设计標準,一個全盤的源碼審查由ReactOS主要開發者下令展開。此審查目前已經結束。
历史
開發
大约在1996年時,一群开源软件开发者启动了一个名为FreeWin95的项目,旨在实现一个Windows 95的克隆操作系统。这个项目当时只停留在关于系统实现的讨论上。
到了1997年末,项目依旧没有进展。开发成员呼吁重新开始这个项目,而实现的目标也改为Windows NT系统,同时项目名称命名为ReactOS(“React”意为“反抗”)。1998年二月ReactOS项目正式启动,开始开发系统内核和基本的驱动程序。
版本紀錄
系统版本 | 发布日期 | 发布信息 |
---|---|---|
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 | 預設啟用ACPI,WiFi支援(包含未加密的與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] |
含义:
颜色 | 含义 |
---|---|
红 | 停止支持的版本 |
绿 | 当前版本 |
蓝 | 未来版本 |
灰 | 跳过的版本 |
ReactOS源碼的爭議
2006年1月17日,Hartmut Birr在ReactOS開發者郵件論壇ros-dev指出ReactOS包含由反编譯Windows的源碼[12]。因此開發者暫時禁止非開發者進入系統。鑑於ReactOS是開放源碼軟體,此舉引起開放源碼社群的不滿。ReactOS的貢獻者沒受當時的舉動影響。
不久後所有軟體開發工程都能自由進入了。由於Birr的指责未能證實,開發者決定審查源碼。
可能「受污染」的源碼會被封鎖,直到那些源碼經審查後確定無問題[13]。現時大部分的源碼已解封,維護和開發都可繼續進行,而審查亦同時進行。
功能概述
到了2005年,ReactOS内核已经十分稳定,大多数给上层程序开发使用的应用程序接口均制作完成,并且拥有了一个基本的GUI窗口界面。ReactOS已经具有一个与Windows浏览器类似的ReactOS Explorer作为系统操作界面。
ReactOS 0.2版可以运行相当多数的Win32应用程序,并拥有自己的Notepad(记事本,基本的文本编辑器)、Regedit(系统注册表编辑器),Cmd(命令行提示符)和几个其他的大型应用(比如AbiWord文字编辑器)以及一些游戏(Quake和Quake II,Wine的扫雷克隆)。

0.2.5版主要工作在于声卡、网卡的驱动支持。Lynx文本网页浏览器抓取网页的屏幕图展示了,不过这个功能尚待进一步改进。这个版本更加入了Ext2文件系统和GRUB boot loader的支援,让ReactOS与Linux分区共存。
自0.2.6版起,Dillo、mIRC和网页浏览器Mozilla Firefox的DCOM组件 可于ReactOS内运行。部份游戏如Unreal Tournament和Deus Ex则已知能以软件渲染的方式运作。使用nVidia-Driver或者Mesa 3D的软模式,OpenGL的运行只剩下一些小问题。第一个网络服务器 Tiny Web Server 和 The UltraVNC Client 宣布运行成功。从右图可见,OpenOffice(1.x版)也有部份可以执行了。
及至版本0.2.8,TCP/IP的部份元素开始运作,还有更多的应用程序例如Notepad、AbiWord、OpenOffice、Deus Ex和Unreal Tournament。声音及USB支持尚在制作中(SB16半工作、USB OHCI和UHCI则仍须劳力)USB功能「借」自Cromwell。Plug and Play的开发工作、与及WDM的支持亦已展开。除了字符网页浏览器Lynx,ReactOS更可以以Mozilla的DCOM组件以图像方式浏览网页。
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專案的部份,讓ReactOS随着Wine在Win32 API项目的发展而有所增進[14]。Wine的DLL因其大多可以在ReactOS和Wine之间共同,唯有以下五個部件因為架構方面的差異而不能共用,分別為:
此外,對於Wine專案無需存在的部份元件,例如:作業系統的內核,也需要由ReactOS來開發[15][16]。
此外,ReactOS另外有一支實驗性的Arwinss團隊,透過另一種方式去構建Win32 API,使USER32及GDI32的支援可以做得更好。ReactOS原來的Win32子系統完全以Windows的等同為藍本,但Arwinss則透過合併原來ReactOS的Win32子系統及Wine的Win32子系統的架構,以好好利用Wine的系統兼容性。這樣,Arwinss就可以讓用戶透過一個遙距的X server作顯示,而無需硬性規定必須要用硬件上的顯示屏[17]。
未来目标

- 对NTFS文件系统的原生支持,尤其是在安装和启动ReactOS的时候
- 对使用FAT32文件系统格式化大于32 GiB的分区的原生支持
- 对使用NTFS文件系统格式化分区的原生支持
- 对使用exFAT文件系统格式化分区的原生支持
- 对分区映射方案GUID磁碟分割表的原生支持,尤其是当使用UEFI固件在PC上安装和启动ReactOS时
- 对固态硬盘的原生支持
- 基于先进格式化对硬盘的原生支持,尤其是4Kn
- 对触屏的原生支持
- 对USB 3.0的原生支持
- 对ThunderBolt的原生支持
現有分支
現時ReactOS的開發者的工作項目有:
這些改变都不包括在主要的ReactOS Trunk內。
硬件需求
- x86或x86-64的兼容处理器, [18]奔腾或更高版本
- 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 PC、VMware、Bochs或QEMU。
眼見Windows NT 4.0可在i386以外的MIPS、Alpha AXP和PowerPC架構運行,而NT衍生的作業系統如Windows XP和Windows Server 2003又已被移植到不同的硬體架構上(例如x86-64、IA-32及IA-64),ReactOS開發者亦開始注意可移植性。譬如對IA-32架構變種Xbox平台的支援,已加入0.2.5發佈版,而直到2006年上半年,PowerPC port和Xen port的工程仍在努力。
编译
编译输出为:
- LiveCD(输出名为:LiveCD.iso)。
- BootCD (输出名为:BootCD.iso)。
编译步骤:
- 获取源代码
- 从ReactOS项目中,下载RosBE(GCC/MinGW)编译器
- 解压(安装)编译器
- 解压源代码
- 以管理员权限,在命令窗口进入编译器解压目录下,输入“RosBE”回车,这将加载编译器
- 在命令窗口输入“options”回车,设置输出目录
- 在命令窗口输入“configure”回车,准备编译
- 在命令窗口进入解压的源代码的目录,输入命令“ninja”开始编译,这可能需要相当一段时间。
- 输入命令“ninja bootcd”和“ninja livecd”,以输出iso文件打包。所输出的iso文件在源代码的输出目录下
参见
參考資料
- ^ 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=
(帮助) - ^ ReactOS on Github. https://github.com/mirror/reactos. GitHub. [October 24, 2014]. (原始内容存档于2017-09-04). 外部链接存在于
|website=
(帮助) - ^ ReactOS 0.3.10. OS Revolution. [2009-12-09]. (原始内容存档于2009-12-12).
- ^ Holwerda, Thom. ReactOS 0.3.10 Released. OSNews. 2009-07-06 [2009-12-09]. (原始内容存档于2009-07-09).
- ^ Holwerda, Thom. ReactOS 0.3.12 Released. OSNews. 2010-10-20 [2010-11-08].
- ^ 0.3.13 - ReactOS, Reactos.org, [2014-02-10], (原始内容存档于2013-10-16)
- ^ 0.3.14 - ReactOS, Reactos.org, [2014-02-10], (原始内容存档于2013-10-16)
- ^ 0.3.15 - ReactOS, Reactos.org, [2014-02-10], (原始内容存档于2014-02-09)
- ^ ReactOS 0.3.16 Released, Reactos.org, [2014-02-10], (原始内容存档于2014-02-09)
- ^ ReactOS 0.3.17 Released, Reactos.org, [2014-11-05], (原始内容存档于2014-12-17)
- ^ reactos-048-released, Reactos.org, [2018-04-28], (原始内容存档于2018-04-16)
- ^ Hartmut Birr in mailing list ros-dev. [2006-03-02]. (原始内容存档于2012-06-04).
- ^ ReactOS audit status 互联网档案馆的存檔,存档日期2012-01-18.
- ^ Acknowledgements. Wine. [2009-11-15]. (原始内容存档于2009-08-20) (英语).
- ^ 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).
- ^ C., Michele. ReactOS is (not) Windows. Hackmeeting 2009. Milan. 19–21 June 2009.
- ^ Holwerda, Thom. ReactOS Proposes Radical New Win32 Subsystem. OSNews. 2010-01-18 [2010-01-18]. (原始内容存档于2010-01-21).
- ^ Installing. ReactOS. 2014-01-20 [2014-02-10]. (原始内容存档于2014-03-29).