使用VS2012调试ReactOS源码

来源:互联网 发布:扁平疣网络医院 编辑:程序博客网 时间:2024/06/11 01:57
使用VS2012调试ReactOS源码

目录

  1. 一 下载并安装VS2012
  2. 二 下载并安装WDK80
  3. 三 下载ReactOS0315源码
  4. 四 下载并安装RosBE211
  5. 五 用RosBE命令行编译ReactOS源码
  6. 六 用VS2012编译ntoskrnl模块
  7. 七 制作ReactOS安装盘
  8. 八 用VirtualBox安装ReactOS
  9. 九 建立调试环境
  10. 十 调试ReactOS源码
 

一. 下载并安装VS2012

我安装的是VS2012_ULT_chs.iso, 网上随便下载

 

二. 下载并安装WDK8.0

下载地址: http://msdn.microsoft.com/zh-cn/windows/hardware/hh852365

安装完之后打开VS2012, 会发现新建项目中多了一些Driver项目, 菜单栏上也多了一个菜单项DRIVER

 

三. 下载ReactOS0.3.15源码

下载地址: http://download.reactos.org/reactos/ReactOS/0.3.15/

下载ReactOS-0.3.15-REL-src.zip, 解压缩到D:\ReactOS

 

四. 下载并安装RosBE2.1.1

下载地址: http://download.reactos.org/reactos/RosBE-Windows/i386/2.1.1/

下载RosBE-2.1.1.exe, 安装完之后记得导入生成的注册表文件, 然后把bin目录添加到环境变量path中

我的安装路径为D:\ProgramFiles\RosBE, 把D:\ProgramFiles\RosBE\Bin添加到环境变量path中

 

五. 用RosBE命令行编译ReactOS源码

1. 双击ReactOS Build Environment进入编译环境, 因为安装RosBE时选择了ReactOS源码位置, 所以自动进入了D:\ReactOS

 

2. 输入configure.cmd生成目录output-MinGW-i386

 

3. 输入cd output-MinGW-i386\host-tools, 进入D:\ReactOS\output-MinGW-i386\host-tools, 输入make 编译生成tools

4. 输入cd ..\reactos, 输入make bootcd, 编译生成bootcd.iso

 

六. 用VS2012编译ntoskrnl模块

1. 打开VS2012 X86命令行工具, 进入D:\ReactOS, 输入configure.cmd VSSolution生成目录output-VS11-i386

 
 
2. 下面这些文件夹或者文件需要修正一下, 否则在编译过程中会因为编码问题出现错误
下载地址: http://download.csdn.net/detail/ayang1986/7731527
 
. kbdcz
D:\ReactOS\dll\keyboard\kbdcz\kbdcz.c
 
. kbdhu
D:\ReactOS\dll\keyboard\kbdhu\kbdhu.c
 
. butterflies
D:\ReactOS\modules\rosapps\applications\screensavers\butterflies\lang
 
. ctm
D:\ReactOS\modules\rosapps\applications\sysutils\ctm\lang
 
. cylfrac
D:\ReactOS\modules\rosapps\applications\screensavers\cylfrac\lang
 
. kernel32
D:\ReactOS\dll\win32\kernel32\winnls\nls
 
. matrix
D:\ReactOS\modules\rosapps\applications\screensavers\matrix\lang
 
. mazescr
D:\ReactOS\modules\rosapps\applications\screensavers\mazescr\lang
 
. ntvdm
D:\ReactOS\subsystems\ntvdm\lang
 
. starfield
D:\ReactOS\modules\rosapps\applications\screensavers\starfield\lang
 
. usetup
D:\ReactOS\base\setup\usetup\lang
 
3. 进入D:\ReactOS\output-VS11-i386\host-tools, 打开工程文件REACTOS.sln, 编译生成ALL_BUILD
 
