欢迎光临,这里是 gOxiA=苏繁=SuFan 独立的个人博客。
本站域名:http://goxia.maytide.net or http://sufan.maytide.net
移动设备请访问:http://goxia.maytide.net/m
转载文章,请务必保留出处与作者信息,未经许可严禁用于商业用途!

路演使用 VHD Native Boot 打造多系统应用环境

        搜索 gOxiA 的博客查找关于 VHD 和 Native Boot 的文章确实比较匮乏,而且都比较零散,周围的朋友当工具参考的时候,也比较麻烦,所以今天写此篇日志,路演一遍使用 VHD Native Boot 打造多系统应用环境。除此之外,再分享一些小心得体会!

        在开始之前,有必要提醒大家几个注意事项,首先要准备好 image.exe 这个工具,使用它来释放系统源;其次建议准备一个独立分区,专门用来存储这些 VHDs,比如 gOxiA 就划分出一个独立的 40G 分区,用来存放 Windows Server 2008 R2、Ubuntu,根据需要还可以放入 Windows 7 英文版或64bit 进行测试或满足其他工作需求,当然这一步也不是必须得,根据自己的喜好;最后就是准备好系统源 — Install.wim。

        一切准备就绪,就可以开始了。首先安装主系统,最好是 Windows 7,毕竟桌面平台用桌面版本最符合要求(gOxiA 长期经验,不管做什么应用,桌面的还是用桌面系统最好,其他的跑虚拟化更为合适。),此外 VHD Native Boot  只有 Windows 7 和 Windows Server 2008 R2 支持,这点要尤为注意。主系统的安装过程我就不再复述,下面进入主要环节。

        我们要做的就是创建一个虚拟磁盘(VHD),将需要的系统版本安装源释放到这个 VHD 中,然后使用 bcdedit 创建这个对应 VHD 的引导信息便大功告成。过程其实很简单,因为大部分操作都涉及命令行,所以本例将全部以命令行的方式来进行路演。

        首先,我们需要使用 Diskpart 来创建一个 VHD 文件,当然也可以参考之前的文章(Discovery support Virtual Hard Disks (新增对 VHD 的支持))进行操作。

diskpart

create vdisk file=d:\ws08r2.vhd maximum=20480 type=expandable

sel vdisk file=d:\ws08r2.vhd

attach vdisk

create partition primary

format fs=ntfs quick label=WS08R2

assign letter=v

        上面的命令行很容易理解,在D盘创建一个名为 ws08r2.vhd 大小为20G的动态扩展虚拟磁盘,并挂载到当前系统,之后为该虚拟磁盘创建一个主分区,使用 NTFS 格式进行快速格式化,将其卷标命名为 WS08R2,分配其盘符 v。

        下来我们将使用 imagex.exe 释放 Windows Server 2008 R2 安装源 install.wim 中的 Windows Server 2008 R2 Standard Edition 版本到之前的虚拟磁盘中,在当前系统上虚拟磁盘的盘符是v。

imagex /apply f:\soruces\install.wim 1 v:

        OK,一个命令就完成了,如果需要安装其他版本则可以使用 /info 参数来确定版本的 index 。

        最后,我们将使用 bcdedit 来创建这个 WS08R2 的引导信息,为此执行下列操作:

bcdedit /copy {current} /d "Windows Server 2008 R2 Standard Edition"

bcdedit /set {GUID} device vhd=[d:]\ws08r2.vhd

bcdedit /set {GUID} osdevice vhd=[d:]\ws08r2.vhd

bcdedit /set {GUID} detecthal on

bcdedit /set {GUID} hypervisorlaunchtype auto

        如果希望 WS08R2 的引导不出现默认引导菜单,默认还是与往常一样进入 Windows 7,待需要时调用的话,可以将该引导项存储在 toolsdisplayorder 中,那么我们就需要先从 displayorder 中删除“Windows Server 2008 R2 Standard Edition”引导项,之后执行下面的命令再添加到 toolsdisplayorder 中,启动计算机时引导系统光标出现按下空格就可以进行调用,这也是 gOxiA 所推荐的,毕竟很美观不破坏整体效果。

bcdedit /displayorder {GUID} /remove

