最近买了本《Windows内核原理与实现》,书中是以WRK的代码为例讲述操作系统内核的。
可书中配置WRK部分是以微软给的免费光盘的内容,配合了Virtual PC2007的虚拟系统。可在官网上并不是每个人都可以得到的,所以记录一下我的安装配置始末。希望对你有帮助少走弯路!

点这里了解什么是WRK(Windows Research Kernel)

点这里下载Windows Server 2003 SP1_iso

点这里下载WRK1.2

WRK1.2可在两种环境下运行:
X86(Windows Server 2003 SP1)
AMD64(Windows XP x64 Professional)
可以在运行上述操作系统的物理计算机上安装WRK,但是为了调试方便我们建议安装到虚拟机当中。我们这里就以VMware为例
1.首先在VMware中安装Windows Server 2003 SP1[这里省略……]
(新建虚拟机-选择Windows Server 2003 Standard Edition )
2.将WRK1.2当中的4个目录托到虚拟机的系统里面,如图

3.在虚拟机当中打开CMD,进入WRK目录。并执行命令
set path=d:\wrk\tools\x86;%path%
然后进入base\ntos目录编译WRK。如图

4.回车后编译器开始编译WRK,时间大约需要2分钟左右。编译成功后
内容在base\ntos\build\exe目录当中


5.将wrkx86.exe文件复制到windows\system32目录之下
6.处理硬件抽象层(在X86平台下WRK内核需要多处理器版本的硬件抽象层hal.dll的支持。在Windows中,HAL是一个独立的动态链接库。尽管Windows随带了多个主流机器的HAL,但是在系统安装的时候只有一个会被选中,并拷贝和改名为hal.dll……有点扯远了。我们看下HAL列表)

既然有这么多HAL我们如何判断当前正在运行哪个HAL呢
可以打开c:\windows\repair\setup.log 文件,然后搜索Hal.dll 如图

我们看到是Halaacpi.dll。大家可以根据自己的机器使用了哪一个HAL对照下面的列表进行操作

在我的虚拟机系统当中是 halaacpi.dll 那么我们就到
d:\wrk\WS03SP1HALS\x86\halmacpi 目录中将
halmacpi.dll 文件复制到 WINDOWS\system32目录下
另外还有2个多处理的HAL文件同样也在WS03SP1HALS\x86目录下,大家自己根据实际情况选择。
7.做好上述工作以后打开虚拟机系统的boot.ini文件(文件夹选项-取消【隐藏受保护的操作系统文件(推荐)】前面的勾号确定后,可在C:\下找到boot.ini文件。记得取消只读模式)
做如下修改:

引用:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows Server 2003, Enterprise" /noexecute=optout /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WRK V1.2" /kernel=wrkx86.exe hal=halmacpi.dll
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WRK V1.2" /kernel=wrkx86.exe hal=halmacpi.dll /debug /debugport=com1 /baudrate=115200
最后启动操作系统的时候可以看到


那么剩下的事情就是在虚拟机上添加一个串行接口-命名管道-以及配置WINDBG的工作了。这里我想大家都比较熟悉了。