4. 进入D:\ReactOS\output-VS11-i386\reactos, 打开工程文件REACTOS.sln, 编译生成ALL_BUILD(漫长的等待...........................................................................................)
 
 
因为我们只用到工程ntoskrnl生成的ntoskrnl.exe, 所以也可以只编译生成工程ntoskrnl, 以节约时间 !
 
 
5. 现在D:\ReactOS\output-VS11-i386\reactos\ntoskrnl\Debug目录下应该已经生成了ntoskrnl.exe和ntoskrnl.pdb
 

七. 制作ReactOS安装盘

在第六步中, 其实我们用VS20120编译工程bootcd也可以生成bootcd.iso, 但是不知为何在虚拟机中不能引导安装, 因此我们需要第五步生成的bootcd.iso
 
1. 用光盘映像编辑工具(UltraISO)打开第五步生成的bootcd.iso
 
 
2. 用第六步生成的ntoskrnl.exe和window 2003系统中的kdcom.dll替换bootcd.iso中的同名文件, 保存生成新的bootcd.iso
 

八. 用VirtualBox安装ReactOS

1. 下载并安装VirtualBox, 我使用的是VirtualBox-4.3.12-93733

2. 新建虚拟机, 选择载入第七步生成的bootcd.iso

 

3. 设置串口参数

 
4. 启动虚拟机, 安装ReactOS, 建议选择English版本进行安装. 安装过程中会重启一次, 按照步骤来就好了
5. 安装完成后启动进入选择界面, 选择ReactOS (Debug)启动
 
 

九. 建立调试环境

1. 打开VS2012(Win7, Win8 要以管理员身份运行), 选择菜单DRIVER -> Test -> Configure Computers, 打开Computer Configuration窗口

 

2. 点击Add New Computer, 在Computer name:中输入你真实的计算机的名字(不是虚拟机中计算机的名字), 下边三个选项选择最后一项”Manually configure debuggers and do not provision”,手动配置调试

 

3. 按下图配置调试参数

Connection Type选为Serial (串口)
(波特率)Baud Rate 115200
 (管道)Pipe勾选
(重连接)Reconnect勾选
(管道名)Pipe name  \\.\pipe\com_debug
这几个选项是根据第八步的虚拟机设置来设置的
最后点击下一步, 完成。

 

4. 在vs2012中选择菜单  工具 -> 附加到进程, 打开附加到进程窗口

传输:Windows Kernel Mode Debugger
限定符:就是我们上面添加的计算机名

 

选择Kernel进程, 点击附加进入调试状态

 

5. 在VirtualBox虚拟机中按Tab+K产生中断, VS2012捕获该中断

 

十. 调试ReactOS源码

1. 在VS2012中打开源码文件 D:\ReactOS\ntoskrnl\ps\process.c, 在函数PspCreateProcess处按F9下断点

 
2. 按F5恢复虚拟机运行, 然后在虚拟机中随便运行一个程序创建新的进程, 则虚拟机会中断到刚才设置的断点位置, 开始调试吧 !!!
用RosBE2.1 生成Reactos和VC工程

1. 首先下载 源码和RosBE   从网站 https://www.reactos.org

2. 安装好RosBE 并选择好源码目录

3. 进入VS2010的命令行环境, 然后切换到Ros源码目录

4. 如果没有包含RosBE的CMake路径

   SET PATH=%PATH%;D:\RosBE\Bin\              (这里假设你将Rosbe安装在D盘的RosBE文件夹)

  然后执行 configure.cmd VSSolution  

 

即可生成VS2010的工程 在Ros源码目录的 output-VS10-i386\reactos 目录下

现在我们可以浏览Ros源码了

