gOxiA 的计算机没有光驱,所以从 Windows Vista 发布以来就没再用过光驱来安装操作系统。通常都是使用 U盘或移动硬盘中自己定制的 Windows PE 来引导计算机,进行系统的安装或维护。虽然这样一来已经非常方便、灵活!而且 Windows 7 的备份还原功能也更加实用、再加上 Thinkpad 独有的 R&R,一旦发生系统故障均能够快速的恢复到正常状态。然而,时间久了会发现偶尔要取出移动硬盘或U盘引导定制的 Windows PE时,也会稍显麻烦!能不能有办法将 Windows PE 嵌入到 Windows 7 中呢?!结论是肯定的,早前 gOxiA 写过几篇相关的文章,当时都是基于 Windows Vista 的,虽然操作过程与在 Windows 7 上大致相同,但是由于 Windows 7 具备一些新的特性,加之 WAIK3 的发布,所以在实际实施中还是有一些不同的,所以 gOxiA 决定撰写该日志与大家分享!

        首先,我们先回顾一下 gOxiA 之前写过的相关日志,第一篇是将 Windows PE 部署到一个单独分区中,虽然这种方式某种意义上更加安全、有效。但是实际操作时相当费时费神,所以第二篇提到的方式更适合推广使用。

        本章将引领大家在 Windows 7 操作系统中嵌入一个定制版的 Windows PE v3.0,默认不出现在引导列表中,并且以 RAMDISK 方式来运行。这种做法的好处是,我们可以轻易地在一台已经安装好操作系统的计算机上进行嵌入,根据需要调用 Windows PE 来引导,不破坏默认的引导列表而导致每次引导都会出现选择菜单,由于采用 RAMDISK 方式,所以定制版的 Windows PE 维护起来也更方便,只需要维护一个 WIM 映像文件即可,而且不必担心因为误操作而引起的文件修改或丢失问题。

        关于 Windows PE 的定制 gOxiA 这里不再复述,网上有很多定制的版本和定制工具,当然也可以自己参考 WAIK 文档制作符合自己需求的定制版本。在开始前,请准备一套完整的 Windows PE,他们通常是 ISO 格式,然后将 boot 目录下的 boot.sdi 和 sources 目录下的 boot.wim 拷贝到你本地磁盘上的某一个目录中,本例中是保存到“E:\Personal\Tools\WindowsPE”目录下;最后,在管理员权限下执行“bcdedit /export boot.bak”,将引导信息进行备份。

        下面是 gOxiA 工作 PC 上的 bcd 信息,供参考使用:

Windows 启动管理器
--------------------
标识符                  {bootmgr}
device                  partition=C:
description             Windows Boot Manager
locale                  zh-CN
inherit                 {globalsettings}
default                 {current}
resumeobject            {4d3dfcc6-aaf4-11de-a800-00e04c54037c}
displayorder            {current}
                        {4d3dfccb-aaf4-11de-a800-00e04c54037c}
toolsdisplayorder       {memdiag}
timeout                 10

Windows 启动加载器
-------------------
标识符                  {current}
device                  partition=C:
path                    \windows\system32\winload.exe
description             Windows 7
locale                  zh-CN
inherit                 {bootloadersettings}
recoverysequence        {4d3dfcc8-aaf4-11de-a800-00e04c54037c}
truncatememory          0x80000000
recoveryenabled         Yes
osdevice                partition=C:
systemroot              \windows
resumeobject            {4d3dfcc6-aaf4-11de-a800-00e04c54037c}
nx                      OptIn
numproc                 1
usefirmwarepcisettings  No

Windows 启动加载器
-------------------
标识符                  {4d3dfcc8-aaf4-11de-a800-00e04c54037c}
device                  ramdisk=[C:]\Recovery\4d3dfcc8-aaf4-11de-a800-00e04c54037c\Winre.wim,{4d3dfcc9-aaf4-11de-a800-00e04c54037c}
path                    \windows\system32\winload.exe
description             Windows Recovery Environment
inherit                 {bootloadersettings}
osdevice                ramdisk=[C:]\Recovery\4d3dfcc8-aaf4-11de-a800-00e04c54037c\Winre.wim,{4d3dfcc9-aaf4-11de-a800-00e04c54037c}
systemroot              \windows
nx                      OptIn
winpe                   Yes

Windows 启动加载器
-------------------
标识符                  {4d3dfccb-aaf4-11de-a800-00e04c54037c}
device                  vhd=[D:]\ws08r2.vhd
path                    \windows\system32\winload.exe
description             Windows Server 2008 R2
locale                  zh-CN
inherit                 {bootloadersettings}
recoverysequence        {4d3dfcc8-aaf4-11de-a800-00e04c54037c}
truncatememory          0x80000000
recoveryenabled         Yes
osdevice                vhd=[D:]\ws08r2.vhd
systemroot              \windows
resumeobject            {4d3dfcc6-aaf4-11de-a800-00e04c54037c}
nx                      OptIn
numproc                 1
usefirmwarepcisettings  No

从休眠状态恢复
---------------------
标识符                  {4d3dfcc6-aaf4-11de-a800-00e04c54037c}
device                  partition=C:
path                    \windows\system32\winresume.exe
description             Windows Resume Application
locale                  zh-CN
inherit                 {resumeloadersettings}
filedevice              partition=C:
filepath                \hiberfil.sys
pae                     Yes
debugoptionenabled      No

