ReactOS
ReactOS(リアクト オーエス)は、Microsoft Windows NT系(2000以降)とアプリケーション及びドライバに於けるバイナリ互換性を目指すオープンソースなオペレーティングシステムである。
目次
特徴
ReactOSは、主にC言語で記述されているが、「ReactOS Explorer」のように幾つかの要素はC++によって記述されている。ARMとx64に移植が進んでおり、一部のWindows APIは実装済みである。 Wineプロジェクトと提携し、互換レイヤーに関してはWineに依存[1]しているが、そのほかの機能は開発チームが独自に実装している。 しかしながら、十分なスキルを持った開発者の不足により開発は遅れている。
開発では、法的脅威とリバースエンジニアリングに関する不安に対処するために大規模なソースコード監査が実施[2]されている。
語源
「React」という単語は、Microsoftの独占状態に対する開発チームの不満を意味している。[3]
歴史
開発初期(FreeWin95からReactOSへ)
1996年頃、オープンソース開発者のグループがFreeWin95というプロジェクトを開始した。このプロジェクトの目標はWindows 95のクローンとなるOSを実装することであった。しかしプロジェクトはシステムの設計に関する議論で行き詰まり、1997年の終わりになっても、何の成果も出せずにいた。
プロジェクトのメンバーはプロジェクトの復活を呼びかけ、クローンの対象をWindows NTへと変更し、名称をReactOSに改名した。1998年2月、カーネルと基本的なドライバの開発を開始しReactOSプロジェクトが発足した。
逆アセンブルされたコードの疑惑
2006年1月17日、ReactOSの開発者向けメーリングリスト (ros-dev) に一人の開発者から「ReactOSにはWindowsを逆アセンブルしたコードが含まれている」との投稿があった[4]。その申し立ての結果、Windowsを逆アセンブルして作成したコードや、マイクロソフトから流出したWindowsのコードを見たことがある開発者が書いたコードが含まれていることが確認されたため、プロジェクトでは非公開に議論を行い、公のsvnの公開、フォーラム、メーリングリストアーカイブを一時停止することを決定した。なお、古いsubversionリポジトリの公開、フォーラム、メーリングリストアーカイブは48時間ほどで復活した。それに加え、コード全体の検査を行い、クリーンルーム方式のリバースエンジニアリングがされていない可能性のあるコードを洗い出した。また、全開発者に「クリーンルーム方式のリバースエンジニアリングのみを行う。」よう契約書にサインをさせた[5]。
2006年2月24日、まだ完全に監査は完了していないものの、活動再開の発表がなされた。コードの調査を完了させ、ソースコードの影響する部分を書き直すには何年もかかるため、この件によってプロジェクトの進行が遅れるものと考えられていたが、2008年8月末までにコードの監査は完了した[6]。なお、開発と監査は同時に進行していた。このコード監査は、新たにリポジトリを作成し、監査が終了したら、コードを元の場所から新リポジトリへと移動する、という手順で行われた。
バージョン
0.2シリーズ
- ReactOS 0.2.0
- ReactOSのバージョン 0.2.0からは多くのWin32アプリケーションが動作するようになった。例えばメモ帳(ベーシックなテキストエディタ)や Regedit(レジストリエディタ)、cmd.exe(コマンドラインインタプリタ)、そしていくつかのアプリケーション(AbiWordなど)やベーシックなゲーム(QuakeやQuake II、そしてマインスイーパのWineクローンなど)が動作する。
- ReactOS 0.2.6
- 0.2.6以降からはDillo, mIRC、そしてMozilla FirefoxのDCOMコンポーネントが動作するようになった。またソフトウェアレンダリングを用いれば、Unreal TournamentやDeus Exのようなゲームもいくつか動作することが確認された。多少問題はあるものの、nVidiaドライバかソフトウェア実装のMesa 3Dを用いてOpenGLも動作するようになった。更にウェブサーバ (Tiny Web server) や UltraVNC Client が初めて動作したことも報告された。OpenOffice.org (Version 1.x) も部分的ながら動作する。
- ReactOS 0.2.8
- バージョン0.2.8では、TCP/IPネットワークの一部分が動作するようになった。サウンドとUSBの対応作業も行われている(Sound Blaster 16は部分的に動作、USBではOHCI・UHCIの対応作業に取りかかっている)。USBの機能は、Cromwellより借用した。プラグアンドプレイに対応する作業も始まった。同様に、WDMの対応に向けても動き始めている。テキストブラウザのLynxに加え、MozillaのDCOMコンポーネントを用いてウェブページをグラフィカルに巡回することもできる。
- また、ReactOS 0.2.8ではVMware環境で起動しているかどうかを検出することができる。VMware上で起動した場合、VMWare Toolsに含まれるSVGAドライバをインストールし、GUIのパフォーマンスを上げることができる。CSRSSは完全に書き直され、Ws2_32の「スクラッチから書かれた」実装も近日完成予定である。Trunkに含まれているものには、他にも少しだけ動作しているddraw、dplay dplayxなどがある。
0.3シリーズ
- ReactOS 0.3.0
- ReactOS 0.3.0では、完全なTCP/IPネットワークサポートが行われた。
- ReactOS 0.3.4
- ReactOS 0.3.4への開発段階で大幅な変更があり一部ではあるがOpenOffice.org2などのソフトが動作するようになった。
- ReactOS 0.3.5
- ReactOS 0.3.5では、地域設定の追加、キーボードレイアウトの追加や国際化の向上等が行われている。
- ReactOS 0.3.6
- ReactOS 0.3.6では、x64のサポート、Win32アプリケーションのサポートの追加、ドライバーの非読込のサポート等が行われている。
- ReactOS 0.3.9
- ReactOS 0.3.9では、ネットワークスタックの改善とカーネルでのサウンドサポート等が行われている。
- ReactOS 0.3.10
- ReactOS 0.3.10では、初期段階ではあるもののシリアルATAと8GB以上のパーティションのサポート、USBキーボードとUSBマウスのサポート等が行われている。
- ReactOS 0.3.11
- ReactOS 0.3.11では、メモリマネージャの大幅な改善、スパイダソリティアの追加、日本語に加えて中国語・韓国語の表示サポートなどが行われている。
- ReactOS 0.3.12
- ReactOS 0.3.12では、新しいメモリマネージャへの置き換え、NMIのサポート、トラップハンドラの再実装、EMS(Emergency Management System)のサポート、PnPの互換性向上、ACPIの改善、新しいPCI-Xドライバの実装、SxSのサポート、タイマーとメッセージハンドリングの再実装、x64でのビルド、最も深刻だと思われていたバグの修正などが行われている。
- ReactOS 0.3.13
- ReactOS 0.3.13では、新しいメモリヒープマネージャが追加され、Flash Player、VLC、Foobar、Skypeなどのソフトが動作するようになった。
- ReactOS 0.3.14
- ReactOS 0.3.14では、新しいTCP/IPドライバにより無線LANが動作するようになった。
- ReactOS 0.3.16
- ReactOS 0.3.16では、CSRSSの完全な書き直しが行われた。RTL8139ネットワークドライバー、QEMUの仮想NICのサポートが追加された。
機能
2011年現在、ReactOSはGUIが用意され、基本的な操作が可能になっている。主なAPIやABIが用意され、幾つかのアプリケーションの動作が報告[7]されている。また、カーネルは概ね安定している。
アプリケーション
ReactOSにはWindowsに標準で付属するものによく似たさまざまなアプリケーションやゲームが含まれている。ReactOSに付属するアプリケーションには次のようなものがある。
- ソリティア
- ペイント
- メモ帳
- ワードパッド
ユーザインタフェース
ReactOSのユーザインタフェースはWindowsのクラシックスタイルに似ており、コントロールパネルやデバイスマネージャなども実装されている。
- ReactOS Explorer
- ReactOSの基本機能としてReactOS Explorerが用意されている。これはReactOSのシェルでありWindows Explorerに類似している。
- コマンドプロンプト
- ReactOSにもコマンドプロンプトが存在し、バッチファイルも実行可能である。
開発の現状と今後
現在、ReactOSの開発者はUSBをサポートする作業も行っている。ReactOSの開発者によりGUIシステムの改良やネットワーク、マルチメディア、プラグアンドプレイハードウェアに対応する作業が行われている。加えて、GUIシステムを改良する作業も行われている。いくつかのアプリケーションは保証されないものの、Javaや、Monoを利用した.NETはサポートされている[8][9]。マルチユーザー環境が開発されれば、ターミナル・サービスやリモート・デスクトップの開発も行われることとなる。この開発にはXRDP、 VNC、 rdesktopが用いられることとなるだろう。Windows NTサブシステムと同様に、DOS、OS/2、POSIXサブシステムも提供されている[10]。
開発者はWindows NT バージョン5、6とより互換性を持つカーネルを開発し、より多くのアプリケーションをサポートすることを目標としている。また、改良されたUSB、ネットワーク、その他のハードウェアのサポートも利用可能となる可能性がある。その上に、SMBによるファイルの共有サービス、NTFSファイルシステムのサポートも追加されるかもしれない。これらの変更のほとんどはすでに進行中ではあるが、より高度な機能の開発にはより多く時間を要するだろう。
また、3Dゲームのサポートの改善および、完全なOpenGLサポートのための作業も行われている。ReactOSプロジェクトのオープンソース版DirectXともいえる、ReactXの開発にも進歩の動きがみられる[11]。
ReactOS プロジェクトは、2ヶ月から6ヶ月の間隔で新しいバージョンをリリースすることを目標としており、2010年10月現在次期バージョンは0.3.13と予定されている。また、バージョン0.5.0からはベータ版となり、実用的なシステムとなる計画である。詳細はReactOSロードマップを参照。
アーキテクチャのサポート
現在、ReactOSの開発者はReactOSの多数の移植に取り組んでいる:
- x86 (working)
- Xbox (regressed, but will be revived later)
- PowerPC (initial booting)[12]
- ARM (not working, in progress)[13]
- AMD64 (not working, in progress)[14]
ReactOSはVMware、VirtualBox、QEMUのような上記のハードウェアをエミュレートもしくは仮想化するソフトウェア上でも動作することが知られている。(Microsoft Virtual PCは現在はサポートされていないが、将来復活するだろう)
Windows NT 4.0はi386アーキテクチャに加えて、MIPS、Alpha AXP、PowerPCアーキテクチャ上でも動作した。また、Windows NT系であるWindows XPやWindows Server 2003といったOSはいくつかのアーキテクチャへと移植されている(例をあげると、AMD64、IA-32、IA-64がある)。ReactOSでも、移植性を見据えた初期的な処置が取られている。例えば、リリース0.2.5においてはさまざまなIA-32アーキテクチャやXboxプラットフォームへの対応が追加された。また、2005年の段階で、ReactOSをPowerPCやXenアーキテクチャへと移植する作業も進行中である。 また現在、PocketPC用のReactOSを期待して、ARMプラットフォームへの移植作業も行われている。これは現段階でフル機能のオペレーティングシステムよりも適している。
関連するプロジェクト
ReactOSはWineプロジェクトと協力して活動しており、よってWineが行っているWin32 APIの実装から成果を得ることができる。Win32 API実装の成果は、主にWineのDLLに関連しており、それらの多くはReactOSとWineで共有することができる。双方のプロジェクトは互いの互換性の問題に取り組んでおり、そのため、現在は共有できていない少数のDLLについてもいずれReactOSで使用できるようになるだろう。
もう一つの関連するプロジェクトはSamba TNGである。Samba TNGはLSASS, SAM, NETLOGON, SPOOLSSといった多数のサービスを実装している。これらのサービスはReactOSプロジェクトの成功と(機能的に正しい)相互運用性の鍵となっている。Sambaはそのアーキテクチャデザインと戦略的な目標により、ReactOSへと取り込むことは容易ではない。これに対し、Samba TNGは多層式かつモジュール形式の手法をとっているため、各サービスはずっと容易にReactOSへと取り込むことができる。
システム要件
- x86またはx86-64互換プロセッサ[15] Pentium以降
- 64 MBのRAM (256 MB推奨)
- プライマリパーティションで最低350 MB以上の空き容量を持つIDE/SATAハードディスク又はソリッドステートドライブ等の相当品(LiveCD版では不要)
- FAT16/FAT32ブートパーティション
- VGA互換のビデオカード(VESA 2.0以降)
- CD-ROMドライブ
- USB又はPS/2接続のキーボード・マウス
- Microsoft Mouse互換のシリアル接続のマウス
国際化と地域化
ReactOSはバージョン0.2.2より、Unicodeを適切に扱うことができるように改良され国際化と地域化に対応可能となる。 これにより、文字コードとして Unicode (UTF-16) を用いたアプリケーションを動作させることが可能となった。 また、C言語やC++ソースコード中に埋め込まれたメッセージをリソースファイルへと移す作業も行われ、OSに組み込まれているアプリケーションの多くは地域化されたメッセージを表示することができるようになっている。 実際、0.2.7リリース以後に大半のリソースファイルにおいて翻訳の活動が行われた。
日本語対応
よってロケールに日本語が指定されている場合には、メッセージは日本語で表示される。ただし、それ以降しばらく日本語の翻訳が停滞していたため新機能の追加などにより、英語で表示される部分もまた増えてきている。
しかし一方で、多くの日本語のWindowsアプリケーションが用いているシフトJISを扱うアプリケーションにはまだ対応していなかったり、そもそも日本語の表示においても行の折り返しができない等の問題があったり、ロケール処理にも未実装のものが多いなど、まだまだ実用には程遠いと言わざるを得ない。 現在ReactOSプロジェクトには日本を始めとする東アジア言語(CJK)の開発者がおらず、また国際化対応よりも優先すべき実装・修正が数多くあるため、非ヨーロッパ語圏の言語への対応はしばらく停滞することが予想される。
バージョン0.3.10からは、「Systema Font」という日本語フォントが追加されたため、インストール時に日本語を選択すれば、日本語が表示できるようになった。 また、バージョン0.3.11からは、「Systema Font」から「Droid Sans Fallback」にフォントが変更され、中国語・韓国語の表示も可能になった。このフォントはAndroid向けに開発されたもので、非常に軽量であることが特徴である。
脚注
関連項目
テンプレート:Sister テンプレート:Portal box
- Freedows OS, Alliance OS - かつて存在したWindowsクローンの試み
- WinFrame - Citrix社が開発していたWindowsクローン
- Windows NT
- Lindows
- Wine
- エミュレーション
- E/OS - 実際にOSをインストールすることなく、他のOS向けのプログラムを動作させることを目標としている。
- OSASK - 「エミュレータOS」を目標としている。
外部リンク
- ReactOS ウェブサイト - 公式サイト
- ReactOS Wiki - 公式Wiki(英語)
- ReactOS SVN トランクビルドのダウンロード - ナイトリービルドがダウンロードできる
- SourceForge.net の ReactOS プロジェクトのページ
- 非公式ReactOS日本語版パッケージ配布所 - 日本語パッケージを配布している
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ [1]テンプレート:リンク切れ
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite web
- ↑ http://www.reactos.org/wiki/Installing_ReactOS