WRK简单介绍

【转载】WRK简单介绍

2008-12-27

分类: 他山之石

版权声明 :转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://nokyo.blogbus.com/logs/33016889.html

什么是WRK
    WRK的全称是“Windows Research Kernel”,它是微软为高校操作系统课程提供的可修改和跟踪的操作系统教学平台。它给出了Windows这个成功的商业操作系统的内核大部分代码,可以对其进行修改、编译,并且可以用这个内核启动Windows操作系统。可让学生将操作系统基本原理和商业操作系统内核联系起来,进一步加深对操作系统整体的理解。

WRK的特点功能介绍
    在本科的操作系统教学中,能够提供一个展示真实操作系统是如何工作的环境是很重要的。但目前普遍使用的教学平台大多是非真实的、模拟的环境,这可能使同学对操作系统的理解出现偏差。同时教学平台要求在学生的理解和修改的基础上能够真实的运行起来,所以我们采用WRK作为操作系统课程的教学实践平台。WRK平台隶属于Windows Academic Program项目,是微软公司将Windows Kernel的核心技术融入到高校的教学和科研中的产物。该平台是基于Windows操作系统的真实内核代码进行提炼、修改形成的。它在操作系统教学方面具有以下几个突出的优点:

  • 可运行在真实的硬件平台
        WRK是建立在真实的NT内核基础上的,实现了线程调度、内存管理、I/O管理、文件系统等操作系统所必须的组成部分。
        可以将编译出的内核放到装有Windows 2003的机器上,通过增加启动项,指定从WRK内核启动。通过修改编译时的选项,可以支持X86和AMD64两种架构。
    当然,我们也可以使用虚拟机运行WRK。可以防止修改过的代码对真实的硬件和文件系统产生负面影响;也可以方便的通过串口进行调试。
  • 包含操作系统中很多概念的具体实现
        现代操作系统原理中包含了很多的概念,如线程、虚拟内存、硬件抽象等等。一些模拟的操作系统由于各种原因无法将这些概念付诸实际,这样就导致学生在学习的过程中,获得的只是一些空洞的知识。WRK中将Windows的各种实现都展示了出来。
  • 调试比较方便,随机性使体验更加真实
        一般来说,操作系统内核的调试需要两台计算机。一台作为宿主机,运行需要调试的内核;另一台作为调试机,运行调试程序。两台机器通过串口进行连接,传送调试指令和调试数据。因为WRK可以运 行在虚拟机上,我们可以通过一个命名管道连接虚拟机和物理机。将虚拟机作为宿主机,而物理机器作为调试机来进行调试。
        不确定性是操作系统所必须具有的特征。WRK运行在真实的硬件平台上,各种硬件中断的随机性和不确定性赋予了WRK天生的不确定性。当然,这个不确定性对于我们也是具有两面性的,一方面展示的真实操作系统的特征;另一方面,对于我们内核的调试也具有不确定性。
  • 结构清晰,易于分模块阅读
    WRK具有非常清晰的目录结构,将所有代码分布在16个文件夹中。如下表:
    表格 1 WRK目录列表
    模块目录     模块功能
    cache\      cache manager
    config\      registry implementation
    dbgk\        user-mode debugger support
    ex\           executive functions (kernel heap, synchronization, time)
    fsrtl\         file system run-time support
    io\            I/O manager
    ke\           scheduler, CPU management, low-level synchronization
    lpc\           local procedure call implementation
    mm\          virtual memory manager
    ob\           kernel object manager
    ps\           process/thread support
    se\           security functions
    wmi\         Windows Management Instrumentation
    inc\          NTOS-only include files
    rtl\           kernel run-time support
    init\          kernel startup
        WRK的代码量相当大,源代码有47M。所以,随着操作系统课程的进行,同学可以有针对性的阅读某一个模块的代码,能够更好的理论联系实际。
  • 代码质量高
        WRK是用C语言来实现的。这是考虑到了操作系统内核效率的问题。WRK代码质量很高,规范很好,可以通过阅读提高自己的水平。

        下面介绍如何编译WRK。

        1.用VMware安装一个windows server 2003系统(以下所指系统如未加说明均为该windows 2003虚拟机)
        2.将WRK源码拷贝到系统下C盘,将文件夹取名wrk(可以任意命名)
        3.将系统中的环境变量Path设置为 C:\wrk\tools\x86;%path%
        4.(在命令提示符中输入)cd wrk\base\ntos
        5.(在命令提示符中输入)nmake -nologo x86=
                  (内核正在编译...编译完后在wrk\base\ntos\BUILD\EXE下生成内核文件)
        6.将wrk\base\ntos\BUILD\EXE下的内核文件拷贝到C:\windows\system32下
        7.(在命令提示符中输入)在C:\windows\system32路径下输入link -dump -all hal.dll | findstr pdb命令,查看你的hal按照下面对照:
        halacpi.dll -> halacpim.dll   ; ACPI PIC-based PC [used by VirtualPC]
        halaacpi.dll -> halmacpi.dll   ; ACPI APIC-based PC
        halapic.dll -> halmps.dll     ; MPS
        8.进入C:\wrk\WS03SP1HALS\x86目录下,将相应的hal文件夹下的文件(2个)拷贝到C:\windows\system32下
        9.进入C盘,将隐藏的文件boot.ini打开,在最后一行加入:
            multi(0)disk(0)rdisk(0)partition()\WINDOWS="test" /kernel=wrkx86.exe /hal=halmacpi.dll
        10.重新启动,进入新编译好的内核.

        PS: 1.注意第9步中,发光的数字"2",该数值应与原来最后一句中的一致(否则进入系统时会出现没有找到引导盘)
              2.如果还是进入不了系统,则下载win2003sp1ch进行系统升级.

你可能感兴趣的:(WRK简单介绍)