一:ReactOS简介

        ReactOS是一个基于 Windows NT 架构(Windows XP, Windows 7, Windows Server 2012 等均基于 Windows NT 架构)设计原则的开源操作系统。由于所有的代码都经过重新编写,ReactOS 并不是一个基于 Linux 的操作系统,而且不包含任何 UNIX 架构。

       ReactOS项目的主要目标是提供一个与 Windows 环境二进制兼容的操作系统。它能让您的 Windows 应用程序和驱动程序如同在 Windows 上一样运行。此外,由于应用了 Windows 操作系统的外观特性,已经熟悉 Windows? 用户界面的用户在使用 ReactOS 时将驾轻就熟。ReactOS 的终极目标是使您能够在感觉不到最终用户体验变化的前提下,使用 ReactOS? 来替代 Windows 。

        自由软件倡导者认同自由软件操作系统现状的改善促进了竞争,ReactOS也同样获益匪浅ReactOS是最完整的类 Windows®操作系统的工作平台, 因此,参与开发的程序员需要花费许多精力去学习ReactOS源码 和研究ReactOS开发文档。

       ReactOS组件也越来越多,兼容性也越来越好,但 ReactOS 不会有任何束缚。 ReactOS已经并将继续吸收最新版本的Win32 API,跟踪甚至发展最新的操作系统技术 。尽我们所能,使用最新的技术,并不断的融合新的特点到最新版本。简单地说,ReactOS目标就是用您的硬件设备去运行您的应用程序,最后,诞生一个任何人都可以免费使用的 FOSS 操作系统。

 

二:ReactOS功能概述

        到了 2005年,ReactOS 内核已经十分稳定,大多数给上层程序开发使用的API均制作完成,并且拥有了一个基本的GUI窗口界面。ReactOS 已经具有一个与 Windows浏览器类似的 ReactOS Explorer 作为系统操作界面。

  •  ReactOS 0.2 版可以运行相当多数的 Win32 应用程序,并拥有自己的 Notepad(记事本,基本的文本编辑器)、Regedit(系统注册表编辑器),Cmd(命令行提示符)和几个其他的大型应用(比如 AbiWord 文字编辑器)以及一些游戏(Quake 和 Quake II,Wine 的扫雷克隆)。
  •  0.2.5 版主要工作在于声卡、网卡的驱动支持。Lynx文本网页浏览器抓取网页的萤幕撷取图展示了,不过这个功能尚待进一步改进。这个版本更加入了Ext2文件系统和 GRUB boot loader 的支援,让 ReactOS 与 Linux分区 共存。
  •  自0.2.6版起,Dillo、mIRC 和网页浏览器Mozilla Firefox的DCOM元件可于ReactOS内运行。部份游戏如 Unreal Tournament 和 Deus Ex 则已知能以软件渲染的方式运作。使用 nVidia-Driver 或者 Mesa 3D 的软模式,OpenGL 的运行只剩下一些小问题。第一个网络服务器Tiny Web Server和 The UltraVNC Client宣布运行成功。从右图可见,OpenOffice(1.x版)也有部份可以执行了。
  •  自版本0.2.8,TCP/IP的部份元素开始运作,还有更多的应用程序例如 Notepad、AbiWord、OpenOffice、Deus Ex 和 Unreal Tournament。声音及USB支援尚在制作中(SB16半工作、USB OHCI 和 UHCI 则仍须劳力) USB功能“借”自 Cromwell。Plug and Play的开发工作、与及WDM的支持亦已展开。除了字符网页浏览器Lynx,ReactOS 更可以以 Mozilla 的 DCOM元件以图像方式浏览网页。
  • ReactOS 0.2.8 能侦测自己是否在 VMWare 中运行,继而到 VMWare Tools ISO 安装SVGA驱动以提供更佳的GUI表现。CSRSS 经已完全重写, 一个“重头写起”的 Ws2_32 也预计即将完工。在Trunk里面有些运作上还可以的ddraw,dplay和dplayx元素。

三:ReactOS开源官网

 

      ReactOS开源网站的网址:https://www.reactos.org/ ,官网截图如下所示:

 

三:ReactOS开源代码的架构

        用一张ReactOS源代码的架构图片,来说明更有价值些,如下所示:

       我这里下载的是ReactOS-0.3.15,最新版本的是React-0.3.16,我们下载最新版本的,我只是想研究和了解下WINDOWS NT的内核架构,所以代码的版本并不是很重要!

