存档

文章标签 ‘VMware’
950 views

用 WinDbg 连接 VMware 的客户系统

2010年2月24日

倒腾了两天,综合了网上的各个资料,终于能顺利地用 WinDbg 连上 VMware 上的客户系统了。

首先设置好微软符号服务器的以及下载到本地的路径, 像如下所示:

SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols

自然是为虚拟机上的系统设置好串口设备,如下图。

设置客户系统的启动配置文件 boot.ini ,在 [operating systems] 段中加入一行以调试模式启动的配置:
multi(0)disk(0)rdisk(0)partition(1)WINDOWS=”Microsoft Windows XP Professional Debug” /fastdetect /debugport=com1 /baudrate=115200

设置 WinDbg 快捷方式的命令行为:
“C:\Program Files\Debugging Tools for Windows\windbg.exe” -b -k com:pipe,port=\\.\pipe\com_1,resets=0

重新启动虚拟机上的系统,并选择新加入的启动配置进行启动,如下图。

启动 WinDbg ,稍等一下就可以连上了。
整个的探索过程比较郁闷。有些说法指出,在第 4 步的时候应先启动 WinDbg 然后再启动客户系统。但据我尝试,这样往往导致很长时间连不上,而先启动客户系统后立即启动 WinDbg 的连接效果却非常理想,所以在此沿用我的做法。
另外多说一句,应该先关闭客户系统之后再关闭 WinDbg ,否则关闭 WinDbg 后会导致客户系统无响应,并且在重启客户系统后会造成其硬盘的自检与修复。

在 Vista 客户机上的设置
激活 administrator 账户, 方法是, 右击 “计算机” -> “管理” -> “确定”(如图1)

“计算机管理(本地)” -> “本地用户和组” -> “用户” -> “Administrator” -> 右击, 选择 “属性” (如图2)

在 “常规” 选项卡内, 将 “账户已禁用” 上的勾选去掉, 如上图, 点击 “确定” 后退出.
从当前账户上注销, 在登录窗口上登录到 administrator 账户,
在 cmd 命令行上输入以下命令:

  1. bcdedit /copy {current} /d “Win Vista Debug”
    这时会复制出一个新的配置, 记下这个很长的 GUID字符串, 形如 {526D15B4-23B9-4906-B832-08641F7086C4}, 用这个 GUID 进行下一步
  2. bcdedit /debug {GUID} ON
  3. bcdedit /bootdebug {GUID} ON
  4. bcdedit /dbgsettings
    这个命令可以查看当前的调试配置
  5. bcdedit /timeout 7
    这个命令设置选择菜单的超时时间, 这里设为 7 秒

重新启动虚拟机, 选择 “Win Vista Debug” 配置即可进入调试模式.

重要更新
上述方法在 64 位的 win 7 主机系统和 64 位的 win 7 客户系统无效, 必须使用 virtualKD 工具.使用方法如下链接. VirtualKD + VMWare实现单机内核调试

延伸阅读:
借助 VMware 实现单机使用 WinDbg
WinDBG + VMware = 调试内核
VMWare+WinDbg搭建(驱动)调试环境

内核编程 ,

651 views

VMware 虚拟机的网络参数设置

2008年3月8日

虚拟机与本机通讯的设置
(一) 在没有网卡或者网卡没有联网的情况下
1. 虚拟机的网卡选项: NAT:Used to share the host’s IP address
2. 打开 Host 主机的 “网络连接”, 查看 “VMware Network Adapter VMnet8″ 的属性, 记下其 IP 地址, 如 “192.168.73.1″
3. 启动运行虚拟机后, 打开虚拟机的 “网络连接”, 填写 “TCP/IP 协议” 的地址, 子网掩码, 默认网关, DNS 服务器等四项与 “192.168.73.1″ 能正常通讯, 如 IP 为 “192.168.73.232″, 掩码为 “255.255.255.0″, 网关和 DNS 服务器都必须为 “192.168.73.1″

(二) 在网卡联网的情况下
1. 虚拟机的网卡选项: Bridged:Connected directly to the physical network
2. 启动运行虚拟机后, 打开虚拟机的 “网络连接”, 填写 “TCP/IP 协议” 的地址, 子网掩码, 默认网关, DNS 服务器等四项与本地局域网能正常通讯.

(三) 在 Windows 7 下的网络参数的设置

针对 VMware 虚拟机的网络适配器的设置

在虚拟机内部的 IP 设置

延伸阅读:
解决VMware在Windows 7上无法上网的问题

日常琐碎 ,

603 views

搭建 VM 环境, 调试 WRK 内核

2007年12月25日

学习日志:具体实现过程参考《VMware Workstations6基本使用》和《WRK 实验环境设置》,现在将整个过程、其中遇到的问题及解决办法(重点)叙述一下。

WRK 下载
WRK 1.2 vs2008 工程文件, 不能编译

环境及工具: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 实验环境设置》
其实,我想把这两篇文章一并上传,可是不知传哪里,所以只有拜托各位自己去找了。

原帖地址

技术心得 ,