ReactOS 0.3.3-RC1をビルドする
Windows(NT系)互換目標OSであるReactOSをビルドする環境が
https://www.reactos.org/wiki/index.php/Build_Environment
にて配布されている。UNIX系OS向けのパッケージをダウンロード・展開し、RosBE-Builder.shをroot権限で実行させる(一般ユーザ権限にて、ホーム以下などの書き込み権限のある場所に入れてもOK)。
下の例では、インストール場所を/opt/RosBE/に指定している。
$ sudo ./RosBE-Builder.sh ******************************************************************************* * ReactOS Build Environment for Unix-based Operating Systems * * Builder Tool * * by Colin Finck <mail@colinfinck.de> * * * * Version 0.3.6 * ******************************************************************************* This script compiles and installs a complete Build Environment for building Reac tOS. Checking for the needed tools... Checking for bison... OK Checking for flex... OK Checking for gcc... OK Checking for g++... OK Checking for grep... OK Checking for makeinfo... OK Checking for GNU Make... OK Installation Directory In which directory do you want to install it? Enter the path to the directory here or simply press ENTER to install it into th e default directory. [/usr/RosBE] /opt/RosBE The directory "/opt/RosBE" does not exist. The installation script will create i t for you. Ready to start Ready to build and install the ReactOS Build Environment. Press ENTER to continue or any other key to exit. Building... Extracting mingw-runtime... OK Extracting w32api... OK Extracting binutils... OK Configuring binutils... OK Building binutils... OK Installing binutils... OK Cleaning up binutils... OK Extracting gcc... OK Configuring gcc... OK Building gcc... OK Installing gcc... OK Cleaning up gcc... OK Extracting make... OK Configuring make... OK Building make... OK Installing make... OK Cleaning up make... OK Extracting nasm... OK Configuring nasm... OK Building nasm... OK Installing nasm... OK Cleaning up nasm... OK Final actions Compiling buildtime... OK Compiling cpucount... OK Removing unneeded files... OK Removing debugging symbols... OK Copying scripts... OK Writing version... OK Finished successfully! To create a shortcut to the Build Environment on the Desktop, please switch back to your normal User Account (I assume you ran this script as "root"). Then execute the following command: /opt/RosBE/createshortcut.sh If you just want to start the Build Environment without using a shortcut, execut e the following command: /opt/RosBE/RosBE.sh <path/to/your/ReactOS/source/directory> [<optional color c ode>]
ビルドをするので時間はかかるが、インストールは正常に終了した。
ccacheの準備
ccacheを使用するためのシンボリックリンクを作成しておく。これは一度行えばよい。/usr/lib/ccache/bin/の部分は環境に合わせる。
$ cd /usr/lib/ccache/bin/ $ for i in gcc g++; do sudo ln -s /usr/bin/ccache mingw32-$i; done
ビルド環境に入る
ソースツリーの最上位ディレクトリを引数にしてRosBE.shを実行する。
$ /opt/RosBE/RosBE.sh /path/to/ReactOS-0.3.3-RC1/
ここで、メッセージが出力されて、bashのシェルに切り替わる。
ビルド設定ファイル
[引用]ReactOS.rbuildより
<xi:include href="config.rbuild"> <xi:fallback> <xi:include href="config.template.rbuild" /> </xi:fallback> </xi:include>
とあるので、デフォルトではconfig.template.rbuildが使われ、config.rbuildを作成しておけばそれが優先される。
--- config.template.rbuild +++ config.rbuild @@ -67,7 +67,7 @@ Whether to compile for debugging. No compiler optimizations will be performed. --> -<property name="DBG" value="1" /> +<property name="DBG" value="0" />
のようにすると、デバッグ情報を無効にできる。そうしないと、ソースツリー内のディスク使用量が膨大になってしまう(du -hの結果では3.0GiB)。しかし
[CC] ntoskrnl/vdm/vdmmain.c [CC] ntoskrnl/vdm/vdmexec.c [LD] output-i386/ntoskrnl/ntoskrnl.exe obj-i386/ntoskrnl/kd/kdinit.o: In function `KdInitSystem@8': /usr/src/ReactOS-0.3.3-RC1/ntoskrnl/kd/kdinit.c:(.data+0x24): undefined reference to `_KdpKdbgInit@8' collect2: ld returned 1 exit status mingw32-make: *** [output-i386/ntoskrnl/ntoskrnl.exe] Error 1
0.3.3-RC1のソースでは、DBGの値を0にしたところ、上のようなエラーになってしまった。
$ mv ntoskrnl/kd/kdinit.c ntoskrnl/kd/kdinit.c.orig $ sed -e "s/KdpKdbgInit//" ntoskrnl/kd/kdinit.c.orig > ntoskrnl/kd/kdinit.c
とすることで、ビルドは通せたが、インストールの途中で落ちてしまうので結局ダメだった。
ccacheを使用するようにしてビルド
ccacheのシンボリックリンクのある階層に合わせて${PATH}を設定する。
$ PATH=/usr/lib/ccache/bin:${PATH} make bootcd
動作確認
VMware Playerでの動作(インストール後の動作まで)を確認。VirtualBoxでは、残念ながら動作しなかった(0.3.1は普通に動いた)。アルファ版(かつ、そのリリース候補版)というだけあって、動作が非常に不安定。突然OSごと落ちることも頻繁に起きた。
関連記事: