环境及工具:VMware+Windows2003sp1+WRK1.2+Windbg
一、安装VMware
安装VMware的过程相当简单,按照安装步骤一步一步进行就可以。
二、在VMware上安装Windows2003sp1
在VMware 下新建一个虚拟机,选择客户操作系统类型为Windows Server 2003 Standard Edition(或者Windows Server 2003 Enterprise Edition)。
在新建的虚拟机环境下安装Windows Server 2003 Service Pack 1,安装过程与在物理计算机上安装操作系统完全相同。
安装过程一切顺利。只是在安装完成后重启虚拟机,出现如下界面:
按要求按上Ctrl+Alt+Delete键,没有成功,相反弹出一个对话框后虚拟机就重启了。
解决方法:实际上在虚拟机中要使用Ctrl+Alt+Insert键,或者在VMware菜单某项中选择“发送Ctrl+Alt+Insert”也可以。
三、设置共享文件夹
把WRK源代码拷贝到虚拟机的方法很多,可以在上网的虚拟机上到指定网站上下载WRK源代码,也可以将WRK 光盘映像文件作为虚拟机的光盘,具体方法详见《WRK 实验环境设置》。
由于最新版的VMware有共享文件夹的功能,在本机和虚拟机之间很好地实现文件之间的共享,可以利用共享文件夹将本机的WRK源代码拷贝到虚拟机上。
在 VMware6要求按照共享文件夹设置要求可以将本机的某个文件夹作为共享文件夹,可是在虚拟机上没有找到共享的文件夹,其实只是做了这一设置还不能实现共享文件夹,在VMware上还要安装VMtools,这样才能实现文件夹共享。
VMtools的安装过程:将VMware安装目录下windows.iso光盘映像文件作为虚拟机的光盘,就可以安装VMtools,安装完成后就可以在虚拟机上网上邻居看到下图:
这样就可以在本机和虚拟机之间实现正常的文件夹共享。
四、在虚拟机上编译WRK
具体过程如下所示,所有过程均在虚拟机上完成,图示详见《WRK 实验环境设置》。
1、将“WRK-v1.2”目录下的内容复制到虚拟机的硬盘中。
2、打开控制台窗口,执行下述命令:
path \wrk-v1.2\tools\x86;%path% cd \wrk-v1.2\base\ntos |
其中第一条命令是设置编译环境的文件路径,可以用不带参数的path 命令验证路径设置的结果。
3、执行下面的命令将对WRK 源代码进行编译:
nmake -nologo x86= |
编译过程大约需要2 分钟,编译的结果是在\wrk-v1.2\base\ntos\BUILD\EXE目录下生成内核可执行文件和符号文件等。
编译过程中,系统提示没有找到MSVCP71.dll,不用担心,只要在本机找到一个MSVCP71.dll,拷贝到虚拟机的\WINDOWS\system32\目录下就可以正常编译。
4、将上述目录中的WRK 内核文件wrkx86.exe 复制到\WINDOWS\system32\目录下,并将将WRK 内核所需要的\WS03SP1HALS\x86目录下相应HAL 文件( 例如halmacpi.dll ) 复制到\WINDOWS\system32\目录下。
5、设置WRK 的引导选项,对虚拟机的boot.ini 文件进行编辑。
在boot.ini 文件中增加一个具有如下参数的引导选项:
/kernel=wrkx86.exe /hal=halmacpi.dll |
至此WRK 已经安装和设置完毕,我们可以用WRK 内核来引导操作系统。在虚拟机中重新启动操作系统,可以看到新增加了一个引导选项,选择该选项则可以用我们刚刚编译好的WRK 内核启动系统,如下图所示。
五、在虚拟机上调试WRK
1、关闭虚拟机,给虚拟机增添一个串口:单击VMware 的“VM”菜单,选择“Settings…”命令,在出现的对话框中选择“Add…”按钮,在接下来出现的Add Hardware Wizard 向导中依次选择增加Serial Port,串口类型为选择“Output to named pipe”,命名管道的设置可以采用VMware 提供的缺省值。
2、为了调试目标操作系统,必须设置WinDbg 的启动参数,为此可用创建一个新的WinDbg 快捷方式,其参数设置如下:
"D:\Program Files\Debugging Tools for Windows\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_1,baud=115200,reconnect -y D:\Symbols\WindowsWRK;srv*D:\Symbols\WindowsWRK*http://msdl.microsoft.com/download/symbols -srcpath "E:\SourceFile\WRK1.2\base"
说明:象文件的路径需要与本机的一致。
3、为了对目标机进行调试,必须在目标机操作系统中增加新的启动选项。启动
虚拟机,编辑boot.ini 文件,增加一个具有如下参数的引导选项:
/kernel=wrkx86.exe /hal=halmacpi.dll /debug /debugport=com1 /baudrate=115200
4、修改本机和虚拟机的COM1端口速率,将其原来的缺省速率9600调整到115200,这一步很重要,否则windbg就不能与虚拟机进行通信
5、现在开始就可以用windbg对虚拟机的WRK内核进行调试了,如下图所示。
说明:本文主要是记录整个过程,重点叙述了其中遇到的问题及解决方法,希望各位能够说说自己在调试WRK过程中遇到的问题,以及下一步如何去利用WRK。
参考资料:
1、《VMware Workstations6基本使用》
2、《WRK 实验环境设置》