当我们没有两台物理机时,又想做双机内核调试怎么办?当然是装虚拟机啦!本文总结了使用VMware15.5 + win10 + virtualkd + windbg搭建双机内核调试环境。
VMware版本: 15.5 pro。可以到VMware 官网下载地址下载最新版本。
我的物理主机系统: win10 1909。其它版本的windows也可以,VMware15.5最低支持win7系统。
虚拟机系统镜像: win10 1809 x64。其它版本的系统也可以。我们可以在msdn i tell you上面找到各个版本的windows官方镜像。除了系统镜像,还包括其它很多工具的官方镜像,比如vs,office等。
windbg版本: 10.0.18362.1,其它版本的也可以。windbg包含在windows sdk中。可以到微软官网 SDK 下载地址下载。如果只需要windbg,推荐下载.exe形式的安装包。在安装的时候,可以只勾选Debugging Tools for Windows。
下载VMware到本地后,直接双击即可安装,一路点击下一步即可。需要注意以下两点:
尽量下载最新版本的VMware,早期版本的VMware在win10 1909上可能有兼容性问题。
安装完成后,最好重启系统!
安装好VMware后,就可以安装系统镜像了。通过文件(F) -> 新建虚拟机(N)即可开始新建虚拟机向导。一般我们通过安装程序光盘映像文件(iso)(M)的形式选择下载好的系统镜像安装,然后一路下一步(N)即可。
安装完成后,可以启动了。但是可能遇到一些问题,我做了简单的总结。
提示Intel VT-x被禁用。
根据提示,在BIOS里开启Intel VT-x。
重启进入BIOS,打开Intel Virutal Technology,按F10保存退出。
提示VMware Workstation与Device/Credential Guard不兼容。
强烈建议先检查下Hyper-V是否开启,如果开启了,请先关闭Hyper-V。
如果关闭Hyper-V后还是出现上图的提示。请参考禁用 Device/Credential Guard 的微软官方文档。
点击工具下载链接,下载相应的脚本文件到本地。如果我们的系统不是英文系统,按照提示改变脚本里的
*$OSArch = $(gwmi win32_operatingsystem).OSArchitecture为$OSArch = $((gwmi win32_operatingsystem).OSArchitecture).tolower()
然后以管理员权限执行DG_Readiness_Tool_v3.6.ps1 -Disable -AutoReboot即可。
-Disable表示关闭。
-AutoReboot表示自动重启系统,根据自己的需要指定。
重启后,会有提示是否要真的禁用此特性。按Windows键或者F3键禁用,按Esc跳过。
顺利安装完系统过后,我们就可以开始进行双机内核调试了。
如果我们希望通过虚拟串口的形式连接,我们在系统设置前,一定要注意:VMware中的打印机会占用默认的串口 1。如果不移除打印机,我们新建的串口会是串口 2(这样,我们在被调试系统中设置的时候,需要设定debugport的值为2)。
当然,我们可以移除打印机,然后新建串口,这样新建的串口就是默认的串口 1了。
我以保留打印机,使用COM2为例,录制了一份屏幕录像。这里对整个操作过程做一个简要描述:
新建串口,因为打印机占用了串口 1,所以我们新建的串口是串口 2。
设置pipe参数,我设置的是\\.\pipe\bcn_com,其他参数默认即可。
启动虚拟机系统,设置调试参数,命令如下:
以管理员权限运行windbg,通过界面连接。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课