Project Website: http://opennt.net/projects/wrkrazzle/wiki
SVN Repository: svn://svn.opennt.net/WRKRazzle/trunk
Zipped Repository: http://opennt.net/attachments/download/ ... ort.r29.7z
The WRKRazzle is a repackaged version of the Windows Research Kernel v1.2 that is compatible with the NTOSBE Razzle environment.
As compared to the standard Windows Research Kernel distribution, WRKRazzle offers the following advantages:
- Multiprocessor build is supported through the magic of the Razzle Build Utility (build.exe).
- Kernel (base\ntos\ke) service table is automatically generated from service.tab.
- Runtime (base\ntos\rtl) error.h is automatically generated from generr.c.
- The build infrastructure is much cleaner than the hack-job makefile build environment provided with the WRK.
- Razzle is what Microsoft internally uses.
WRKRazzle is intended to be built with the NTOSBE. NTOSBE is the Razzle build environment developed and used by the OpenNT Project. Its main use is for building the NT 4.5, but it may also be used for building the WRKRazzle.
1. Check out the NTOSBE repository. The local NTOSBE directory may be located anywhere, but it is recommended that you place this directory under the drive root (e.g. W:\NTOSBE) for the sake of simplicity.
Code: Select all
svn co svn://svn.opennt.net/NTOSBE/trunk W:\NTOSBE
Code: Select all
svn co svn://svn.opennt.net/WRKRazzle/trunk W:\WRKRazzle
Code: Select all
@echo off REM // REM // SIZ_NTROOT: Path to the NT 4.5 source root (e.g. W:\trunk.x86chk) REM // set SIZ_NTROOT=W:\trunk.x86chk REM // REM // SIZ_NTTREE: Path to the NT 4.5 binary root (e.g. W:\bin) REM // set SIZ_NTTREE=W:\bin REM // REM // SIZ_NTARCH: Target build architecture [x86, amd64, arm, mips, alpha, ppc] REM // set SIZ_NTARCH=x86 REM // REM // SIZ_NTBLD: Target build type [fre, chk] REM // set SIZ_NTBLD=chk REM // REM // Repository-specific Parameters REM // REM // REM // _NT_TARGET_VERSION: If the target repository version is not 4.5, set the following value. REM // For building WRKRazzle, this value must be set to 0x0502 (5.2). REM // REM set _NT_TARGET_VERSION=0x0502 REM // REM // Call sizzle REM // call sizzle.cmd
5. Set SIZ_NTARCH to your desired target architecture. For WRK, x86 and amd64 target architectures are supported.
6. Set SIZ_NTBLD to fre. For WRK, only Free (fre) build is supported because the included prebuilt libraries are 'Free'.
7. Uncomment _NT_TARGET_VERSION. Make sure _NT_TARGET_VERSION is set to 0x0502.
8. Save as siz_WRKRazzle.%SIZ_NTARCH%%SIZ_NTBLD%.cmd (e.g. siz_WRKRazzle.x86fre.cmd).
NOTE: You may create as many siz_*.cmd script files as you need. For example, you may have both siz_WRKRazzle.x86fre.cmd and siz_WRKRazzle.amd64fre.cmd for building x86fre and amd64fre, respectively.
The following is an example siz_WRKRazzle.x86fre.cmd script file:
Code: Select all
@echo off REM // REM // SIZ_NTROOT: Path to the NT 4.5 source root (e.g. W:\trunk.x86chk) REM // set SIZ_NTROOT=W:\WRKRazzle REM // REM // SIZ_NTTREE: Path to the NT 4.5 binary root (e.g. W:\bin) REM // set SIZ_NTTREE=W:\WRKRazzle.bin REM // REM // SIZ_NTARCH: Target build architecture [x86, amd64, arm, mips, alpha, ppc] REM // set SIZ_NTARCH=x86 REM // REM // SIZ_NTBLD: Target build type [fre, chk] REM // set SIZ_NTBLD=fre REM // REM // Repository-specific Parameters REM // set _NT_TARGET_VERSION=0x0502 REM // REM // Call sizzle REM // call sizzle.cmd
Building the WRKRazzle
Before attempting to build the WRKRazzle, you must have carefully followed the set up procedure described in the "Setting up the Build Environment" section. If not, please go over them and make sure that you have correctly set up the build environment.
1. Open the NTOSBE by clicking the siz_*.cmd script (e.g. siz_WRKRazzle.x86fre.cmd).
2. Type 'build' to perform a normal build, 'build -c' to perform a clean build.
Depending on your processor performance, you should have the kernel executable in the binary path you specified in your siz_*.cmd script (SIZ_NTTREE) in tens of seconds.
These limitations are inherent to the Windows Research Kernel, not the WRKRazzle.
- Checked build is not supported.
- Only x86 and amd64 processor architectures are supported.
- Uniprocessor build (up) is not supported.
- PAE build is not supported (mipae.h is missing).
- genxx is not performed (genxx input files are missing; though, this should be relatively easy to reconstruct). NOTE: genxx generates ks* and hal* asm includes that list kernel struct offsets for use in asm code.
There is no plan for new feature implementations in this project. WRKRazzle will stay as the pure Windows Research Kernel with a few minor modifications to support building under the Razzle environment.
This project may be forked for other OpenNT research projects that may involve source code reconstruction and feature implementations tasks.