bcdedit /toolsdisplayorder {GUID} /addlast

        至此,我们就可以重新启动计算机引导 WS08R2 进行安装初始化,由于默认引导还是 Windows 7,所以当 VHD 上的 WS08R2 重新启动时需要认为干预选择通过 WS08R2 引导。通过这些操作我们还可以在当前系统上搭建出不同的应用环境满足自己的需求,gOxiA 基本上保证一套自己常用的主系统长期正常运行,再通过此法搭建出一套只用于 Hyper-V 的实验环境,满足自己的需求。有时候要进行教程录制或不同语言环境的测试,都需要一个干净的环境,所以 VHD Native Boot 也派上了大用场,总之充分利用这一颠覆性的创新特性能帮助我们解决不少问题,更多应用还有待用户来挖掘。

        最后希望今天这一路演能帮助从事微软相关工作的朋友们,嘿嘿!确实很适合一定人群的使用需求!其他更多相关文档可以在本博搜索关键字 vhd 或 native boot,为了方便大家这里提供 imagex 文件的下载:imagex.exe

        在上一篇日志 — 《HOWTO:在 Windows 7 中嵌入 Windows PE》中,gOxiA 与大家分享了将 Windows PE 嵌入到 Windows 7 中的具体实施步骤,而这篇日志将利用 Windows 7 的新特性 — VHD Native Boot,来实现 Windows PE 以 VHD 方式来引导。就目前的应用而言,此方法真正的使用价值还有待推敲,但是不能否认的是一旦使用 Windows PE VHD Native Boot,那么在 Windows PE 中的修改将会得到保存,如果将网上网友定制的功能丰富的 Windows PE 3.0(此类 PE 集成了很多实用工具,甚至包含了浏览器和QQ,并且桌面也极像 Windows 的标准桌面。)拿来使用,那么该 Windows PE 完全可以作为一个轻量级的系统来进行使用。需要注意的是可能会与授权问题相抵触,使用前需慎重考虑!

        本文侧重点是实现 Windows PE 3.0 的 VHD Native Boot,如果你对 VHD Native Boot 的使用已经相当了解,那么具体操作起来是非常容易的,我们只需要将定制的 Windows PE 3.0 中的 Boot.wim 释放到 VHD 中即可。此外还需注意,Boot.wim 释放后的容量要比 wim 容量大很多,那么在创建 VHD 时一定要将容量设置的大一些。下面是具体的操作指令:

diskpart

create vdisk file=d:\winpe3.vhd maximum=2000 type=expandable

list disk

sel disk 1

create partition primary

format fs=ntfs quick label=WinPE3

assign letter=v

        上面的指令将在 D 盘创建一个动态扩展类型,最大2G的名为 winpe3.vhd 的虚拟磁盘文件。并为其创建一个主分区,使用 NTFS 格式快速格式化,卷标为 WinPE3,并将其盘符分配为 V。“list disk”用于显示当前的磁盘信息,便于之后执行“sel disk n”选择虚拟磁盘。为了方便之后的操作,建议不要退出 diskpart。

        之后使用 imagex 或支持 wim 格式的解压缩软件将其释放到虚拟磁盘 V 上,释放完毕后在 diskpart 下执行“datech vdisk”卸载虚拟磁盘,如果之前已经退出 diskpart,则重新进入后需要先选择 vdisk,即“sel vdisk file=d:winpe3.vhd”,之后再执行卸载虚拟磁盘的命令。

        最后生成 Windows PE VHD Native Boot 的引导信息,并添加到 ToolsDisplayOrder 引导列表中,为此执行如下操作:

bcdedit /copy {current} /d "Windows PE VHD Native Boot"

bcdedit /set {GUID} device vhd=[d:]\winpe3.vhd

bcdedit /set {GUID} osdevice vhd=[d:]\winpe3.vhd

bcdedit /set {GUID} detecthal yes

bcdedit /set {GUID} winpe yes

bcdedit /toolsdisplayorder {GUID} /addlast

        完成所有操作后,重新启动计算机引导时按下空格键调出引导列表,使用 Tab 键切换到 ToolsDisplayOrder 列表,进行选择。

Tags: , , , , , , ,

        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: , , ,
分页: 2/3 第一页 上页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]