ReactOS

开源的兼容Windows NT的操作系统

ReactOS是一個開發與Windows NTWindows 2000應用程序和硬件驅動程序兼容的開源操作系統的項目。

ReactOS
ReactOS 0.4.14桌面
開發者ReactOS 基金會
編程語言CC++[1][2]
運作狀態Alpha
源碼模式開放源代碼
首次發布1998年,​26年前​(1998
當前版本
  • 0.4.14(2021年12月16日;預覽版本)[3]
編輯維基數據鏈接
市場取向PC
更新方式CD-ROM
支援平台IA-32x86-64ARM
內核類別混合內核(為與Windows NT及以上版本兼容而設計)
默認用戶界面GUI(ReactOS Explorer)
許可證GNU GPLLGPLBSD許可證
官方網站reactos.org
倉庫 編輯維基數據鏈接
ReactOS截圖:多任務

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

ReactOS 的許可協議主要為GNU通用公共許可證,也有少量代碼以GNU寬通用公共許可証BSD許可證之類的開源許可證發行。

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

該項目從發起至今已有 26 年,但由於種種原因,目前仍然處於 alpha 狀態。

發展歷程

編輯

啟動開發

編輯

大約在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 Summer of Code。例如,在GSoC 2011 中, ReactOS 指導了一個將 lwIP 集成到網絡堆棧中的學生項目。迄今為止,ReactOS曾在 GSoC 參與過五次:2006年,2011年,2016 年,2017年 和 2018 年。2019 年也將參與。

公開演示

編輯

俄羅斯的政治人物 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 和聲音棧。該項目使用 MinGWVisual 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 網頁上列出「非常大且活躍的開發者團隊」包含在 12 個月內貢獻程式碼的 33 位開發者、及從 ReactOS 項目開始後於 Apache Subversion 上貢獻的 104 位用戶。ReactOS 開發人員 Michele C. 在米蘭舉辦的 Hackmeeting 2009 上的演講中指出,大多數開發人員在使用 ReactOS 時都了解 Windows 體系結構,並且沒有任何先驗知識

ReactOS 目前主要針對 x86 / AMD64 架構平台,移植到 ARM 架構的努力則「正在進行中」,雖然他因沒什麼有效產出而被放棄維護了[4]。對 Xboxx86 體系的變體架構)則經由使用特定架構的 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所依賴的部份繪有Wine的Logo。

ReactOS 和 Wine 項目共享本機運行二進制 Windows 軟件的目標,因此可以共享許多依賴項和開發。 ReactOS 使用 Wine 項目的一部分,以便它可以從 Wine 在實現 Win32 API方面的進展中受益。雖然由於體系結構的不同,Wine 的 NTDLL,USER32,KERNEL32,GDI32和 ADVAPI32 組件不能由 ReactOS 直接使用,但代碼片段和其他部分可以在兩個項目之間共享。不過內核由 ReactOS 單獨開發,因為 Wine 依賴於現有的類 Unix 內核。[5][6]

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

版本紀錄

編輯
系統版本 發布日期 發布信息
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.[8][9]
0.3.11 2009-12-16 重寫kdcom;中文/韓文字體; 兼容性更新;聲音系統改良
0.3.12 2010-10-20 重寫自陷處理程序;重寫定時器和消息處理,支持NMI;支持SxS;部分支持EMS[10]
0.3.13 2011-03-22 重寫堆管理器;改善了對SATA的支持,修復了圖形界面的問題[11]
0.3.14 2012-02-07 預設啟用ACPIWiFi支援(包含未加密的與WEP),主題支援,新的TCP/IP驅動程式,MSVC相容性改進,支援Scatter/GatherDMA操作,shell32重寫[12]
0.3.15 2013-05-30 對於鼠標,鍵盤和存儲設備的USB支持、工作階段管理重寫、跟隨著較新UniATA驅動程式的AHCI支援、ReactOS記憶體管理模組已經取代了幾乎所有其他的記憶體管理功能、使用WinDbg對ReactOS組件進行除錯的初步支援、基於從AutoHotkey應用程式測試套件處所得的結果進行了改進、對數個附帶的驅動程式以驅動程式驗證器執行後的結果進行了錯誤修復[13]
0.3.16 2014-02-06 重寫CSRSS,主題支持改善,RTL8139的網卡驅動程序, 讓ReactOS的支持較新版本的QEMU的開箱即用[14]
0.3.17 2014-11-05 引入了 NTVDM,改善字體,漏洞修復[15]
0.4.0 2016-02-16 對USB更好的支持,完全實現了新的資源管理器,改善了網絡以及用戶友好的wifi設置,更好的音效支持
0.4.8 2018-04-17 新增特性:氣球通知,通知托盤,命令自動補全,新的NTFS驅動程序,故障轉儲報告以及對NT6+軟件的實驗性支持[16]
0.4.9 2018-07-23 再次實現自我託管功能。
0.4.10 2018-11-06 支持從 Btrfs 啟動。
0.4.11 2019-03-04 電源管理的驅動程式。支援對已安裝的 ReactOS 的更新。改善 SATA 支援。
0.4.12 2019-09-23[17] 核心的改進、window-snapping feature、字型改進、Intel e1000 網路驅動程式、使用者模式 DLL、新主題。
0.4.13 2020-04-09[18] 新的 USB 堆疊,優化 FreeLoader 中 FAT 驅動程式,新軟件:Accessibility Utility Manager。

