一下是学习wrk初期整理的关于运行环境的配置
一.安装dvd-windows
  1. 解压并用虚拟镜像打开。
  2. 运行WRK-CRK中的wrkinstall.bat(推荐的安装方式,一些参数配置较方便)。
     在C:\WRK-v1.2中会默认安装了wrk的源文件。
  3. 安装WRK-CRK\Virtual PC 2007中的virtual pc 2007(最好默认安装).
     按向导创建一个虚拟机。
  4. 安装WRK-CRK\WinDbg中的windbg(最好默认安装).
二.配置virtual pc 2007并运行win2003sp1
  1. 开始-所有程序-macrosoft virtual pc.
  2. setting-hard disk1-virtual hard disk file-browse:C:\WRK-v1.2\Win2k3SP1 Image\Win2k3 SP1 WRK Hard Disk.vhd
  3. com1-named pipe:\\.\pipe\debug
  4. ok.退出setting。
  5. 回到virtual pc console,start,在command prompt中选windows 2003 sp1 standard.在虚拟机上启动了win2003 sp1.
三. recompile wrk
  1. 通过主机与虚拟机之间的共享磁盘c盘,将主机上C:\WRK-v1.2靠到虚拟机上c盘中。
  2. 在虚拟机上,可以修改C:\WRK-v1.2\base\ntos中相应内核程序。
  3. start-all program- Accessories-command prompt.path \wrk-v1.2\tools\x86;%path%(设置编译环境文件路径) cd c:\WRK-v1.2\base\ntos切换路径,然后 nmake x86=,从编译开始,大约需要几分钟的时间。

  4. 编译完后在C:\WRK-v1.2\base\ntos\BUILD\EXE下会生成一个wrkx86.exe和一个wrkx86.pdb,将wrkx86.exe拷到虚拟机的C:\WINDOWS\system32\下。将wrkx86.pdb靠的主机的符号文件的目录下。可能会有重名文件,可以重新命名,但在修改boot.ini时,要保持一致。
  5. 将主机C:\WRK-v1.2\WS03SP1HALS下的hal文件复制到虚拟机C:\WINDOWS\system32下。
  6. 通过下述设置boot.ini可以重启win2003 sp1.运行新编译的内核。
四. 配置windbg,并调试内核。
  1. 在主机上打开command prompt,C:\Program Files\Debugging Tools for Windows\,切换路径。
  2. 执行windbg.exe k com:port=\\.\pipe\debug,pipe,resets=0,reconnect  -y C:\Symbols\wrk(-y 为设置符号文件路径,三中4提到的符号文件),会打开windbg窗口,显示正在连接。
(1,2可以用windbg图形界面来完成,打开windbg-file-symbol source path,设置符号表位置;然后file-kernel debug-com,设置com为\\.\pipe\debug,选中pipe和reconnect,resets=0;)
  3. 打开虚拟机,运行win2003 sp1,选择debugger enable的那个。然后windbg就会显示连接成功,可进行调试内核。

五. 在虚拟机上设置boot.ini.
  1. my computer右击-properties-system properties-advanced-startup and recovery-setting-startup and recovery-edit,在notepad中打开boot.ini.
  2. edit boot.int:在operating system一栏最后添加
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect/DEBUG/DEBUGPORT=COM2/BAUDRATE=115200/kernel=wrkx86.exe/hal=halmacpi.dll
  3. 保存-确定。

注:
 出现问题:运行.bat文件时出现   没有找到MSVCP71.dll 因此这个应用程序未能启动。重新安装应用程序可能会修复此问题
           只需下载MSVCP71.dll放入windows(winnt)\system32下
           修改内核代码要改文件内容,不可copy。否则编译系统不认为它是修改过的,不予编译。