目录

  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. 下面这些文件夹或者文件需要修正一下, 否则在编译过程中会因为编码问题出现错误
 
. 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官网或论坛。

使用VS2012调试ReactOS源码的更多相关文章

  1. 查看和调试Qt源码

    简述 在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助. 都知道 F11 是“单步进入”,可是在调试的过程中,按下 F11 却无法进 ...

  2. 查看和调试Qt源码(动态编译的QT也可进入源码)good

    简述 在调试程序的时候,有时需要调试进入 Qt 源码,这不仅有利于我们了解内部实现机制,而且对于解决一些隐蔽性问题很有帮助. 都知道 F11 是“单步进入”,可是在调试的过程中,按下 F11 却无法进 ...

  3. 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码

    前段时间Cocos2d-x更新了一个Cocos引擎,这是一个集合源码,IDE,Studio这一家老小的整合包,我们可以使用这个Cocos引擎来创建我们的项目. 在Cocos2d-x被整合到Cocos引 ...

  4. Android动态方式破解apk进阶篇(IDA调试so源码)

    一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...

  5. Android动态方式破解apk前奏篇(Eclipse动态调试smail源码)

    一.前言 今天我们开始apk破解的另外一种方式:动态代码调试破解,之前其实已经在一篇文章中说到如何破解apk了: Android中使用静态方式破解Apk  主要采用的是静态方式,步骤也很简单,首先使用 ...

  6. Apache Spark源码走读之18 -- 使用Intellij idea调试Spark源码

    欢迎转载,转载请注明出处,徽沪一郎. 概要 上篇博文讲述了如何通过修改源码来查看调用堆栈,尽管也很实用,但每修改一次都需要编译,花费的时间不少,效率不高,而且属于侵入性的修改,不优雅.本篇讲述如何使用 ...

  7. eclipse调试jdk源码

    摘要 介绍使用eclipse调试jdk源码 java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码.虽然官方的jdk自带了源码包src.zip,然而在debu ...

  8. Android NDK调试C++源码(转)

    [原创文章,转载请保留或注明出处,http://download.csdn.net/download/bigmaxim/5474055] 1. 相关软件 adt-bundle-windows-x86. ...

  9. Linux+eclipse+gdb调试postgresql源码

    pg内核源码解析课上用的vs调试pg源码, VS用起来确实方便,但是配置调试环境着实有点麻烦.首先得装个windows系统,最好是xp,win7稍微麻烦点:最好使用vs05,08和10也可以,但是比0 ...

随机推荐

  1. Apache Tomcat开机后台启动

    作为软件开发人员,经常接触Tomcat,完成的项目,需要部署到服务器上的Tomcat,才能供其他人访问浏览. 因为存在以下问题,所以需要把Tomcat设置为后台自动启动: 1.服务器可能因环境故障面临 ...

  2. c++之string.find(string)

    先来看一个例子吧: #include "iostream" #include "string" using namespace std; // 定义函数求str ...

  3. asp.net捕获全局未处理异常的几种方法

    通过HttpModule来捕获未处理的异常[推荐] 首先需要定义一个HttpModule,并监听未处理异常,代码如下: public void Init(HttpApplication context ...

  4. mongodb嵌套查询

    db.dbModel.find({'Missions.Rewards.PrizeType':21} )

  5. wexinjs 调用

    public class Utils    {       static string appid = GetAppSettingValue("appid");       sta ...

  6. 利用Express模拟web安全之---xss的攻与防

    一.什么是XSS? 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意 ...

  7. Tornado-Form表单验证

    基本思路 用户提交表单后,验证开始.页面中会有多个域要求验证,如text input,files, checkbox.同时,根据验证字段的不同,验证方式会有很多种,例如对邮箱.IP地址.电话的验证标准 ...

  8. 洛谷 P4948 拉格朗日多项式插值(杜老师板子)

    https://www.luogu.org/problemnew/show/P4948 这篇博客主要目的是存一下的dls的神奇板子,本来应该是推公式或者二分做的 但是dls的插值板子直接写好了这个特殊 ...

  9. C++的重载流输出运算符

    // 下列代码输出什么?#include <iostream>#include <string>// typedef basic_ostream<char> ost ...

  10. HDU 5744 Keep On Movin 贪心

    Keep On Movin 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5744 Description Professor Zhang has k ...