不抽烟,少喝酒,多运动,多思考,多努力

仅仅是为了记录自己想记下的一些东西,方便自己以后查看
Windows XP Checked Build的部分安装(转)
1.   什么是Checked Build

Windows 2000 Professional、Windows XP Professional和Windows Server 2003都有一个特殊的调试版本,被称为检查版本(Checked Build)。这是Windows操作系统代码在设置了“DBG”标志后重新编译的得到的一个版本,因此包含了调试信息,而且编译时没有做任何的代码优化。

之所以提供这样的检查版本,主要是为了设备驱动的开发人员,因为它可以针对那些被设备驱动程序或其他系统代码所调用的的内核模式函数执行更为严格的错误检查。

检查版本还可以被用来针对特定的组件跟踪到进一步的细节信息。(详情可以参见Microsoft Knowledge Base中编号为314743的文章,“HOWTO: Enable Verbose Debug Tracing in Various Drivers and Subsystems”)。

2.   如何获取Checked Build

Checked Build 可以通过MSDN订阅获取。Windows XP Professional Service Pack 2 Checked Build可以从网上免费获得(http://www.microsoft.com/downloads/details.aspx?familyid=7a4d8d12-9f5d-42bb-b31c-7b31657c869c&displaylang=en)。

3.   如何安装部分Checked Build

检查版本包含了操作系统组件的调试信息而且在编译时没有进行任何的代码优化,因此检查版本比发行版本大而且运行更加缓慢。幸运的是,我们不必要安装整个Checked Build。可以只拷贝内核映像文件(ntoskrnl.exe)和正确的HAL(hal.dll)的检查版本到普通的零售版本中。这样做的好处是,设备驱动程序和其他的内核代码受到了检查版本的严格检查,但是又不必运行其它所有组件的较慢的调试版本。

部分检查版本的安装可以通过以下的步骤完成:

1)        确认要安装的系统文件。

在安装部分检查版本之前,我们必须知道在我们已经安装的零售版系统上的相关系统文件(ntoskrnl.exe等)和HAL文件的版本。

在Windows NT的发行介质中(如安装光盘)一般都提供了多个版本的系统文件和HAL映像文件,这是为了适应多种类型的处理器和硬件平台的需要。操作系统在安装时会检查系统的硬件,根据实际情况来选择合适的系统文件和HAL映像文件拷贝到系统目录(%systemroot%system32/)中。

操作系统根据是否是多处理器平台和是否支持PAE(Physical Address Extension)来选择合适的系统文件。

ntoskrnl.exe

    单x86处理器,使用不超过4GB的物理内存。

ntkrnlpa.exe

    单x86处理器,支持PAE。

ntkrnlmp.exe

    多处理器,使用不超过4GB的物理内存。

ntkrpamp.exe

多处理器,支持PAE。

同样,HAL也有与之对应的不同文件。

我们可以在系统的安装日志(%systemroot/repair/setup.log)中找到当前的零售版系统在安装时所使用的文件。如,在我的系统上有,部分相关的安装日志如下,

"WINDOWS"system32"hal.dll = "halacpi.dll","181f2"

"WINDOWS"system32"ntkrnlpa.exe = "ntkrnlpa.exe","1f6612"

"WINDOWS"system32"ntoskrnl.exe = "ntoskrnl.exe","220d8c"

从上面可以看出,我的系统所使用的系统文件是ntkrnlpa.exe 和 ntoskrnl.exe,HAL映像文件是halacpi.dll。如果系统所在的平台是多处理器的,则有可能是如下的安装记录:

"WINNT"system32"hal.dll = "halmacpi.dll","2bedf"

"WINNT"system32"ntkrnlpa.exe = "ntkrpamp.exe","1d66a6"

"WINNT"system32"ntoskrnl.exe = "ntkrnlmp.exe","1ce5c5"

...

这说明操作系统在安装时把halacpi.dll、ntkrnlpa.exe和ntoskrnl.exe从安装介质上拷贝到了系统目录中。选择正确的版本的文件很重要,否则系统就无法正常启动。

2)        拷贝检查版本的系统文件和HAL映像文件

在确定了系统文件和HAL映像文件所使用的版本之后,我们就可以把相应的检查版本的文件拷贝到系统文件中。

解压Windows XP Checked Build(我使用的是WindowsXP-KB835935-SP2-DEBUG-ENU),在 ."i386" 目中找到文件 halacpi.dl_、ntkrnlpa.ex_ntoskrnl.ex_三个文件,把他们拷贝到%systemroot%system32/中。以上的三个文件分别以.dl_.ex_为后缀,说明它们是被压缩过的,使用expand.exe对它们解压。在cmd中,更换当前目录至%systemroot%system32/,然后运行命令:

expand halacpi.dl_ halacpi.chk

expand ntkrnlpa.ex_ ntkrnlpa.chk

expand ntoskrnl.ex_ ntoskrnl.chk

解压得到的三个文件halacpi.chk、ntkrnlpa.chkntoskrnl.chk就是安装部分Checked Build需要的文件。

3)        修改Boot.ini文件,添加Checked Build的启动项。

安装部分的Checked Build就是用检查版本的系统文件(*.chk)来替换零售版的系统文件和HAL映像文件在启动时被加载。这只要在boot.ini文件中添加一个系统启动项,使用/kernel和/hal 选项就可以做到。在boot.ini文件中添加如下语句:

multi(0)disk(0)rdisk(0)partition(1)"WINDOWS="Windows XP Checked Build" /fastdetect /kernel=ntoskrnl.chk /hal=halacpi.chk

重新启动系统,选择Windows XP Checked Build启动项就启动了部分安装Checked Build的系统。


参考文献:

[1]. Mark E. Russinovich, David A. Solomon, 深入解析Windows操作系统(译:潘爱民), 电子工业出版社, 北京, 2007.

[2]. Windows NT DDK, “Installing Just the Checked Operating System and HAL”.

From:http://blog.csdn.net/redutopia/archive/2008/08/31/2855443.aspx

posted on 2009-04-28 08:39  adward  阅读(420)  评论(0编辑  收藏  举报