Windows 内存测试程序
---------------------
标识符                  {memdiag}
device                  partition=C:
path                    \boot\memtest.exe
description             Windows Memory Diagnostic
locale                  zh-CN
inherit                 {globalsettings}
badmemoryaccess         Yes

EMS 设置
------------
标识符                  {emssettings}
bootems                 Yes

调试器设置
-----------------
标识符                  {dbgsettings}
debugtype               Serial
debugport               1
baudrate                115200

RAM 故障
-----------
标识符                  {badmemory}

全局设置
---------------
标识符                  {globalsettings}
inherit                 {dbgsettings}
                        {emssettings}
                        {badmemory}

启动加载器设置
--------------------
标识符                  {bootloadersettings}
inherit                 {globalsettings}
                        {hypervisorsettings}

虚拟机监控程序设置
-------------------
标识符                  {hypervisorsettings}
hypervisordebugtype     Serial
hypervisordebugport     1
hypervisorbaudrate      115200

恢复加载器设置
----------------------
标识符                  {resumeloadersettings}
inherit                 {globalsettings}

设备选项
--------------
标识符                  {4d3dfcc9-aaf4-11de-a800-00e04c54037c}
description             Ramdisk Options
ramdisksdidevice        partition=C:
ramdisksdipath          \Recovery\4d3dfcc8-aaf4-11de-a800-00e04c54037c\boot.sdi

        从上面显示的当前系统的 BCD 信息可以得知,默认 Windows 7 除了标准的系统引导,还有 Windows 恢复环境,Windows 恢复程序以及内存检测程序。其中 Windows 恢复环境就是以 RAMDISK 方式运行的一个 Windows PE,与我们要嵌入类型是一致的。注意:上面信息中包含的 Windows Server 2008 R2 是我附加上去的 VHD Native Boot,可以忽略!在一些品牌机,如 Thinkpad,由于安装有 R&R那么还会看到有关 R&R 的引导信息,也是以 RAMDISK 方式引导,并且会使用默认标识符“{ramdiskoptions}”,而非 GUID。

        现在我们将开始,Windows PE 的嵌入!以管理员权限启动 CMD 环境之后键入如下指令:

bcdedit /create /d "Custom Windows PE v3.0 x86" /device

        执行上面的指令后,将会创建一个名为“Custom Windows PE v3.0 x86”的“设备选项”,并得到一个 {GUID},为了便于识别这里将此{GUID}叫做{SDIGUID},请复制下来备用。然后键入下面的指令,配置该设备选项的引导文件:

bcdedit /set {GUID} ramdisksdidevice partition=e:

bcdedit /set {GUID} ramdisksdipath \personal\tools\windowspe\boot.sdi

        在设备选项的信息配置完毕后,创建一个新的“Windows 启动加载器”,获取到该启动加载器的 GUID 后,添加相关的引导信息,指令如下:

bcdedit /create /d "Windows PE" /application osloader

bcdedit /set {GUID} device ramdisk=[e:]\personal\tools\windowspe\boot.wim,{SDIGUID}

bcdedit /set {GUID} osdevice ramdisk=[e:]\personal\tools\windowspe\boot.wim,{SDIGUID}

bcdedit /set {GUID} path \windows\system32winload.exe

bcdedit /set {GUID} systemroot \windows

bcdedit /set {GUID} detecthal yes

bcdedit /set {GUID} winpe yes

bcdedit /set {GUID} nx optin

        下来我们将这个 Windows 启动加载器,添加到 ToolsDisplayOrder 列表中,这样启动过程中不会进入引导选项列表,当我们需要启动这个 Windows PE 时只需要在引导时按下空格键即可调出引导选择列表,之后使用 Tab 键切换到 ToolsDisplayOrder 列表中,通过上下箭头定位到该 Windows PE 的名称上——“Custom Windows PE v3.0 x86”,按下回车即可开始引导。为此需要执行下列指令:

bcdedit /toolsdisplayorder {GUID} /addlast

        至此便大功告成了,现在可以进行测试感受一下。重新过一边这篇日志,相信细心的朋友会发现为什么创建的启动加载器的 Description 是“Windows PE”,而最终显示结果却是“Custom Windows PE v3.0 x86”。这是因为 RAMDISK 会引用“设备选项”的 Description,gOxiA 也是测试之后才发现这个问题,而为了解决这个问题则选择单独存储一个 boot.sdi,并单独创建一个“设备选项”。如果关联到“Windows 恢复环境”的“设备选项”,那么最终的显示结果会是“Ramdisk Options”,在启动选择里不容易被识别。

        最后需要提醒的是由于本日志系统过滤特殊字符的原因,指令中部分符号是全角字符,实际操作中建议手工对照键入,不要直接复制使用。如果对 bcdedit 命令很熟悉,其实上述一些步骤是可以省略或简化的,这里为了使网友更清晰地了解操作步骤,故完整路演了一遍。

Tags: , , ,
Windows Client | 评论(0) | 引用(0) | 阅读(4828)
发表评论
昵称 [注册]
密码 游客无需密码
网址
电邮
打开HTML 打开UBB 打开表情 隐藏 记住我