(1)将wrk-v1.2文件夹下的所有文件夹base、Tools、public、ws03sp1hals 复制到虚拟机中一个目录,如 C:/wrk-v1.2
注意,复制到的目标文件夹不能有空格,否则,则进行nmake时会出现错误:
checktoolarch
……
NMAKE : fatal error U1077: '"C:/w r k/tools/x86/nmake.exe"' : return code '0x2'
Stop.
(2)设置环境变量,以使用nmake命令:
path /wrk-v1.2/tools/x86;%path% (可直接输入path查看设置结果,设置的临时的环境变量,只对当前CMD有效)
(3)进入 cd C:/wrk-v1.2/base/ntos 目录,进行编译:
nmake -nologo x86=
在编译之前,首先确定系统中包含个VC7运行库文件,否则过程中可能出现找不到msvcr71.dll 和 MSVCP71.DLL ,。将这两个VC7运行库文件复制到/WINDOWS/system32/下即可。
(4)编译过程大约需要 2 分钟,编译的结果是在/wrk-v1.2/base/ntos/BUILD/EXE目录下生成内核可执行文件和符号文件等。将上述目录中的 WRK 内核文件 wrkx86.exe 复制到/WINDOWS/system32/目录下。
(5)在 X86 平台上,WRK内核需要多处理器版本的硬件抽象层hal.dll的支持。确定hal.dll版本,输入命令:
link -dump -all /WINDOWS/system32/hal.dll | findstr pdb
会显示出对应的hal.dll版本
(注意,以上所有命令都是在包含/wrk-v1.2/tools/x86环境变量中进行的)
上述多处理器 HAL 文件在/WS03SP1HALS/x86 目录下,找到对应hal.dll版本,复制到/WINDOWS/system32/下。
(6)编辑BOOT.ini,在后面加入: /kernel=wrkx86.exe /hal=halmacpi.dll ,也就是告诉系统使用我们自己编译的内核启动
multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Windows Server 2003, Enterprise" /fastdetect /NoExecute=OptOut
multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="WRK 1.2" /fastdetect /NoExecute=OptOut /kernel=wrkx86.exe /hal=halmacpi.dll
之后就是添加串口,来和WinDbg进行通信了。
(7)在虚拟机设置中,添加一个串口(Serial Port),下一步选择“输出到命名管道”;下一步,设置“This end is the server”,设置“This other end is an application ”,完成。
(8)在虚拟机Server 2003中再次设置BOOT.ini,在后面再添加串口:
/debugport=com1 /baudrate=115200
即:
multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="WRK 1.2" /fastdetect /NoExecute=OptOut /kernel=wrkx86.exe /hal=halmacpi.dll /debugport=com1 /baudrate=115200
(9)在WinDbg快捷方式后面加入参数:
-k com:port=//./pipe/com_1,baud=115200,pipe
全部完成。