AndroidOL 发表于 2015-2-11 00:12:05

【待编辑】UEFI + GPT 引导下加载 VHD/VHDX 安装 Windows

本帖最后由 AndroidOL 于 2015-2-11 00:37 编辑


  前言:  最近几天由于工作关系需要装几个软件,但就用几天,虽然可以卸载但是软件本身的行为比较流氓。于是在网上搜索解决方案,找到的除了沙盒、虚拟机之外就是 VHD 了。第一次接触这个东西不会玩,特别感谢 lianjiang 大大的 OneKey 工具,但由于计算机是 UEFI,重启后黑屏有鼠标,搜索得到是 BCD 的引导应该是 winload.efi 而不是 winload.exe。
  今天研究了一天总算可以独立完成不依靠其他工具了,给各位参考下所有步骤,当然为了方便起见还是用了 ImageX 组件,如果各位对 DISM 熟悉的话可以用这个代替。

图片版本(论坛限制所以分卷了,也有百度盘,文件一样):

[*]
[*]
[*]
[*]百度盘:http://pan.baidu.com/s/1kTKdnmB

本文所有提到的工具有:

[*]diskpart.exe 或 mmc.exe
  文件位置:C:\Windows\System32\diskpart.exe
  文件位置:C:\Windows\System32\mmc.exe
[*]cmd.exe
  文件位置:C:\Windows\System32\cmd.exe
[*]ImageX.exe 或 GImageX.exe
  ImageX.exe 下载地址:http://www.microsoft.com/en-US/download/details.aspx?id=39982
    【数字签名:有 | SHA】发行商:Microsoft Corporation
  GImageX.exe 下载地址:https://www.autoitscript.com/site/autoit-tools/gimagex/
    【数字签名:有 | SHA】发行商:AutoIt Consulting Ltd
[*]BCDEdit.exe
  文件位置:C:\Windows\System32\BCDEdit.exe
[*]shutdown.exe
  文件位置:C:\Windows\System32\shutdown.exe


XML 描述文档,所有命令均需管理员权限:
<root>
  // 第一部分
  <part index="1" method="1" tool="diskpart.exe">
  // 方式一:通过 diskpart.exe 进行命令行方式的 VHD/VHDX 虚拟磁盘创建
    <step do="0" command="diskpart.exe" />
    <step do="1" command="create vdisk file=D:\tempVHDX.vhdx maximun=1024000 type=expandable" />
    // 创建自动增长上限容量为 1TB 且文件名为 D:\tempVHDX.vhdx 的 VHDX 文件,基本指令如下:
    // create vdisk file="VHD/VHDX 文件路径" maximun=磁盘容量 (MB) type=增长方式 (expandable | fixed)
    <step do="2" command="select vdisk file=D:\tempVHDX.vhdx" />
    // 选择 VHD/VHDX 文件于 D:\tempVHDX.vhdx,基本指令如下:
    // select vdisk file="VHD/VHDX 文件路径"
    <step do="3" command="attach vdisk" />
    // 挂载已选择的 VHD/VHDX 文件
    <step do="4" command="list disk" />
    // 列出所有存在磁盘信息
    <step do="5" command="select disk 0" />
    // 选择需要进行操作的磁盘序号,基本指令如下:
    // select disk 磁盘序号
    <step do="6" command="clean" />
    // 清除分区信息,用于转换为 GPT 分区
    <step do="7" command="convert gpt" />
    // 执行转换命令
    <step do="8" command="create partition primary" />
    // 创建并指定所有空间为主分区
    <step do="9" command="format fs=ntfs quick" />
    // 快速格式化分区为 NTFS 文件系统
    <step do="10" command="assign letter=V" />
    // 指派该分区盘符为 V,基本指令如下:
    // assign letter=分区盘符
  </part>
  ###
  <part index="1" method="2" tool="mmc.exe">
  // 方式二:通过 mmc.exe 进行命令行方式的 VHD/VHDX 虚拟磁盘创建
    <step do="1" command="Disk Management" />
    <step do="2" command="More Actions -> Create VHD" />
    <step do="3" command="Location=D:\tempVHDX.vhdx" />
    <step do="4" command="Virtual hard disk size=1 (TB)" />
    <step do="5" command="Virtual hard disk format=VHDX" />
    <step do="6" command="OK -> GPT -> OK" />
    <step do="7" command="New Sample Volume" />
    <step do="8" command="Next -> Next -> V -> Next -> Finsh" />
  </part>