源码的下载网址为:http://sourceforge.net/projects/reactos/files/

       有空慢慢分析ReactOS的设计思想,当然也会借鉴WINCE的OS的思想,两者结合起来分析吧……

 

1:    首先从https://www.reactos.org/wiki/ReactOS_Build_Environment下载Reactos BE 工具,安装时会让指定ReactOS的源代码文件夹路径,安装完成后桌面会自动生成一个注册表文件,将这个注册表文件导入

2:    打开VS2012命令行工具,切换到ReactOS源码文件夹,键入命令 configure.cmd VSSolution ,之后会在源码目录生成VS的工程.over

ReactOS 是一个基于 Windows NT 架构设计原则的开源操作系统。ReactOS 项目的主要目标是提供一个与 Windows 环境二进制兼容的操作系统。它能让您的 Windows 应用程序和驱动程序如同在 Windows 上一样运行。此外,由于应用了 Windows 操作系统的外观特性,已经熟悉 Windows 用户界面的用户在使用 ReactOS 时将驾轻就熟。ReactOS 的终极目标是使您能够在感觉不到最终用户体验变化的前提下,使用 ReactOS 来替代 Windows。

工具/原料

  • VMware workstation 虚拟机
  • React OS系统镜像

配置虚拟机

  1. 1打开VMware workstation,点击创建新的虚拟机
  2. 2安装来源选择你事先下载好的react os 镜像
  3. 3选择客户机操作系统。由于VMware虚拟机不提供react os操作系统简易安装,又因为ReactOS 是一个基于 Windows NT 架构设计原则的开源操作系统,因此选择windows NT作为客户机操作系统。
  4. 4更改虚拟机名称,安装位置等。。。磁盘大小根据个人需要合理选择。
  5. 5查看虚拟机配置,完成设置,开启虚拟机。

React OS系统基础安装

  1. 1开启虚拟机后,出现安装画面。语言最好还是选择英语,如果你选择简体中文【Chinese(PRC)】,最坏的情况就是在以后的安装界面中,中文无法显示,界面里全是方框(有密集恐惧症的千万别试TAT)。
  2. 2你看得懂英文也好,看不懂也罢,反正后面的使劲按Enter键就行了(如果你不打算分区的话)。大致意思是欢迎安装React OS,它还处于早期发展阶段,不能完美支持所有的基础应用,以及安装配置。
  3. 3(如果你打算分区,出现下面界面时,按上下键选择系统安装分区;按Enter在高亮显示的分区中安装系统;按c创建分区;按d删除已有分区)
  4. 4格式化分区。提供fat和ext2两种文件系统格式,其中fat多用于windows系统,而ext2多用于linux系统。(这两种文件系统格式都算得上是老古董了。。。)
  5. 5选择安装根目录
  6. 6按Enter开始安装
  7. 7在硬盘上安装引导程序(MBR和UBR)即第一项。没事你选最后一项干啥。。。
  8. 8React OS基础部分就安装完了,按Enter重启。

React OS 驱动安装及系统基础设置

  1. 1每次开启都有这个引导界面,默认第一项就行。
  2. 2欢迎界面及GPL许可证查看界面
  3. 3更改系统设置和键盘布局设置,填写用户名称及密码,设置时区和时间
  4. 4安装VMware tools时,一定要注意先在虚拟机目录中点安装VMware Tools,再点next。(按Ctrl+Alt键释放鼠标)【不懂原因看英文】
  5. 5完成安装。重启开始探索React OS吧

注意事项

  • React OS仍在 alpha 试验阶段,建议不要在React OS环境下进行比较重要的工作。
  • React OS能兼容的硬件和软件比较有限,但稳定性比较好,并且开源免费。
  • 安装中或安装完后遇到问题的可以多逛一下React OS官网或论坛。