ReactOS 是一個適用於 x86/x64 平台的免費、開源的操作系統暨項目,旨在提供 Windows 平台下的程序與驅動的二進位兼容性。藉由逆向工程等手段,其以凈室設計的方法進行開發。
該項目於 7 月 23 日發布了 ReactOS 0.4.9 版本。目前,ReactOS 遵循每三個月發布一個版本的節奏。雖然這種更快的更新周期可能意味著重大變化的減少,但目前項目的努力主要集中於功能質量及細節提升。本版本的部分具體變化如下:
自舉(Self-hosting)
在 ReactOS 中構建 ReactOS 的能力,通常被稱作自舉(Self-hosting),常常被看作操作系統成熟過程中的一個里程碑。雖然 ReactOS 此前就有了自舉的能力,但其細節可能與預期的有些差別。
編譯任何大型代碼庫,無論是操作系統還是Web瀏覽器,都以各種方式對系統造成較大壓力,其中最大的一個是內存使用和存儲 I/O。正在編譯的代碼需要從存儲器載入到內存中,並且需要更多內存來保存所有編譯對象,因為它們被鏈接在一起。調度也在一定程度上受到重視,因為大多數現代構建系統將嘗試生成多個編譯過程以加速構建過程。
在過去,ReactOS 實際上能夠自舉,但是這個功能存在明顯的問題。最大的問題是構建 ReactOS 是以更老版本的 ReactOS 內核中實現的。由於內核重新編寫為更符合 NT的設計和實現,功能上的各種差距仍有待完成,這使得 ReactOS 無法再次構建自己。 經過多年努力,包括最近一批由 Pierre Schweitzer 完成的文件系統相關更改,ReactOS 再次能夠自我託管。 在開源的精神下,FreeBSD 項目的 qsort 實現幫助 Pierre 達成了實現這一目標所需的最後一些部分。
穩定性
系統不穩定性的主要來源是內存管理器,公共緩存,硬體抽象層(HAL)和 FastFAT 驅動程序之間複雜的相互作用。不穩定性的最大罪魁禍首來自 FastFAT 驅動程序導致的重大資源泄漏,導致它佔用公共緩存,以至於嘗試複製大文件會導致崩潰。為了解決這個問題,Thomas Faber 和 Pierre 共同努力糾正了 FastFAT 驅動程序的行為,添加了寫限制支持並限制了它對緩存的使用。雖然更加保守的緩存使用可能會導致系統在 IO 操作期間表現得更慢,但它確保資源仍可用於大型 IO 操作的服務,而不是像以前那樣崩潰。
FastFAT 的另一個值得注意的改進是重寫對臟卷(dirty volumes)的支持,大大減少了文件損壞的可能性。每當在啟動過程中檢測到臟卷時,「chkdsk」(檢查磁碟)將觸發對這些卷的修復。這通常可以保護系統在崩潰後不會變得無法使用。
Shell 改進和功能
shell的一些質量改進已經到來,其中第一個是 Mark Jansen 的內置zipfldr(Zip文件夾)擴展。雖然 Windows 長期擁有此功能,但現在 ReactOS 還可以解壓縮壓縮文件,而無需安裝第三方工具來完成它。正如下面的 gif 所示,ReactOS 的實現確實非常活躍。
當然,有了這樣的新擴展,能夠管理它們可能是有用的,這是 Katayama Hirofumi MZ一直在研究的東西,以及對 Shell 的大量其他改進。
另一個可能看似簡單但實際上相當複雜的主要功能是,當使用滑鼠右鍵拖動文件或文件夾時,可以選擇是移動、複製還是鏈接文件或文件夾。這篇文章由 Giannis Adamopoulos 完成,他之前的工作非常有用,使得當前的 ReactOS shell 能夠以用戶長期習慣於 Windows 的方式運行和運行。
其他改進
當然,在 ReactOS 較少的部分中存在許多其他變化,許多人提供了貢獻和改進。這些功能包括像 Stanislav Motylkov 在 Paint 應用程序中不再崩潰的功能,以及更多的幕後操作,如 Timo Kreuzer 在構建 x64 目標時不斷努力準備代碼庫以實際運行(該項目欠 Timo 許多瓶子啤酒)。
其他質量改進包括 Eric Kohl 在 ReactOS 安裝程序的 GUI 組件中的新滑鼠屬性對話框,而 Eric 的工作涉及啟動和停止服務,設備管理器和混音器更適合長期改進和功能。HermèsBélusca-Maïto 繼續他的工作,可能被稱為 ReactOS 的實用應用程序,例如剪貼板查看器、事件查看器、註銷對話框和命令提示符 shell。當然,人們永遠不會忘記 RAPPS,這是用於在ReactOS上安裝各種應用程序的網關程序。考慮到 ReactOS旨在支持許多不同的語言,只有將其 unicode 支持作為優先事項才是恰當的,這是Alexander Shaposhnikov 正在努力的方向。
Windows 中的兼容性依賴於 ShimEngine,該 ShimEngine 允許載入略有不同版本的庫和 API。ReactOS 大致相同,並且 Mark 已經添加了 ReactOS 使用 Version API 將其自身呈現為 Windows 8.1 的能力。作為旁註,這一引擎自身被證明有助於減少遊戲Globulation 2的載入時間。
當然,ReactOS 不僅僅是關於此處和現在的功能,還有關於未來的準備工作。Thomas 和 Vadim Galyant 已經開始合併他們對 USB 堆棧的改進,以準備原生、官方支持從這些設備啟動。該功能尚未完成,但我每次發布都越來越近。
同步第三方代碼
ReactOS 是一個開源項目及其生態系統,它使用了幾個其他的開源項目。在 0.4.9 版本中,Amine Khaldi 已將許多用戶模式 DLL 同步到 WINE Staging 版本 3.3。
更多信息載於其發布通告。
ReactOS 基於在 Windows NT 架構中出現的最佳設計原則,但完全從「零」開始。ReactOS 不僅對為 Windows 設計的程序及驅動二進位兼容,而且外觀與感覺也與 Windows 相近。其最終目標是成為 Windows 的直接(drop-in)替代。
自項目起始,ReactOS 已有了約 20 年的歷史,但是 ReactOS 仍處於 Alpha 階段,因此穩定性及功能的完整程度都存在比較明顯的問題,目前並不適合實際使用。雖然如此,自 0.4.7 版本起,ReactOS 開始在 GitHub 進行開發,目前項目倉庫已有 260+ Forks 並獲得了 3500+ Stars,看起來發展迅速。
ReactOS 的 ISO 非常小,僅有 100 MB 左右,且安裝過程也十分快速。其還另外提供支持 live 模式的 ISO。有興趣的讀者或可嘗試。
項目首頁:
https://www.reactos.org/。
封面圖片由編者自 ReactOS 0.4.8 截圖;文內的部分內容衍生自 ReactOS.org 與英文維基百科的 ReactOS 詞條;本文還參考了 DistroWatch.org 的對應頁面;版本變化部分均譯自其發布通告,此部分不為文後所言條款授權。