本帖最后由 泉此方 于 2013-3-20 11:03 编辑
浅谈基于VHD方式在中小型企业内部署Windows 8的一些思路与方法(2) By lblneva
本篇接“浅谈基于VHD方式在中小型企业内部署Windows 8的一些思路与方法(1)”(下面简称“思路1”),主要简绍关于如何在NT5、或无引导的系统中部署安装 基于VHD启动技术的windows 8。里面涉及到“思路1”的一些技术细节,本篇不再叙述。建议读者在阅读本文前先查看笔者的“思路1”。地址:https://bbs.pcbeta.com/viewthread-1294200-1-1.html
5.3 系统启动为NT5的引导,如何升级到NT6引导
企业内很多计算机安装的操作系统为微软公司经典的Windows XP。对于这部分PC来说,要部署基于VHD的windows 8,最大的问题是安装Windows XP操作系统时,所安装的基于NT5的NTLDR引导程序。这个启动器没有VHD驱动,不支持VHD启动。故解决方法:升级引导到NT6引导程序,以支持VHD的启动。要注意,大多数使用中的Windows XP系统是32位。大多使用中的Windows 7/8系统是64位。所以,XP下使用Windows 8镜像内的工具,会有平台问题。需要对应版本的工具来解决。
5.3.1 升级的要点有2项:
1. MBR内的引导 2. 升级启动分区内的引导器bootmgr及配套BCD文件
5.3.2 需要的工具
升级MBR、升级启动器等文件及编辑BCD需要用到高版本的Windows工具,分别是:
1. bootsect.exe 2. boot目录及bootmgr文件[ii] 3. bcdedit.exe[iii]”。
由于这些工具属于NT6内核系统新增工具及文件,所以给windows XP部署基于VHD启动的Windows 8前,需要准备好以上对应平台的工具。文件位置及工具下载,笔者于文章结尾处提供。
5.3.3 工具的注意事项
所有工具中,属第二步的文件获取最是麻烦。这里笔者采取的方法是:新机无分区无引导安装基于VHD启动的Windows 8(接下来会简绍到),然后提取文件。
图为笔者提取的“基于64位企业版本Windows 8”的引导相关文件
提取后,BCD内有已安装的系统启动项及恢复休眠启动项等信息。BCD内容如下:
Windows 启动管理器
--------------------
标识符 {bootmgr} device unknown
description Windows Boot Manager
locale zh-CN
inherit {globalsettings}
default {default}
resumeobject {babb93c9-8d56-11e2-9bb0-000c29af17d0} displayorder {default}
toolsdisplayorder {memdiag}
timeout 30
Windows 启动加载器
-------------------
标识符 {default} device unknown
path \Windows\system32\winload.exe
description Windows 8
locale zh-CN
inherit {bootloadersettings}
recoverysequence {babb93cb-8d56-11e2-9bb0-000c29af17d0}
recoveryenabled Yes
custom:17000077 352321653
osdevice unknown
systemroot \Windows
resumeobject {babb93c9-8d56-11e2-9bb0-000c29af17d0} nx OptIn
custom:250000c2 1
Windows 启动加载器
-------------------
标识符 {babb93cb-8d56-11e2-9bb0-000c29af17d0}
从休眠状态恢复
---------------------
标识符 {babb93c9-8d56-11e2-9bb0-000c29af17d0} device unknown
path \Windows\system32\winresume.exe
description Windows Resume Application
locale zh-CN
inherit {resumeloadersettings}
recoverysequence {babb93cb-8d56-11e2-9bb0-000c29af17d0}
recoveryenabled Yes
custom:17000077 352321653
filedevice unknown
filepath \hiberfil.sys
custom:25000008 1
debugoptionenabled No
Windows 内存测试程序
---------------------
标识符 {memdiag} device unknown
path \boot\memtest.exe
description Windows 内存诊断
locale zh-CN
inherit {globalsettings}
badmemoryaccess Yes
EMS 设置
------------
标识符 {emssettings} bootems No
调试器设置
-----------------
标识符 {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}
设备选项
--------------
标识符 {babb93cc-8d56-11e2-9bb0-000c29af17d0} description Windows Recovery
ramdisksdidevice unknown
ramdisksdipath \Recovery\babb93cb-8d56-11e2-9bb0-000c29af17d0\boot.sdi
可以看到,对于我们给其他计算机部署基于VHD启动的windows 8来说,很多项是多余的。这里笔者对该BCD多余的项使用做出删除。修改后BCD内容如下:
Windows 启动管理器
--------------------
标识符 {bootmgr}
device unknown
description Windows Boot Manager
locale zh-CN
inherit {globalsettings}
toolsdisplayorder {memdiag}
timeout 30
Windows 内存测试程序
---------------------
标识符 {memdiag} device unknown
path \boot\memtest.exe
description Windows 内存诊断
locale zh-CN
inherit {globalsettings}
badmemoryaccess Yes
EMS 设置
------------
标识符 {emssettings} bootems No
调试器设置
-----------------
标识符 {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}
修改与未修改的BCD及配套启动文件于文章结尾处提供下载,读者可直接下载使用。本文笔者使用修改好的BCD启动项文件。演示使用虚拟机,虚拟机操作系统使用32位windows XP,硬盘分区2个。其中分区C为系统及启动分区,分区D为工具及VHD系统文件存放分区
5.3.4 MBR内的引导升级
图为使用工具bootsect。这里笔者偷懒直接使用ALL参数,使NT60的主引导信息写入本机分区及磁盘MBR。至此,MBR信息升级完毕。
5.3.5 升级启动分区内的引导器bootmgr及配套BCD文件
升级NT6信息后,系统启动将会使用bootmgr和BCD来引导操作系统的启动。我们需将启动器及配套文件存放于系统启动分区中。即分区中有NT5启动器文件ntldr的分区(如看不到ntldr,请在文件夹选项中打开显示隐藏文件及系统文件)。
1. 可以看到,笔者的虚拟机里启动分区是C。准备好的BCD等配套启动文件存放于分区D
2. 剪切或复制BCD等文件到启动分区C。至此,NT6配套BCD等文件升级完毕
3. 这里笔者使用bcdedit工具进行验证。可以看到,bcdedit已正确读取系统BCD启动项信息
5.3.6 基于VHD的windows 8部署
至此,使用NT5来部署VHD系统基本结束。剩下的内容大多为笔者上一遍文章:“思路1”里简绍的,关于BCD启动项的编辑。“思路1”地址:https://bbs.pcbeta.com/viewthread-1294200-1-1.html
1. 设置VHD启动,最后2条命令可以不用输入。IntegrityServices Enable为“整体服务启用”,nx OptIn项为“仅针对操作系统组件(包括 Windows 内核与驱动程序)启用 DEP”
对于NT5来说,系统启动是通过ntldr启动器文件来引导的。但是,ntldr并不支持VHD的启动。NT6启动可以启动VHD内系统,不过NT6不支持直接启动WindowsXP。这里笔者要在BCD内添加针对NT5引导文件ntldr的启动项,让bootmgr通过启动ntldr进而启动Windows XP。
1. 添加Windows XP启动项,使用3条命令。第一条添加一个名字叫做Windows XP的NT5引导、第二条是设置NT5的引导文件存放于分区C(即XP下ntldr所在的分区)、第三条设置ntldr的路径
至此,BCD的编辑工作基本结束,收尾完成后可重新启动计算机进入基于VHD启动的Windows 8
1. 将笔者先前创建的2个启动项(Windows 8与Windows XP)加入到系统显示列表
2. 设置Bootmgr默认启动系统为基于VHD文件启动的Windows 8,并设置显示系统列表时间15秒。
3. 重启后看到,系统成功被Bootmgr引导,并成功显示出笔者添加的2个启动项
4. 选择windows 8 VHD,成功进入到Windows 8
5. 至此,基于NT5引导的VHD启动系统(windows 8)演示完毕
注意事项:微软推荐VHD文件启动系统,VHD文件类型选用固定大小(创建后可以修改大小)。但不禁止选用扩展方式创建的VHD文件来启动系统。在笔者昨天的准备中,发现使用扩展的VHD作为Windows 8启动载体,会出现磁盘分区容量不够的提示,导致Windows 8启动失败。如下图:
如有读者碰到该问题。可以尝试更换类型为固定大小的VHD文件来解决。
5.4 无引导程序,如何启动VHD内的操作系统
相信看到这里,很多读者发现无引导部署系统本质与NT5引导部署是一样的。
部署基于VHD启动的系统,步骤不外乎下列3步:
1. 准备基于VHD的系统文件,复制到目标机器中 2. 配置升级启动文件,确保启动文件有驱动支持VHD 3. 正确配置BCD文件,确保bootmgr可以正确引导VHD内的系统启动
这几步在上一部分“5.3”的篇幅中有所简绍。企业内除了新机器,一般很少碰到无引导的计算机。这里笔者将以新的虚拟机来模拟新进计算机如何部署基于VHD启动的windows 8操作系统。为了节省时间,笔者直接在新的虚拟机里挂载已部署完毕的VHD文件,用于模拟U盘/光盘内VHD文件的复制。笔者手头PE被借走,网络状况也不理想,所以启动介质以“Windows 8企业版的光盘镜像”充当。
1. 这是部署好的Windows 8.可以看到VHD文件存放于分区D,并且,用到的一些工具与BCD的启动文件一并放入分区D
2. 这次演示中用到的虚拟机设置。其中new hard disk虚拟硬盘为上图1中虚拟机的硬盘。硬盘里存放着部署好的VHD文件、启动文件及用到的一些工具。
3. 启动机器。新虚拟机没引导,自动引导光盘启动(VM9 BIOS默认启动顺序中,光驱低于硬盘和移动设备)
4. 按下shift+F10的组合键可以调出CMD。
5. 之所以调出命令行,是要用到diskpart工具。无引导,甚至无系统分区的计算机,要部署基于VHD启动的windows 8,重要的就是磁盘有分区存放VHD文件和启动文件。并针对这个磁盘设置引导信息。这里可以看到,笔者的虚拟机有2个磁盘。60G的是新磁盘,30G的是挂载已部署好VHD文件的磁盘
6. 这几条命令笔者应该不需要解释了。执行完毕后下面返回信息已经说明命令作用
7. 这样,针对新磁盘的操作就结束了。可以看到笔者的新磁盘分为一个分区,盘符是V。挂载并存放已准备好VHD文件的磁盘分区盘符为C。
8. 进入分区C,可以看到分区C的文件如上图。准备给新分区V配置升级启动文件,确保启动文件有驱动支持VHD
9. 复制BCD等文件到V盘
10. 进入V盘检查复制情况,可以看到bootmgr等启动文件准备就绪
11. 将准备好基于VHD启动的系统文件win8pro.vhd,复制到目标机器分区V:中
字数限制问题,剩下内容发到2L
|