### ### ### ### ### ### ### ###
  // 第二部分
  <part index="2" method="1" tool="ImageX.exe">
  // 方式一:通过 ImageX.exe 释放 WIM 指 VHD/VHDX 中
    <step do="1" command="ImageX.exe /apply D:\sources\install.wim V:" />
    // 基本指令:ImageX.exe /apply install.wim 目录
  </part>
  ###
  <part index="2" method="2" tool="GImageX.exe">
  // 方式二:通过 GImageX.exe 释放 WIM 指 VHD/VHDX 中
    <step do="1" command="Apply" />
    <step do="2" command="Source=D:\sources\install.wim" />
    <step do="3" command="Destination=V:\" />
    <step do="4" command="Apply" />
  </part>
### ### ### ### ### ### ### ###
  // 第三部分
  <part index="3" method="0" tool="BCDEdit.exe">
    <step do="1" command="BCDEdit.exe /copy {current} /d "Windows Technical Preview from VHD"" />
    // 基本指令:BCDEdit.exe /copy {current} /d "系统启动项名称"
    <step do="2" command="BCDEdit.exe /set {<GUID>} device vhd=\tempVHDX.vhdx" />
    // 基本指令:BCDEdit.exe /set {<GUID>} device vhd=[分区:]"VHD/VHDX 文件路径"
    <step do="3" command="BCDEdit.exe /set {<GUID>} osdevice vhd=\tempVHDX.vhdx" />
    // 基本指令:BCDEdit.exe /set {<GUID>} osdevice vhd=[分区:]"VHD/VHDX 文件路径"
    <step do="4" command="BCDEdit.exe /set {<GUID>} detecthal on" />
    // 基本指令:BCDEdit.exe /set {<GUID>} detecthal on
    <step do="5" command="BCDEdit.exe /set {<GUID>} path \Windows\System32\winload.efi" />
  </part>
### ### ### ### ### ### ### ###
  // 第四部分
  <part index="4" method="0" tool="shutdown.exe">
    <step do="1" command="shutdown.exe -r -t 0" />
  </part>
</root>

2011xiongdeyuan 发表于 2015-2-11 08:23:07

谢谢分享啊

hai2002713 发表于 2015-2-11 11:16:20

AndroidOL 发表于 2015-2-11 16:11:47

hai2002713 发表于 2015-2-11 11:16
晕,看不太懂。。

现在人们都喜欢各种一键工具,我还是习惯这样一步一步的命令行。

szy106 发表于 2015-2-13 14:27:09

等待编辑完成,学习学习

kfkhfj 发表于 2015-3-2 15:08:39

做个记号,等待编辑完成

2011xiongdeyuan 发表于 2015-3-2 18:49:11

不错,谢谢分享

netfood 发表于 2015-3-11 17:37:02

本帖最后由 netfood 于 2015-3-11 17:42 编辑

麻烦把 ImageX.exe GImageX.exe 也放网盘上一份吧

GaoShS 发表于 2015-3-23 02:26:15

楼主能详细说明一下bcdedit.exe的用法吗?

秋月云开 发表于 2015-4-5 21:41:44

谢谢分享

lm0006 发表于 2015-4-6 09:41:35

本帖最后由 lm0006 于 2015-4-6 09:42 编辑

请问怎么用命令添加快速还原差分呢
建立开机快速还原选项菜单
在UEFI GPT环境下

2010sya 发表于 2015-4-12 22:12:14

不错,好好学一下

2010qq49925514 发表于 2015-4-23 21:37:52

要鱼肉

zhangbinlei 发表于 2015-4-26 21:04:55

学习了

sickon 发表于 2015-4-27 21:42:54

不知道在预装win8的gpt环境下的电脑能否通过vhd来安装ghost系统   
昨晚测试了下 biosmbr模式下随意在vhd上安装ghost系统

sickon 发表于 2015-5-7 17:26:23

我想问楼主你这个办法如果是预装了win8的电脑安装64位的win7行的通么 ?
我之前也是用vhd安装过原版的74位win7结果提示啥没验证   需要改BIOS
如果不改BIOS的前提下是否行得通 ?

zodok 发表于 2015-5-11 02:13:50

执行第三步
BCDEdit.exe /set {<GUID>} device vhd=\tempVHDX.vhdx
提示系统找不到指定文件

极地枫 发表于 2015-11-16 15:05:22

好复杂啊,有没有简单一点的呀!

lzy157 发表于 2020-4-21 15:24:10

谢谢分享。                     

audny2002 发表于 2020-4-26 06:48:03

谢谢分享

wilot 发表于 2020-12-31 08:03:48

学习一下

wangziqiang 发表于 2020-12-31 12:38:47

进阶了,楼主辛苦了
页: [1]
查看完整版本: 【待编辑】UEFI + GPT 引导下加载 VHD/VHDX 安装 Windows