含義:

顏色 含義
停止支持的版本
當前版本
未來版本
跳過的版本

影響與評價

編輯

下面一些關於 ReactOS 項目的批評提出幾條為什麼他們不相信 ReactOS 會成為一個有價值的項目的原因。其中,有人指出把與 Windows NT 4.0 兼容作為 ReactOS 的發布目標是一個局限,因為 NT 4.0 評價不佳而且它已經過時了。

作為回復,有人提出雖然目前是把與 Windows NT 4.0 兼容作為目標,但是,Windows 後來基於 NT 架構的系統都與 NT 4.0 在系統層次上高度相似(例如:Windows 2000, Windows XP, Windows Server 2003)。因此,想要與後續的 Windows 版本兼容,只要 NT 4.0 的目標完成,剩下都簡單了。 以此為由,該批評的回覆者說把 NT 4.0 的兼容作為里程碑並不是一個局限,而是未來開發的基礎。

其它人則批評認為我們已經有好幾個基於 Unix(Linux 及不同版本的 BSD)的操作系統, 與其再創建一個新的, 不如集中精力改善舊的,努力做好 WINE,讓現有的 WINDOWS 應用程序在其上運行得更好。但是,ReactOS 開發者及其他擁護者辯解說,UNIX 類操作系統不一定是唯一的最好的操作系統類型。NT 的設計含有很多概念是 Unix 工作方式的改進,而且一個在更低層次更似 Windows 的操作系統(即是設計成與 Windows 相似,而非執行某某應用程序,嘗試把另一個操作系統變成 Windows)將更有機會成功達到更廣闊地兼容現有的 Windows 應用程序和(特別是)硬件驅動程序。

未來目標

編輯
 
ReactOS 桌面
  • NTFS文件系統的原生支持,尤其是在安裝和啟動ReactOS的時候
  • 對使用FAT32文件系統格式化大於32 GiB的分區的原生支持
  • 對使用NTFS文件系統格式化分區的原生支持
  • 對使用exFAT文件系統格式化分區的原生支持
  • 對分區映射方案GUID磁碟分割表的原生支持,尤其是當使用UEFI固件在PC上安裝和啟動ReactOS時
  • 固態硬盤的原生支持
  • 基於先進格式化硬盤的原生支持,尤其是4Kn
  • 觸屏的原生支持
  • USB 3.0的原生支持
  • Thunderbolt的原生支持

硬件需求

編輯
  • x86或x86-64的兼容處理器, [19]奔騰或更高版本
  • 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的工程仍在努力。

參見

編輯

參考資料

編輯
  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.4.14 released. 
  4. ^ ReactOS ports - ReactOS Wiki. www.reactos.org. [2019-08-27]. (原始內容存檔於2016-02-27). 
  5. ^ 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). 
  6. ^ C., Michele. ReactOS is (not) Windows. Hackmeeting 2009. Milan. 19–21 June 2009. (原始內容存檔於2010-03-26) 使用|archiveurl=需要含有|url= (幫助). 
  7. ^ Holwerda, Thom. ReactOS Proposes Radical New Win32 Subsystem. OSNews. 2010-01-18 [2010-01-18]. (原始內容存檔於2010-01-21). 
  8. ^ ReactOS 0.3.10. OS Revolution. [2009-12-09]. (原始內容存檔於2009-12-12). 
  9. ^ Holwerda, Thom. ReactOS 0.3.10 Released. OSNews. 2009-07-06 [2009-12-09]. (原始內容存檔於2009-07-09). 
  10. ^ Holwerda, Thom. ReactOS 0.3.12 Released. OSNews. 2010-10-20 [2010-11-08]. (原始內容存檔於2010-10-24). 
  11. ^ 0.3.13 - ReactOS, Reactos.org, [2014-02-10], (原始內容存檔於2013-10-16) 
  12. ^ 0.3.14 - ReactOS, Reactos.org, [2014-02-10], (原始內容存檔於2013-10-16) 
  13. ^ 0.3.15 - ReactOS, Reactos.org, [2014-02-10], (原始內容存檔於2014-02-09) 
  14. ^ ReactOS 0.3.16 Released, Reactos.org, [2014-02-10], (原始內容存檔於2014-02-09) 
  15. ^ ReactOS 0.3.17 Released, Reactos.org, [2014-11-05], (原始內容存檔於2014-12-17) 
  16. ^ reactos-048-released, Reactos.org, [2018-04-28], (原始內容存檔於2018-04-16) 
  17. ^ ReactOS 0.4.12 released | ReactOS Project. reactos.org. [2019-09-23]. (原始內容存檔於2019-09-23). 
  18. ^ ReactOS 0.4.13 released | ReactOS Project. reactos.org. [2020-04-10]. (原始內容存檔於2020-04-11). 
  19. ^ Installing. ReactOS. 2014-01-20 [2014-02-10]. (原始內容存檔於2014-03-29). 

外部連結

編輯